RFR: Lazy parallel code cache iterator

Aleksey Shipilev shade at redhat.com
Tue May 23 09:06:32 UTC 2017


Hi,

The last time we improved code cache iterator with more parallelism, and it
improved the pause times. However, we had to do the eager preparation stage in
its constructor, which means we scan code cache during ShenandoahRP
construction, even if we skip code cache iteration later! Which means we have
redundant work during Init Mark and Final Update-Refs pauses.

The fix is to redo the iterator to be lazy again, while maintaining parallelism:
  http://cr.openjdk.java.net/~shade/shenandoah/codecache-lazyparallel/webrev.01/

Before/after on SPECjbb:
 http://cr.openjdk.java.net/~shade/shenandoah/codecache-lazyparallel/baseline.log
 http://cr.openjdk.java.net/~shade/shenandoah/codecache-lazyparallel/patched.log

Saves 3..8 ms per pause!

Testing: hotspot_gc_shenandoah, jcstress/fastdebug/aggressive

-Aleksey



More information about the shenandoah-dev mailing list