JCStress 0.15
Aleksey Shipilev
shade at redhat.com
Thu Dec 2 10:39:31 UTC 2021
Hi,
JCStress 0.15 is released and available on Maven Central. This is useful for those who use JCStress
as Maven dependency. This release further improves harness reliability, testing performance, and UX.
*) UX: Reworked HTML reports so they include test configurations more comprehensively
7903039: jcstress: HTML reports should capture compilation/scheduling modes
*) Reliability: When topology code cannot figure out the CPU thread IDs, it used to blindly trust
that thread IDs are consecutive. This was demonstrably false in many cases in CKI Project, where
tests are running on the slices of the physical host. The tests would then fail when harness tried
to taskset the JVMs with wrong thread IDs. Now the harness does not do that if topology is unknown.
7903064: jcstress: Fallback topology should force NONE affinity mode
NOTE: This has an unfortunate effect on OSX: taskset is there, but there is no code that parses
OSX CPU topology, so GLOBAL/LOCAL affinity policies do not work there anymore, making the tests a
bit less accurate. Contributions to implement OSX CPU topology parsing are welcome! (Also Windows,
but lacking the taskset, you would need to also implement actual affinity support with JNA).
*) UX: Related to above, stop pretending that fake CPU topology is real in the test output
7903066: jcstress: Do not print fake CPU mappings from FallbackTopology
7903065: jcstress: Do not print CPU allocations for NONE affinity mode
*) Reliability: If you get a long exception (for example, StackOverflowError) in the test, the
harness used to break hard. Now it does not.
7903019: jcstress: Very long exceptions break the VM data streams
*) Reliability: Since JDK 16, there is the -XX:StressSeed option to provide a repeatable seed for
C2 randomizers. Harness now uses it by providing its own seed values, and reporting them in reports
for better reproducibility.
7903041: jcstress: Provide explicit StressSeed when available
*) Reliability: C2 randomized configurations can be run with more forks to get more exposure to
randomized tests. New multiplier option makes X times more forks for those configs. Current
defaults: "1" for -m {sanity,quick}, "5" for {default, tough}, "10" for {stress}. "-fsm #" command
line option overrides it.
7903040: jcstress: Introduce stress configuration multipliers
Other notes, not exactly related to this release:
*) We have been doing lots of Samples work. If you are looking for the most up to date
correctness/semantics guide on low-level Java concurrency then JCStress examples are it. Shout out
to Michael Mirwaldt for contributing a bunch of them in this cycle:
https://github.com/openjdk/jcstress/tree/master/jcstress-samples/src/main/java/org/openjdk/jcstress/samples
Enjoy!
--
Thanks,
-Aleksey
More information about the jcstress-dev
mailing list