On Sat, 3 Apr 2021 04:09:53 GMT, Hui Shi <[email protected]> wrote:
>> …ue to large TLAB size
>>
>> serviceability/jvmti/HeapMonitor tests intermittently fail when using
>> PS/Serial GC, original test has implicit assumptions on TLAB size and
>> depends on allocate fix amount of objects to consume TLAB and trigger object
>> sampling. These tests will fail if TLAB is above 20M (this can easily happen
>> when using PS/Serial GC and heap is large), when allocation can not consume
>> current TLAB and _byte_until_sample.
>>
>> Fix in tests is adding an explicit GC to consume current TLAB.
>> Running on 256G memory machine, make run-test CONF=release
>> TEST="test/hotspot/jtreg/serviceability/jvmti/HeapMonitor/MyPackage/"
>> 'JTREG=JOBS=12;VM_OPTIONS=-XX:ActiveProcessorCount=1'
>>
>> before fix: 6 or 7 tests in 20 tests intermittently fail
>> after fix: no failure in 100 runs release/fastdebug
>>
>> This might also fix https://bugs.openjdk.java.net/browse/JDK-8225313
>
> Hui Shi has updated the pull request incrementally with one additional commit
> since the last revision:
>
> clarify comments
Changes requested by cjplummer (Reviewer).
test/hotspot/jtreg/serviceability/jvmti/HeapMonitor/MyPackage/HeapMonitor.java
line 169:
> 167: // Trigger GC then loop around an allocation loop and wait until
> Object Sampling
> 168: // is enabled for every later allocation. It takes two steps:
> 169: // 1. Consume current TLAB, whose size can be varies with heap/GC
> configuration
"whose size can vary"
test/hotspot/jtreg/serviceability/jvmti/HeapMonitor/MyPackage/HeapMonitor.java
line 175:
> 173: System.gc();
> 174: // Step2 loop allocation consume "bytes until sample", each
> iteration allocate
> 175: // about 1600KB, 10 iterations can definitly consume initial "bytes
> until sample"
// Step2 loop allocation consumes "bytes until sample". Each iteration allocates
// about 1600KB, so 10 iterations will definitely consume initial "bytes
until sample"
-------------
PR: https://git.openjdk.java.net/jdk/pull/3265