FastSyncRoots and monitor deflation question
    Roman Kennke 
    rkennke at redhat.com
       
    Thu Sep 13 22:06:12 UTC 2018
    
    
  
I just checked some code around monitor handling in Shenandoah.
I see this looks odd:
    if (ShenandoahFastSyncRoots && MonitorInUseLists) {
      if
(_process_strong_tasks->try_claim_task(SHENANDOAH_RP_PS_ObjectSynchronizer_oops_do))
{
        ObjectSynchronizer::oops_do(strong_roots);
      }
    } else {
      while(_om_iterator.parallel_oops_do(strong_roots));
    }
ShenandoahFastSyncRoot is true by default, but it turns on the
*single-threaded* path? Is that intentional? If this is really better
than the parallel stuff, then maybe remove the parallel stuff?
I also see this stuff:
  experimental(bool, ShenandoahMergeSafepointCleanup, false,
   \
              "Do safepoint cleanup piggy-backed on thread scans")
   \
   \
  experimental(uint, ParallelSafepointCleanupThreads, 0,
   \
          "Number of parallel threads used for safepoint cleanup")
   \
   \
I.e. our improvements (if they are) to safepoint cleanup are turned off
by default, and thus probably totally untested. Do we know if it
actually helps? Would it be worth turning on by default so that it gets
testing? Otherwise remove/revert the corresponding code changes and
wait/work-on concurrent monitor deflation?
Roman
    
    
More information about the shenandoah-dev
mailing list