Stop and go: understanding yieldpoint behavior

Yi Lin, Kunshan Wang, Stephen M. Blackburn, Antony L. Hosking, Michael Norrish
2015 Proceedings of the 2015 ACM SIGPLAN International Symposium on Memory Management - ISMM 2015  
Yieldpoints are critical to the implementation of high performance garbage collected languages, yet the design space is not well understood. Yieldpoints allow a running program to be interrupted at well-defined points in its execution, facilitating exact garbage collection, biased locking, on-stack replacement, profiling, and other important virtual machine behaviors. In this paper we identify and evaluate yieldpoint design choices, including previously undocumented designs and optimizations.
more » ... e of the designs we identify opens new opportunities for very low overhead profiling. We measure the frequency with which yieldpoints are executed and establish a methodology for evaluating the common case execution time overhead. We also measure the median and worst case time-to-yield. We find that Java benchmarks execute about 100 M yieldpoints per second, of which about 1/20 000 are taken. The average execution time overhead for untaken yieldpoints on the VM we use ranges from 2.5 % to close to zero on modern hardware, depending on the design, and we find that the designs trade off total overhead with worst case time-to-yield. This analysis gives new insight into a critical but overlooked aspect of garbage collector implementation, and identifies a new optimization and new opportunities for very low overhead profiling.
doi:10.1145/2754169.2754187 dblp:conf/iwmm/LinWBHN15 fatcat:wi5ery4yibfozj23gi3xifdplq