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:00 10mDay opening | Opening SOAP | ||
11:10 50mTalk | NJR: A Normalized Java Resource SOAP Link to publication DOI Pre-print | ||
12:00 15mTalk | 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 Darmstadt Link to publication DOI Pre-print Media Attached | ||
12:15 15mTalk | Iceberg: A Dynamic Analysis of Java Critical Sections Investigating Runtime Performance Variability SOAP Link to publication DOI Pre-print |