Profiling and tuning the performance of an STM-based concurrent program

Over the last years, multicores have become accessible to the common developer but writing concurrent programs that are correct and that display good performance still is a hard task. Software Transactional Memory (STM) is a step in the direction of solving the first problem, but it does not provide tools for the programmer to understand and optimize his code's performance, thus leaving the second problem as an open issue. In this paper, we present a novel technique that informs the developer about which objects cause JVSTM transactions to conflict. Then, we describe how we used that technique together with several JVSTM conflict reduction techniques to improve the performance of a transactional application.