RFR: JDK-8147933: Configure check for number of cpus ignores HT on Macosx

Erik Joelsson erik.joelsson at oracle.com
Thu Jan 21 10:45:52 UTC 2016

On all other platforms except Macosx, the logic for detecting number of 
cpus includes hyperthreading in their count. We do see some speedup from 
setting the make -j flag to a number that includes HT so we should do 
the same on macosx.

I chose to fix this by querying sysctl for hardware information. It also 
seems to much simpler so I changed the memory detecting logic to use the 
same technique.

Bug: https://bugs.openjdk.java.net/browse/JDK-8147933
diff -r f36cf7e8ba68 common/autoconf/build-performance.m4
--- a/common/autoconf/build-performance.m4
+++ b/common/autoconf/build-performance.m4
@@ -39,7 +39,7 @@
    elif test -x /usr/sbin/system_profiler; then
      # Looks like a MacOSX system
-    NUM_CORES=`/usr/sbin/system_profiler -detailLevel full 
SPHardwareDataType | grep 'Cores' | awk  '{print [$]5}'`
+    NUM_CORES=`/usr/sbin/sysctl -n hw.ncpu`
    elif test "x$OPENJDK_BUILD_OS" = xaix ; then
      NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk 
'{ print [$]4 }'`
@@ -76,8 +76,8 @@
    elif test -x /usr/sbin/system_profiler; then
      # Looks like a MacOSX system
-    MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full 
SPHardwareDataType | grep 'Memory' | awk  '{print [$]2}'`
-    MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024`
+    MEMORY_SIZE=`/usr/sbin/sysctl -n hw.memsize`
+    MEMORY_SIZE=`expr $MEMORY_SIZE / 1024 / 1024`
    elif test "x$OPENJDK_BUILD_OS" = xwindows; then
      # Windows, but without cygwin


More information about the build-dev mailing list