[11] RFR(S): 8207067: [test] prevent timeouts in serviceability/tmtools/jstat/{GcTest02, GcCauseTest02}.java

David Holmes david.holmes at oracle.com
Wed Jul 11 23:27:26 UTC 2018


Hi Volker,

On 12/07/2018 3:30 AM, Volker Simonis wrote:
> Hi,
> can I please have a review for the following test fix which prevents
> eventual test timeouts:
> 
> https://bugs.openjdk.java.net/browse/JDK-8207067
> http://cr.openjdk.java.net/~simonis/webrevs/2018/8207067/
> 
> The two tests hotspot/jtreg/serviceability/tmtools/jstat/{GcTest02,GcCauseTest02}.java
> produce more than 90_000 classes until they eat up ~70% of the 128M
> meta space they run with. The loading of each of these classes
> triggers a full dependency check for ALL nmethods in debug/fastdebug
> builds because 'VerifyDependencies' is 'true' there. This slows down
> the tests from about 3 sec. in the opt build to about 88 sec. in the
> fastdebug build on x86_64 and from about 4 sec. to about 560 sec. on
> ppc64.
> 
> Because the tests are not about dependency checking, it makes sense to
> switch of 'VerifyDependencies' if they are run inside a
> debug/fastdebug VM and decrease the execution time down to about 6
> sec. on both x86_64 and ppc64.

It's very annoying that this can't be fixed the obvious way by just 
specifying -XX:-VerifyDependencies. Maybe jtreg could add a 
debug_only(...)  capability ... :(

It's unclear to me whether it is safe to disable VerifyDependencies 
after the VM has commenced execution. This might lead to 
inconsistencies. Probably need the compiler folk to clarify that.

That aside the comments are far too elaborate and better suited for the 
bug report. The tests could use @bug lines (though it would be nice to 
track down the original bug that added the tests). The comments could 
reduce to a simple:

// This test produces more than 90_000 classes until it eats up ~70% of 
the 128M meta space.
// With VerifyDependencies enabled in debug builds this slows the test 
down considerably.
// As it is a develop flag, if we see that it is "constant" then we know 
this is a product build.

Though there is already Platform.isDebugBuild() if you wanted something 
more direct. (Given you need WB to change the flag it doesn't really 
make much difference.)

Thanks,
David

> Thank you and best regards,
> Volker
> 


More information about the hotspot-runtime-dev mailing list