[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