JCStress 0.16

Aleksey Shipilev shade at redhat.com
Mon Feb 27 10:55:39 UTC 2023


Hi,

JCStress 0.16 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.

  *) JDK 19+ compatibility improved. Deprecated API usages reduced, rewritten some harness parts to 
leverage new APIs.
   7903216: jcstress: JDK 19 compatibility fixes
   7903407: jcstress: Main cannot compile with -Werror due to URL deprecation

  *) Reliability: Allocation-intensive tests should now be more reliable. Sanity checks for 
footprints are now retried, there are less objects retained by the tests, the heap is being 
pre-touched before going into the sensitive test, more headroom for allocations per test is reserved.
    7903423: jcstress: Improve footprint by managing object lifecycles better
    7903424: jcstress: Improve reliability of resource sanity checks
    7903425: jcstress: Pre-touch Java heap to avoid allocation stalls
    7903428: jcstress: Adjust max memory per test

  *) Reliability: Generated code is restructured to use split compilation better. With this 
improvement, test code is guaranteed to run in desired compilation mode, regardless of the caller 
that invoked it. Before this, sanity checks for the test that is supposed to run in interpreter mode 
might have run in compiled mode, severely underestimating the time or overestimating the memory 
footprint.
    7903419: jcstress: Rework split compilation support

  *) Reliability: All generated @State objects should now be properly processed at normal exit. This 
ensures we do not miss important samples and/or miss the faux "lifecycle" @Arbiter method invocations.
    7903383: jcstress: All State objects should be processed

  *) UX: Improved NUMA CPU topology support. Several NUMA nodes per socket (for example, Zen) would 
now add the test configs that are scheduled across the NUMA nodes as if they are "sockets". This 
tests the cross-memory-controller behavior.
    7903416: jcstress: Handle NUMA topologies better

  *) UX: Improved sparse CPU topology support. When harness is executed on the slice of a host 
machine, it see only some CPUs with a non-regular topology. Before this improvement, harness would 
just bail to fallback topology and disabled affinity support. With this improvement, harness should 
be able to figure out the affinity allocations without problems.
    7903415: jcstress: Accept non-sequential CPU ID topologies

  *) UX: (+|-)BiasedLocking is part of default test config matrix. This ensures we test several VM 
paths for tests that use locking. This is important for removal of BiasedLocking and other 
locking-related improvements in VM.
    7903408: jcstress: Add BiasedLocking options in test configurations

  *) Test performance: Generated code was tuned up a bit to improve interpreter performance.
    7903290: jcstress: Inline Counter.record(R) method
    7903291: jcstress: Optimize jcstress trap handling

  + A lot of samples were improved, although they are not part of the Maven release.

Enjoy!

-- 
Thanks,
-Aleksey



More information about the jcstress-dev mailing list