[RFR] 8043766: CMM Testing: 8u40 Decommit auxiliary data structures

Thomas Schatzl thomas.schatzl at oracle.com
Fri Sep 26 10:47:36 UTC 2014


Hi,

On Fri, 2014-09-26 at 14:33 +0400, Andrey Zakharov wrote:
> On 26.09.2014 13:46, Thomas Schatzl wrote:
> > Hi Andrey,
> >
> > On Thu, 2014-09-25 at 20:28 +0400, Andrey Zakharov wrote:
> >> BTW, tested in aurora with latest jdk 8 updates
> >> 593423.ute.hs_jtreg.accept.full
> > Some questions:
> >
> > - the different tests seem to be only different in the number of
> > iterations the allocate/link/mutate/deallocate cycle runs. They all use
> > the same G1ConcRSLogCacheSize, but vary object alignment.
> Different tests initiates Base class with different cache size number
>      protected TestShrinkAuxiliaryData(int RSetCacheSize) {
>          this.RSetCacheSize = RSetCacheSize;
>      }
> 
> which then goes to:
> vmOpts.add("-XX:G1ConcRSLogCacheSize=" + RSetCacheSize);
> 
> So tests runs with different options G1ConcRSLogCacheSize and 
> ObjectAlignmentInBytes for non-32 bits systems

Okay, I got it now how the tests work. Thanks.

> > G1ConcRSLogCacheSize of 10 does not require that much memory (and in
> > fact is default) so that you need to worry about its maximum size.
> I'm worried about 2^23 - 2^30 caches size which can brings massive 
> swapping and timeouts of tests

Then I suggest just removing the ...Data25/Data30, even ...Data20,
tests. There is not much difference in behavior from a GC point of view
between these heap sizes. The values are simply used to size that data
structure.

> > - fixing G1ConcRSLogCacheSize would also remove the need to calculate
> > some maximum value for G1ConcRSLogCacheSize. GetMaxCacheSize()
> > calculates the maximum G1ConcRSLogCacheSize based on the free java heap.
> > However, the data structure is allocated on the C heap, there is no real
> > connection between free java heap and free C heap anyway.
> Could please, suggest something here?
> I'm just judging about available memory by available heap memory.
> Thanks.

Available Java heap memory (Runtime.freeMemory() returns the available
memory on the Java heap), not available C heap memory. One has no direct
connection to the other.

By simply removing the tests with the large G1ConcRSLogCacheSize values,
which imo do not add a lot, you do not need such a contrived check.

Thanks,
  Thomas





More information about the hotspot-gc-dev mailing list