RFR(S): 7189971: Implement CMSWaitDuration for non-incremental mode of CMS

Jon Masamitsu jon.masamitsu at oracle.com
Thu Nov 1 19:20:38 UTC 2012


http://cr.openjdk.java.net/~johnc/7189971/webrev.0/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepThread.cpp.frames.html

  327   double start_time = os::elapsedTime();
  328   double end_time = start_time + (t_millis / 1000.0);


Can these names be changes to start_time_secs and end_time_secs or
something like that.  That would remind people that the assumption is
that os::elapsedTime() is returning seconds and, if a change to
call something else is needed, that it should return seconds or
changed to seconds.

Also the 1000.0 should be changes to something like
MILLISECS_PER_SEC.  There isn't such a constant yet but
globalDefinitions.hpp has

const jlong NANOSECS_PER_SEC      = CONST64(1000000000);
const jint  NANOSECS_PER_MILLISEC = 1000000;

so adding one would fit.

Is this really a modification that should be made in sleepBeforeNextCycle()?
It seems like the benefit is that the initial mark be started (possibly) 
soon
after a young collection so this change should go into
checkpointRootsInitial()?

  354       clear_CMS_flag(CMS_cms_wants_token);
  355       assert(!CMS_flag_is_set(CMS_cms_has_token | CMS_cms_wants_token),
  356              "Should not be set");

Should the CMS_flag be set to CMS_cms_has_token after 356?  Maybe if this
code was implemented in checkpointRootsInitial() it would not have to
worry about the token.

Can you substitute "!_should_terminate" for "true" here?

  337   while (true) {



Can you add a 32 bit counter inside the loop and if the
counter ever overflows, print out a warning message?
It really should never happen but the warning message
makes it easier to  diagnose in the field.   And you can
ignore this if I'm being paranoid.

Jon



On 10/29/12 09:37, John Cuthbertson wrote:
> Hi Everyone,
>
> Can I have a couple of volunteers review this change that was 
> submitted by Michal Frajt? The webrev can be found at: 
> http://cr.openjdk.java.net/~johnc/7189971/webrev.0/
>
> In the original patch, Michal was returning (if the CMS thread was 
> terminating or if a foreground collection was scheduled) after setting 
> the CMS flag. Michal incorporated my suggestion to change that and 
> return before setting the CMS flag.
>
> I'm not an expert in the inner workings of CMS so I'd appreciate 
> further reviews from those more familiar with  CMS' operation.
>
> Testing:
> Functional testing was performed using the GC test suite in both 
> incremental and non-incremental modes with various values of 
> CMSWaitDuration and checking the log files.  Additional tests: nsk, jprt.
>
> Thanks,
>
> JohnC



More information about the hotspot-gc-dev mailing list