RFR: 8277893: Arraycopy stress tests [v2]

Vladimir Kozlov kvn at openjdk.java.net
Thu Dec 2 18:24:15 UTC 2021


On Wed, 1 Dec 2021 09:13:36 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> I would like to fork the new tests off the JDK-8150730. These tests were instrumental in capturing many bugs in my arraycopy work, and I think they are good on their own merit, because they provide a test for the current baseline and on-going minor improvements in arraycopy on all platforms, not only x86_64, and they might be cleanly backportable.
>> 
>> A brief tour of these tests:
>> 
>> - Tests all data types;
>> - Tests small arrays exhaustively, which captures conjoint/disjoint cases, errors near the edges, etc;
>> - Tests large arrays with fuzzing around powers of two and powers of ten, both conjoint and disjoint cases;
>> - Tests all available compilation modes for arraycopy stubs; for example, running on AVX-512 enabled machine runs all versions down to `-XX:UseAVX=0 -XX:UseSSE=0` cases;
>> - Tests with/without compressed oops mode -- theoretically only needed for `Object` copies, but Hotspot cobbles together int+coops and long+no-coops loops, so I decided to alternate coops mode for all data types;
>> 
>> My previous version used individual `@run` clauses for all configurations, but I think the Java driver is cleaner and easier to maintain.
>> 
>> Test times:
>> 
>> 
>> # x86_64 (TR 3970X)
>> real	6m37.855s
>> user	56m23.004s
>> sys	0m20.148s
>> 
>> # x86_32 (TR 3970X)
>> real	11m22.877s
>> user	168m8.137s
>> sys	5m7.037s
>> 
>> # x86_64 (i5-11500)
>> real	15m55.424s
>> user	118m0.969s
>> sys	0m12.039s
>> 
>> # AArch64 (ThunderX2)
>> real	4m5.177s
>> user	32m7.295s
>> sys	0m19.689s
>> 
>> 
>> Since these tests are quite long, especially on small machines, I hooked them up to `hotspot:tier3`.
>> 
>> Additional testing:
>>  - [x] Linux x86_64 fastdebug `compiler/stress/arraycopy`
>>  - [x] Linux x86_32 fastdebug `compiler/stress/arraycopy`
>>  - [x] Linux AArch64 fastdebug `compiler/stress/arraycopy`
>
> Aleksey Shipilev has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Separate test group and hooks into hotspot_slow_compiler
>  - Trim down MAX_SIZE and explain the choice

Most testing passed fine. I am still waiting results on linux-aarch64.

But I got 1 timeout failure running next test on Windows-x64-debug with -XX:+UseZGC:

`compiler/arraycopy/stress/TestStressObjectArrayCopy.java`


reason: User specified action: run main/othervm/timeout=960 -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI StressArrayCopyDriver TestStressObjectArrayCopy 
Timeout information:
elapsed time (seconds): 3920.744


One flags combination run can take up to 8 min and you have 20 of them:

[2021-12-02T16:33:27.024914600Z] Waiting for completion for process 9764
[2021-12-02T16:41:27.136342300Z] Waiting for completion finished for process 9764


Windows VM image has 12 cores, 46Gb memory and AMD latest CPU. I don't think it HW is issue. But it could be something with OS at that time.

On linux-x64-debug it took: `main: 1411.585 seconds`  running with ZGC. Still more then your specified timeout `timeout=960`

Please, check it. You can increase timeout or split testing.

-------------

PR: https://git.openjdk.java.net/jdk/pull/6594


More information about the hotspot-compiler-dev mailing list