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

Reply via email to