RFR: 8166790: Add stress test GCBasher

Erik Helin erik.helin at oracle.com
Thu Sep 29 09:52:28 UTC 2016


On 2016-09-29, David Holmes wrote:
> 
> 
> On 29/09/2016 5:52 PM, Erik Helin wrote:
> >On 2016-09-29, David Holmes wrote:
> >>Hi Erik,
> >
> >Hi David, thanks for reviewing!
> >
> >>On 29/09/2016 1:01 AM, Erik Helin wrote:
> >>>Hi all,
> >>>
> >>>this patch adds a new GC stress test called GCBasher. GCBasher builds up
> >>>large (well, for some definiton of large) object graphs by figuring out
> >>>the relations between classes in the JDK. The test usually stresses the
> >>>GC quite a lot, especially when run with a smaller heap.
> >>>
> >>>The changes in the top-level repository are for JPRT. JPRT will now run
> >>>the jtreg test GCBasher instead of the old version.
> >>>
> >>>Enhancement:
> >>>https://bugs.openjdk.java.net/browse/JDK-8166790
> >>>
> >>>Webrev:
> >>>- hotspot: http://cr.openjdk.java.net/~ehelin/8166790/hotspot/00/
> >>
> >>Can't comment on actual test but placement etc looks fine.
> >
> >Thanks!
> >
> >>One query:
> >>
> >>test/gc/stress/gcbasher/TestGCBasher.java
> >>
> >>You are running with -server explicitly. Should you not also have @requires
> >>vm == server (or whatever the syntax is) as well?
> >
> >Yes, thanks, I will add that before I push.
> >
> >>>- top: http://cr.openjdk.java.net/~ehelin/8166790/top/00/
> >>
> >>Nit: The new end lines like:
> >>
> >> 337     solaris_sparcv9_5.11-product-c2-runThese8,
> >> 345     solaris_x64_5.11-product-c2-runThese8_Xcomp_vm,
> >> 370     windows_i586_6.3-product-c2-runThese8_Xcomp_vm,
> >> 378     windows_x64_6.3-product-c2-runThese8_Xcomp_vm,
> >>
> >>should not have the trailing comma.
> >>
> >>This seems wrong:
> >>
> >> 443 ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_gc_gcbasher},
> >>\
> >> 444
> >>${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_runtime},
> >>\
> >> 445 ${my.make.rule.test.targets.hotspot.reg.group:GROUP=hotspot_fast_serviceability},
> >>\
> >> 446 ${my.make.rule.test.targets.hotspot.reg.group:GROUP=jdk_svc_sanity},
> >>\
> >> 447   solaris_sparcv9_5.11-product-c2-hotspot_fast_gc_gcbasher,
> >>\
> >> 448   solaris_x64_5.11-product-c2-hotspot_fast_gc_gcbasher,
> >>\
> >> 449   linux_i586_3.8-product-c2-hotspot_fast_gc_gcbasher,
> >>\
> >> 450   linux_x64_3.8-product-c2-hotspot_fast_gc_gcbasher,
> >>\
> >> 451   macosx_x64_10.9-product-c2-hotspot_fast_gc_gcbasher,
> >>\
> >> 452   windows_i586_6.3-product-c2-hotspot_fast_gc_gcbasher,
> >>\
> >> 453   windows_x64_6.3-product-c2-hotspot_fast_gc_gcbasher,
> >>\
> >>
> >>You've added the new tests through a group substitution at line 443, but
> >>then have added each platform individually. I don't think 447 - 453 should
> >>be there else the test will run twice per platform.
> >
> >If you look at the current jprt.properties file you will see that
> >GCBasher is being run for both product and fastdebug builds for 32 and
> >64 bit Linux, Windows, Mac, Solaris as well as Solaris SPARC. This is
> >the behavior we want to match.
> >
> >Looking at my changes, you can see that the first change to
> >my.make.rule.test.targets.hotspot.reg will cause the jtreg version
> >of GCBasher to be run for all fastdebug builds for the above platforms.
> >This is because my.make.rule.targets.hotspot.reg will expand a jtreg
> >group to be to be a target for all fastdebug builds (by making use
> >my.make.rule.targets.hotspot.reg.group with a substituion).
> >
> >Now, the previous paragraph takes care of fastdebug but doesn't run the
> >test on product builds. We only want the jtreg version of GCBasher to
> >run on the product builds, not all jtreg groups. Hence I added the
> >product targets explicitly in my.make.rule.test.targets.hotspot.reg.
> 
> Sorry I misread that. I'd be tempted to define a new group mechanism for
> 
> my.make.rule.test.targets.hotspot.reg.product.group= \
>   solaris_sparcv9_5.11-product-c2-GROUP, \
>   ...
> 
> and then use that. But I don't insist :)

Me and Erik J discussed that and concluded that if the need arises for
more jtreg tests to be run on both product and fastdebug, then we can do
the abstraction then.

Thanks for the review!
Erik

> Thanks,
> David
> 
> >Thanks,
> >Erik
> >
> >>Thanks,
> >>David
> >>-----
> >>
> >>>Testing:
> >>>- Running the new jtreg test locally on Linux x86-64:
> >>> $ jtreg -jdk:build/fastdebug/jdk hotspot/test/gc/stress/TestGCBasher.java
> >>>
> >>> (can also be run via: $ make test TEST=hotspot_fast_gc_gcbasher)
> >>>- JPRT
> >>>
> >>>Thanks,
> >>>Erik
> >>>



More information about the build-dev mailing list