hotspot-gc-dev Digest, Vol 56, Issue 25
Alexey Ragozin
alexey.ragozin at gmail.com
Tue Mar 6 11:56:16 UTC 2012
Hi,
On my test system, benefit from patch on 4GiB heap on CMS + ParNew was
just about 5ms (64 bit JVM though).
On the other side on smaller heap - greater density of dirty card. It
is possible that testing 4 cards instead of 8 is better for smaller
heaps.
Anyway, I'm pretty happy with GC times for 32 bit heaps :)
Regards,
Alexey
> Date: Mon, 27 Feb 2012 10:41:17 -0800
> From: Jon Masamitsu <jon.masamitsu at oracle.com>
> Subject: Re: Fwd: (resend) Request for review (S): 7068625 Testing 8
> bytes of card table entries at a time speeds up card-scanning
> To: hotspot-gc-dev at openjdk.java.net
> Message-ID: <4F4BCE4D.4030902 at oracle.com>
> Content-Type: text/plain; charset="utf-8"
>
> Alexey,
>
> A factor of 2 improvement on large heaps is impressive but something
> more modest on small heaps would be welcome and I wondered whether
> it was worth trying to do 8 bytes rows on a 32 bit system. The current
> implementation does 4 bytes rows on a 32 bit system, correct?
>
> Jon
>
> On 02/27/12 07:31, Alexey Ragozin wrote:
>> Hi Jon,
>>
>> Bengt has ran patch trough JPRT, so it should cover 32 bit systems. I
>> havn't done any specific testing to 32 system.
>> Reason is that for small heaps, dirty cards are more dense and
>> scanning heap is taking order of magnitude more time than card table
>> scanning.
>>
>> Practical impact of patch is starting to show up with heaps around
>> 8GiB (30GiB was upper limit for my research) thus making 32 bit JVM
>> not very interesting.
>>
>> Regards,
>> Alexey
>>
>>
>> From: Jon Masamitsu <jon.masamitsu at oracle.com
>> <mailto:jon.masamitsu at oracle.com>>
>> Subject: Re: Fwd: (resend) Request for review (S): 7068625 Testing 8
>> bytes of card table entries at a time speeds up card-scanning
>> To: hotspot-gc-dev at openjdk.java.net
>> <mailto:hotspot-gc-dev at openjdk.java.net>
>> Message-ID: <4F47E7B7.6090407 at oracle.com
>> <mailto:4F47E7B7.6090407 at oracle.com>>
>> Content-Type: text/plain; charset=UTF-8; format=flowed
>>
>> Alexey,
>>
>> Change looks good.
>>
>> Did you run the tests on 32bit and smaller heaps (~4G)?
>> That would give you 4byte rows (instead of 8byte rows),
>> right?
>>
>> Jon
>>
>> On 2/24/2012 4:14 AM, Bengt Rutisson wrote:
>> >
>> > Hi all,
>> >
>> > Just pinging this review request. Does anybody have some time to look
>> > at it? It is a fairly small and straight forward change...
>> >
>> > Thanks,
>> > Bengt
>> >
>> > -------- Original Message --------
>> > Subject: Request for review (S): 7068625 Testing 8 bytes of card
>> > table entries at a time speeds up card-scanning
>> > Date: Tue, 21 Feb 2012 12:03:50 +0400
>> > From: Alexey Ragozin <alexey.ragozin at gmail.com
>> <mailto:alexey.ragozin at gmail.com>>
>> > To: hotspot-gc-dev at openjdk.java.net
>> <mailto:hotspot-gc-dev at openjdk.java.net>
>> > CC: Bengt Rutisson <bengt.rutisson at oracle.com
>> <mailto:bengt.rutisson at oracle.com>>
>> >
>> >
>> >
>> > 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/
>> <http://cr.openjdk.java.net/%7Ebrutisso/7068625/webrev.00/>
>> > <http://cr.openjdk.java.net/%7Ebrutisso/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
>> >
>> >
More information about the hotspot-gc-dev
mailing list