The Taub Faculty of Computer Science Events and Talks
Jennifer Sartor (Ghent University)
Monday, 24.06.2013, 11:30
Analyzing multi-threaded program scalability and performance on modern multicore machines is challenging, but paramount to continue optimizing software and to use hardware resources efficiently. Synchronization between threads results in some threads running while others wait on locks and barriers. We create a new metric, the criticality metric, to judge each thread's contribution to program execution time based on synchronization. The criticality metric takes into account how much time a thread is running and how many co-running threads exist. We use this metric to create two new multi-threaded program performance visualization tools. First, we propose small hardware extensions to measure our criticality metric with low overhead while a program is running, using these statistics to create criticality stacks that show each thread's criticality, revealing parallel imbalances. I will then detail how our ISCA paper shows how we applied this program analysis tool to optimize software, improve performance using frequency scaling in hardware, and save energy.
I will then give a preview of our new work (to be presented at OOPSLA) that measures this metric entirely in software, piggy-backing on the operating system. We create our second powerful multi-threaded analysis tool, bottle graphs, which present a box for each thread showing its average parallelism (width), and its share of total program execution time (height). We stack each thread's box, that has area equal to the thread's total running time, on top of each other, leading to a bottle graph with height equal to the total program execution time. The graph points out the most fruitful avenues for optimization, leading software developers to the threads with low parallelism (narrow) and a large share of the total execution time (tall) - i.e. to the neck of the bottle graph. I will show the bottle graphs of several Java benchmarks running on top of Jikes RVM on real hardware, which reveal scalability bottlenecks of both the benchmarks and the JVM service threads.
Jennifer Sartor is a post-doctoral researcher at Ghent University in Belgium in the Electronics and Information Systems department. Her research focuses on analyzing and optimizing the performance of managed language applications on modern computer systems. In particular, she optimizes memory efficiency, particularly memory layout with an automatic memory manager, also cooperating to obtain good cache behavior. She is particularly interested in software-hardware co-design where the managed runtime can send hints about program behavior down to hardware to obtain faster execution time or faster memory access. She obtained her PhD in Computer Science from The University of Texas at Austin in 2010.