The growing scale of available commercial multicore systems has increased the need for concurrent programming, because these systems expose hardware parallelism to the programmer that must be explicitly managed in software. Commercial software developers that are traditionally skilled in sequential programming are now forced to reason about concurrency to exploit multicore parallelism. More than ever, this new group of concurrent programmers has to rely on performance tools for help. This paper introduces a new tool called THOR, which addresses the complexities introduced by multicore parallelism by organizing views in terms of Java® threads and using vertical profiling techniques to understand the state of a Java thread at all layers of the execution stack. Data collection supports visualization by tagging each trace event with a corresponding thread identifier and with a time-stamp from the machine's high-resolution timer. By exhaustively tracing fine-grain events, such as operating system context switches and Java lock contention, data collection allows a user to utilize visualization to reconstruct the precise behavior of his application. In this paper, we present the details of the THOR architecture and design. THOR is currently available from IBM alphaWorks®*Trademark, service mark, or registered trademark of International Business Corporation in the United States, other countries, or both. as part of the multicore software development kit.
Note: The Institute of Electrical and Electronics Engineers, Incorporated is distributing this Article with permission of the International Business Machines Corporation (IBM) who is the exclusive owner. The recipient of this Article may not assign, sublicense, lease, rent or otherwise transfer, reproduce, prepare derivative works, publicly display or perform, or distribute the Article.