Iceberg: A Dynamic Analysis of Java Critical Sections Investigating Runtime Performance Variability
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 JulDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
| 11:00 - 12:30 | |||
| 11:0010m Day opening | Opening SOAP | ||
| 11:1050m Talk | NJR: A Normalized Java Resource SOAPLink to publication DOI Pre-print | ||
| 12:0015m Talk | Systematic Evaluation of the Unsoundness of Call Graph Construction Algorithms for Java SOAP Michael Reif TU Darmstadt, Germany, Florian Kübler TU Darmstadt, Germany, Michael Eichberg TU Darmstadt, Germany, Mira Mezini TU DarmstadtLink to publication DOI Pre-print Media Attached | ||
| 12:1515m Talk | Iceberg: A Dynamic Analysis of Java Critical Sections Investigating Runtime Performance Variability SOAPLink to publication DOI Pre-print | ||
