RFR: 8277893: Arraycopy stress tests [v3]

Aleksey Shipilev shade at openjdk.java.net
Mon Dec 6 10:17:52 UTC 2021


> 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 with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 11 additional commits since the last revision:

 - Package declarations
 - Add safety check for small systems
 - Renames
 - Single driver for all the tests
 - Safer timeout settings
 - Post-merge TEST.groups cleanup
 - Merge branch 'master' into JDK-8277893-arraycopy-tests
 - Merge branch 'master' into JDK-8277893-arraycopy-tests
 - Separate test group and hooks into hotspot_slow_compiler
 - Trim down MAX_SIZE and explain the choice
 - ... and 1 more: https://git.openjdk.java.net/jdk/compare/228a50d8...118a3eb2

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

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/6594/files
  - new: https://git.openjdk.java.net/jdk/pull/6594/files/da7ed51e..118a3eb2

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=6594&range=02
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=6594&range=01-02

  Stats: 10957 lines in 493 files changed: 6701 ins; 2473 del; 1783 mod
  Patch: https://git.openjdk.java.net/jdk/pull/6594.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/6594/head:pull/6594

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


More information about the hotspot-dev mailing list