changeset 10772:3ea6198dc9a5

8080623: CPU overhead in FJ due to spinning in awaitWork Reviewed-by: chegar, dholmes
author dl
date Wed, 20 May 2015 14:50:57 +0200
parents b77ce075b357
children 721a9a7c39b7
files src/share/classes/java/util/concurrent/ForkJoinPool.java
diffstat 1 files changed, 9 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/java/util/concurrent/ForkJoinPool.java	Wed May 20 08:58:14 2015 +0530
+++ b/src/share/classes/java/util/concurrent/ForkJoinPool.java	Wed May 20 14:50:57 2015 +0200
@@ -1323,13 +1323,16 @@
     /**
      * 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.
+     *
+     * 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.
      */
-    private static final int SPINS  = 1 << 11;
+    private static final int SPINS  = 0;
 
     /**
      * Increment for seed generators. See class ThreadLocal for