Blogs (61) >>
Fri 20 Jul 2018 12:15 - 12:30 at Hamburg - Java

Writing multi-threaded code for both correctness and performance is difficult. Often programmers strive for correctness, which may lead to an overly conservative use of synchronization primitives. Even when correct, however, synchronized regions of code (called critical sections) may introduce performance variability which cause unexpected software hangs which can be considered a performance bug. These performance bugs are occasional, hard to predict, and may negatively impact the overall user experience.

In this paper we present a tool called Iceberg for performing a dynamic analysis of Java programs to gather information about the variability of the performance of critical sections in code. We have calibrated our tool against a suite of microbenchmarks to find what variability within critical sections may look like and then tested with three real world programs.

Our results document several cases where we can find where variability occurs and may yield software hangs in critical section performance.

Fri 20 Jul

Displayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change