On Fri, 10 May 2024 07:35:17 GMT, Viktor Klang <vkl...@openjdk.org> wrote:
>> This set of changes address causes of poor utilization with small numbers of >> cores due to overly aggressive contention avoidance. A number of further >> adjustments were needed to still avoid most contention effects in >> deployments with large numbers of cores > > src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java line 994: > >> 992: static final long SHUTDOWN = 1L << 1; // terminate when >> quiescent >> 993: static final long TERMINATED = 1L << 2; // only set if STOP >> also set >> 994: static final long RS_LOCK = 1L << 3; // lowest seqlock >> bit > > @DougLea I presume making these longs was to enable the int-field padding? The net impact is to place runState field nearer queues ref, which on average reduces cacheline accesses since the are almost always accessed together. (The main focus of this update is to reduce memory contention that would otherwise accompany greater utilization. Most of the adjustments are small, but add up.) ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/19131#discussion_r1596643643