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