RFR 8204947: Port ShenandoahTaskTerminator to mainline and make it default
Zhengyu Gu
zgu at redhat.com
Wed Nov 28 19:08:03 UTC 2018
Hi,
ShenandoahTaskTerminator is based on Google's work stealing protocol,
described in paper [1]. The implementation diverges in a way to
emphasize termination latency vs. power efficiency (see comments in code
for details).
Shenandoah switched to ShenandoahTaskTerminator as default terminator,
shortly after it was implemented, and has been very stable since.
On performance side, it showed better termination latency on almost all
tests/benchmarks I ran, comparing to ParallelTaskTerminator. As the
result, we (Shenandoah) purged fallback branches and uses it as the sole
task terminator.
This patch introduces a new experimental flag "UseOWSTTaskTerminator"
(default: true), and switches G1 and Parallel GC to use it as default
terminator. You can switch back to ParallelTaskTerminator with JVM
option "-XX:+UnlockExperimentalVMOptions -XX:-UseOWSTTaskTerminator"
I did not port it to CMS, as it is depreciated.
Bug: https://bugs.openjdk.java.net/browse/JDK-8204947
Webrev: http://cr.openjdk.java.net/~zgu/JDK-8204947/webrev.00/
Test:
hotspot_gc and vmTestbase_vm_gc on Linux 64.
[1] Understanding and improving JVM GC work stealing at the data center
scale (http://dl.acm.org/citation.cfm?id=2926706)
Thanks,
-Zhengyu
More information about the hotspot-gc-dev
mailing list