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 :)
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