Request for review (S): 7068625 Testing 8 bytes of card table entries at a time speeds up card-scanning

Alexey Ragozin alexey.ragozin at gmail.com
Tue Feb 21 00:03:50 PST 2012


Hi,

I would like few volunteers to review changes for
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7068625
WebRev: http://cr.openjdk.java.net/~brutisso/7068625/webrev.00/

Change summary
For large heaps (I was focusing on 8GiB and above) it is common to have
long continuous ranges of clean cards.
Patch is introducing a short path for skipping ranges of clean cards using
word aligned memory access instead of byte aligned.

Patch affects serial and CMS collectors. For CMS collector stride size
should be increase to see any performance gains (I was using
-XX:+UnlockDiagnosticVMOptions
-XX:ParGCCardsPerStrideChunk=4096)

For testing I was mainly using synthetic benchmark randomly modifying hash
tables in heap, thus uniformly touching cards across heaps.
Average duration of young GC pause were used as KPI.
More details about testing can be found at
http://blog.ragozin.info/2011/07/openjdk-patch-cutting-down-gc-pause.html
Though article is referring jdk6, my resent tests with trunk jdk7 show no
difference.
I was also tested patch with real application (Oracle Coherence storage
node).
With 16GiB of heap and CMS/ParNew GC, enabling patch have shortened GC
pauses roughly in 2 times.

Source code of benchmark used in test are available at
https://gridkit.googlecode.com/svn/branches/aragozin-sandbox/young-gc-bench
Main class YoungGCPauseBenchmark

Regards,
Alexey
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20120221/bb726108/attachment.html 


More information about the hotspot-gc-dev mailing list