Incremental CMS: long "[GC [1 CMS-initial-mark:"

Andrei Pozolotin andrei.pozolotin at gmail.com
Wed Feb 17 14:57:58 PST 2010


    Ramki, hi

    Thank you for quick response;

    from reading JDK 6 source I deluded myself that the problem you
    describe:

    "... occurs sometime between two scavenges ..."

    would get fixed by these options:

    wrapper.java.additional.175=-XX:+CMSParallelRemarkEnabled
    wrapper.java.additional.176=-XX:+CMSScavengeBeforeRemark
    wrapper.java.additional.177=-XX:CMSIncrementalOffset=10
    wrapper.java.additional.178=-XX:CMSScheduleRemarkEdenPenetration=5

    please confirm I was wrong?

    Cheers,

    Andrei



-------- Original Message  --------
Subject: Re: Incremental CMS: long  "[GC [1 CMS-initial-mark:"
From: Y. Srinivas Ramakrishna <Y.S.Ramakrishna at Sun.COM>
To: Andrei Pozolotin <andrei.pozolotin at gmail.com>
Cc: hotspot-gc-use at openjdk.java.net
Date: Wed 17 Feb 2010 04:42:34 PM CST
> On 02/17/10 14:28, Andrei Pozolotin wrote:
>>       *Jon, *hello;
>>
>>     I need to convert CMS into incremental CMS to reduce latency,
>>     eliminate occasional "concurrent mode failure" - related pauses;
>>
>>     and I am running into the following problem:
>>
>>     1) in "normal CMS" - [GC [1 CMS-initial-mark: takes 50 milliseconds
>>
>>     2) in "incremental CMS" - [GC [1 CMS-initial-mark:  takes 800
>>     milliseconds
>
> This is to be expected and is a consequence of how and when
> the initial mark is done in "normal" vs "incremental".
> In the former, the initial mark almost immediately follows
> after a scavenge pause and Eden is empty. In the latter case
> it normally occurs sometime between two scavenges by which time
> Eden has objects in it. For various reasons, the young gen
> is scanned as a source of initial roots to mark from,
> and for various reasons it is currently the case that this
> work is done single-threaded.
>
> As you will find, the magnitude of this difference typically
> depends (among other factors) on the size of Eden you specify
> (being directly proportional to it) and the duty cycle you
> specify (being inversely proportional to it).
>
> There are ways to fix this in the JVM, but no real workaround that
> i can think of at the command-line level.
>
> If this is important, please file a bug on this via your
> support contacts.
>
> thanks!
> -- ramki
>
>>
>>     both above results are under same no-load conditions,
>>     with non-reducible statuc heap object set of 430 MB
>>     composed of some 350K complex objects;
>>
>>     I can not understand why and how to fix it;
>>     I tried a lot of Incremental CMS - related option combinations,
>>     still dead end.
>>
>>     GC settings, log attached;
>>
>>     Thank you for your help,
>>
>>     Andrei
>>
>>     ++++++++++++++++++++++++++++++++++++++++++++++++
>>
>>     # use server-style JIT compiler
>>     wrapper.java.additional.100=-server
>>
>>     # do GC logging
>>     wrapper.java.additional.110=-verbose:gc
>>     wrapper.java.additional.111=-Xloggc:./logs/gc.log
>>     wrapper.java.additional.112=-XX:+PrintGCDetails
>>     wrapper.java.additional.113=-XX:+PrintGCTimeStamps
>>
>>     # Heap Total = PermGen + NewGen + OldGen;
>>     wrapper.java.additional.120=-Xms3700m
>>     wrapper.java.additional.121=-Xmx3700m
>>
>>     # PermGen;
>>     wrapper.java.additional.130=-XX:PermSize=50m
>>     wrapper.java.additional.131=-XX:MaxPermSize=50m
>>
>>     # NewGen; Parallel collector;
>>     wrapper.java.additional.140=-XX:NewSize=1200m
>>     wrapper.java.additional.141=-XX:MaxNewSize=1200m
>>     wrapper.java.additional.142=-XX:-UseAdaptiveSizePolicy
>>     wrapper.java.additional.143=-XX:SurvivorRatio=1
>>     wrapper.java.additional.144=-XX:TargetSurvivorRatio=90
>>     wrapper.java.additional.145=-XX:MaxTenuringThreshold=3
>>     wrapper.java.additional.146=-XX:+UseParNewGC
>>     wrapper.java.additional.147=-XX:-UseParallelGC
>>     wrapper.java.additional.148=-XX:ParallelGCThreads=4
>>
>>     # OldGen; Incremental CMS collector;
>>     wrapper.java.additional.170=-XX:-UseParallelOldGC
>>     wrapper.java.additional.171=-XX:+UseConcMarkSweepGC
>>     wrapper.java.additional.172=-XX:+CMSIncrementalMode
>>     wrapper.java.additional.173=-XX:-CMSIncrementalPacing
>>     wrapper.java.additional.174=-XX:CMSIncrementalDutyCycle=1
>>     wrapper.java.additional.175=-XX:+CMSParallelRemarkEnabled
>>     wrapper.java.additional.176=-XX:+CMSScavengeBeforeRemark
>>     wrapper.java.additional.177=-XX:CMSIncrementalOffset=10
>>     wrapper.java.additional.178=-XX:CMSScheduleRemarkEdenPenetration=5
>>     wrapper.java.additional.179=-XX:CMSWaitDuration=60000
>>     wrapper.java.additional.181=-XX:ParallelCMSThreads=1
>>     wrapper.java.additional.182=-XX:PrintCMSStatistics=0
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> hotspot-gc-use mailing list
>> hotspot-gc-use at openjdk.java.net
>> http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-gc-use/attachments/20100217/2a6e3c0f/attachment.html 


More information about the hotspot-gc-use mailing list