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

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Thu Jan 21 11:06:44 UTC 2016


On 2016-01-21 11:45, Erik Joelsson wrote:
> 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
> Patch:
> diff -r f36cf7e8ba68 common/autoconf/build-performance.m4
> --- a/common/autoconf/build-performance.m4
> +++ b/common/autoconf/build-performance.m4
> @@ -39,7 +39,7 @@
>      FOUND_CORES=yes
>    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`
>      FOUND_CORES=yes
>    elif test "x$OPENJDK_BUILD_OS" = xaix ; then
>      NUM_CORES=`/usr/sbin/prtconf | grep "^Number Of Processors" | awk 
> '{ print [$]4 }'`
> @@ -76,8 +76,8 @@
>      FOUND_MEM=yes
>    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`
>      FOUND_MEM=yes
>    elif test "x$OPENJDK_BUILD_OS" = xwindows; then
>      # Windows, but without cygwin
>
Nice try but you also need to change theif test -x to /usr/sbin/sysctl 
instead of /usr/sbin/system_profiler ;-)

/Magnus




More information about the build-dev mailing list