RFR: 8277893: Arraycopy stress tests

Aleksey Shipilev shade at openjdk.java.net
Mon Nov 29 14:10:54 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	9m11.037s
  user	78m2.766s
  sys	0m19.873s

# x86_32 (TR 3970X)
  real	13m39.054s
  user	147m38.308s
  sys	0m10.924s

# x86_64 (i5-11500)
  real    41m32.622s
  user    447m19.986s
  sys     0m21.026s

# AArch64 (ThunderX2)
  real	5m34.210s
  user	45m16.015s
  sys	0m24.723s


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`

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

Commit messages:
 - Ready for review

Changes: https://git.openjdk.java.net/jdk/pull/6594/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=6594&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8277893
  Stats: 1181 lines in 12 files changed: 1181 ins; 0 del; 0 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