RFR 8080623 CPU overhead in FJ due to spinning in awaitWork
David Holmes
david.holmes at oracle.com
Wed May 20 09:46:32 UTC 2015
On 20/05/2015 7:28 PM, Paul Sandoz wrote:
>
> On May 20, 2015, at 9:07 AM, David Holmes <david.holmes at oracle.com> wrote:
>
>> On 20/05/2015 3:55 AM, Paul Sandoz wrote:
>>> Hi,
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8080623
>>>
>>> diff -r ea3ca5cfc3c6 src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java
>>> --- a/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java Tue May 19 20:04:29 2015 +0300
>>> +++ b/src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java Tue May 19 19:54:00 2015 +0200
>>> @@ -1328,13 +1328,9 @@
>>> /**
>>> * Number of times to spin-wait before blocking. The spins (in
>>> * awaitRunStateLock and awaitWork) currently use randomized
>>> - * spins. If/when MWAIT-like intrinsics becomes available, they
>>> - * may allow quieter spinning. The value of SPINS must be a power
>>> - * of two, at least 4. The current value causes spinning for a
>>> - * small fraction of typical context-switch times, well worthwhile
>>> - * given the typical likelihoods that blocking is not necessary.
>>> + * spins. Currently set to zero to reduce CPU usage.
>>
>> I'd keep the commentary even if disabling spinning at this time.
>>
>
> Some of removed commentary makes less sense given the motivation to set the value to zero. How about the following tweak:
>
> /**
> * Number of times to spin-wait before blocking. The spins (in
> * awaitRunStateLock and awaitWork) currently use randomized
> - * spins. If/when MWAIT-like intrinsics becomes available, they
> - * may allow quieter spinning. The value of SPINS must be a power
> - * of two, at least 4. The current value causes spinning for a
> - * small fraction of typical context-switch times, well worthwhile
> - * given the typical likelihoods that blocking is not necessary.
> + * spins. Currently set to zero to reduce CPU usage.
I've lost the context for what "spin" is getting randomized ??
> + *
> + * If greater than zero the value of SPINS must be a power
> + * of two, at least 4. A value of 2048 causes spinning for a
> + * small fraction of typical context-switch times.
> + *
> + * If/when MWAIT-like intrinsics becomes available, they
> + * may allow quieter spinning.
Yep that's fine - thanks.
David
> */
> - private static final int SPINS = 1 << 11;
> + private static final int SPINS = 0;
>
> Paul.
>
More information about the core-libs-dev
mailing list