common/autoconf/build-performance.m4

changeset 478
2ba6f4da4bf3
parent 459
3156dff953b1
child 494
e64f2cb57d05
     1.1 --- a/common/autoconf/build-performance.m4	Thu Sep 06 17:27:20 2012 -0700
     1.2 +++ b/common/autoconf/build-performance.m4	Tue Sep 18 11:29:16 2012 -0700
     1.3 @@ -30,27 +30,19 @@
     1.4      FOUND_CORES=no
     1.5      
     1.6      if test -f /proc/cpuinfo; then
     1.7 -        # Looks like a Linux system
     1.8 +        # Looks like a Linux (or cygwin) system
     1.9          NUM_CORES=`cat /proc/cpuinfo  | grep -c processor`
    1.10          FOUND_CORES=yes
    1.11 -    fi
    1.12 -
    1.13 -    if test -x /usr/sbin/psrinfo; then
    1.14 +    elif test -x /usr/sbin/psrinfo; then
    1.15          # Looks like a Solaris system
    1.16          NUM_CORES=`LC_MESSAGES=C /usr/sbin/psrinfo -v | grep -c on-line`
    1.17          FOUND_CORES=yes
    1.18 -    fi
    1.19 -
    1.20 -    if test -x /usr/sbin/system_profiler; then
    1.21 +    elif test -x /usr/sbin/system_profiler; then
    1.22          # Looks like a MacOSX system
    1.23          NUM_CORES=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Cores' | awk  '{print [$]5}'`
    1.24          FOUND_CORES=yes
    1.25      fi
    1.26  
    1.27 -    if test "x$build_os" = xwindows; then
    1.28 -        NUM_CORES=4
    1.29 -    fi
    1.30 -
    1.31      # For c/c++ code we run twice as many concurrent build
    1.32      # jobs than we have cores, otherwise we will stall on io.
    1.33      CONCURRENT_BUILD_JOBS=`expr $NUM_CORES \* 2`
    1.34 @@ -66,31 +58,26 @@
    1.35  AC_DEFUN([BPERF_CHECK_MEMORY_SIZE],
    1.36  [
    1.37      AC_MSG_CHECKING([for memory size])
    1.38 -    # Default to 1024MB
    1.39 +    # Default to 1024 MB
    1.40      MEMORY_SIZE=1024
    1.41      FOUND_MEM=no
    1.42      
    1.43 -    if test -f /proc/cpuinfo; then
    1.44 -        # Looks like a Linux system
    1.45 +    if test -f /proc/meminfo; then
    1.46 +        # Looks like a Linux (or cygwin) system
    1.47          MEMORY_SIZE=`cat /proc/meminfo | grep MemTotal | awk '{print [$]2}'`
    1.48          MEMORY_SIZE=`expr $MEMORY_SIZE / 1024`
    1.49          FOUND_MEM=yes
    1.50 -    fi
    1.51 -
    1.52 -    if test -x /usr/sbin/prtconf; then
    1.53 +    elif test -x /usr/sbin/prtconf; then
    1.54          # Looks like a Solaris system
    1.55          MEMORY_SIZE=`/usr/sbin/prtconf | grep "Memory size" | awk '{ print [$]3 }'`
    1.56          FOUND_MEM=yes
    1.57 -    fi
    1.58 -
    1.59 -    if test -x /usr/sbin/system_profiler; then
    1.60 +    elif test -x /usr/sbin/system_profiler; then
    1.61          # Looks like a MacOSX system
    1.62          MEMORY_SIZE=`/usr/sbin/system_profiler -detailLevel full SPHardwareDataType | grep 'Memory' | awk  '{print [$]2}'`
    1.63          MEMORY_SIZE=`expr $MEMORY_SIZE \* 1024`
    1.64          FOUND_MEM=yes
    1.65 -    fi
    1.66 -
    1.67 -    if test "x$build_os" = xwindows; then
    1.68 +    elif test "x$build_os" = xwindows; then
    1.69 +        # Windows, but without cygwin
    1.70          MEMORY_SIZE=`systeminfo | grep 'Total Physical Memory:' | awk '{ print [$]4 }' | sed 's/,//'`
    1.71          FOUND_MEM=yes    
    1.72      fi
    1.73 @@ -98,7 +85,7 @@
    1.74      if test "x$FOUND_MEM" = xyes; then
    1.75          AC_MSG_RESULT([$MEMORY_SIZE MB])
    1.76      else
    1.77 -        AC_MSG_RESULT([could not detect memory size defaulting to 1024MB!])
    1.78 +        AC_MSG_RESULT([could not detect memory size defaulting to 1024 MB!])
    1.79      fi 
    1.80  ])
    1.81  
    1.82 @@ -240,46 +227,30 @@
    1.83  
    1.84  AC_DEFUN_ONCE([BPERF_SETUP_SMART_JAVAC],
    1.85  [
    1.86 -AC_ARG_WITH(server-java, [AS_HELP_STRING([--with-server-java],
    1.87 -	[use this java binary for running the javac background server and other long running java tasks in the build process,
    1.88 -     e.g. ---with-server-java="/opt/jrockit/bin/java -server"])])
    1.89 +AC_ARG_WITH(sjavac-server-java, [AS_HELP_STRING([--with-sjavac-server-java],
    1.90 +	[use this java binary for running the sjavac background server and other long running java tasks in the build process,
    1.91 +     e.g. ---with-sjavac-server-java="/opt/jrockit/bin/java -server"])])
    1.92  
    1.93 -if test "x$with_server_java" != x; then
    1.94 -    SERVER_JAVA="$with_server_java"
    1.95 -    FOUND_VERSION=`$SERVER_JAVA -version 2>&1 | grep " version \""`
    1.96 +if test "x$with_sjavac_server_java" != x; then
    1.97 +    SJAVAC_SERVER_JAVA="$with_sjavac_server_java"
    1.98 +    FOUND_VERSION=`$SJAVAC_SERVER_JAVA -version 2>&1 | grep " version \""`
    1.99      if test "x$FOUND_VERSION" = x; then
   1.100 -        AC_MSG_ERROR([Could not execute server java: $SERVER_JAVA])
   1.101 +        AC_MSG_ERROR([Could not execute server java: $SJAVAC_SERVER_JAVA])
   1.102      fi
   1.103  else
   1.104 -    SERVER_JAVA=""
   1.105 +    SJAVAC_SERVER_JAVA=""
   1.106      # Hotspot specific options.
   1.107 -    ADD_JVM_ARG_IF_OK([-XX:+UseParallelOldGC],SERVER_JAVA,[$JAVA])
   1.108 -    ADD_JVM_ARG_IF_OK([-verbosegc],SERVER_JAVA,[$JAVA])
   1.109 +    ADD_JVM_ARG_IF_OK([-verbosegc],SJAVAC_SERVER_JAVA,[$JAVA])
   1.110      # JRockit specific options.
   1.111 -    ADD_JVM_ARG_IF_OK([-Xverbose:gc],SERVER_JAVA,[$JAVA])
   1.112 -    SERVER_JAVA="$JAVA $SERVER_JAVA"
   1.113 +    ADD_JVM_ARG_IF_OK([-Xverbose:gc],SJAVAC_SERVER_JAVA,[$JAVA])
   1.114 +    SJAVAC_SERVER_JAVA="$JAVA $SJAVAC_SERVER_JAVA"
   1.115  fi                    
   1.116 -AC_SUBST(SERVER_JAVA)
   1.117 +AC_SUBST(SJAVAC_SERVER_JAVA)
   1.118  
   1.119 -AC_MSG_CHECKING([whether to use shared server for javac])
   1.120 -AC_ARG_ENABLE([javac-server], [AS_HELP_STRING([--enable-javac-server],
   1.121 -	[enable the shared javac server during the build process @<:@disabled@:>@])],
   1.122 -	[ENABLE_JAVAC_SERVER="${enableval}"], [ENABLE_JAVAC_SERVER='no'])
   1.123 -AC_MSG_RESULT([$ENABLE_JAVAC_SERVER])
   1.124 -if test "x$ENABLE_JAVAC_SERVER" = xyes; then
   1.125 -    JAVAC_USE_REMOTE=true
   1.126 -    JAVAC_SERVERS="$OUTPUT_ROOT/javacservers"
   1.127 -else
   1.128 -    JAVAC_USE_REMOTE=false
   1.129 -    JAVAC_SERVERS=
   1.130 -fi
   1.131 -AC_SUBST(JAVAC_USE_REMOTE)
   1.132 -AC_SUBST(JAVAC_SERVERS)
   1.133 -
   1.134 -AC_ARG_WITH(javac-server-cores, [AS_HELP_STRING([--with-javac-server-cores],
   1.135 -	[use at most this number of concurrent threads on the javac server @<:@probed@:>@])])
   1.136 -if test "x$with_javac_server_cores" != x; then
   1.137 -    JAVAC_SERVER_CORES="$with_javac_server_cores"
   1.138 +AC_ARG_WITH(sjavac-server-cores, [AS_HELP_STRING([--with-sjavac-server-cores],
   1.139 +	[use at most this number of concurrent threads on the sjavac server @<:@probed@:>@])])
   1.140 +if test "x$with_sjavac_server_cores" != x; then
   1.141 +    SJAVAC_SERVER_CORES="$with_sjavac_server_cores"
   1.142  else
   1.143      if test "$NUM_CORES" -gt 16; then
   1.144          # We set this arbitrary limit because we want to limit the heap
   1.145 @@ -287,86 +258,49 @@
   1.146          # In the future we will make the javac compilers in the server
   1.147          # share more and more state, thus enabling us to use more and
   1.148          # more concurrent threads in the server.
   1.149 -        JAVAC_SERVER_CORES="16"
   1.150 +        SJAVAC_SERVER_CORES="16"
   1.151      else
   1.152 -        JAVAC_SERVER_CORES="$NUM_CORES"
   1.153 +        SJAVAC_SERVER_CORES="$NUM_CORES"
   1.154      fi
   1.155  
   1.156      if test "$MEMORY_SIZE" -gt "17000"; then
   1.157          MAX_HEAP_MEM=10000
   1.158 -        ADD_JVM_ARG_IF_OK([-d64],SERVER_JAVA,[$SERVER_JAVA])
   1.159 -        ADD_JVM_ARG_IF_OK([-Xms10G -Xmx10G],SERVER_JAVA,[$SERVER_JAVA])
   1.160 -        ADD_JVM_ARG_IF_OK([-Xmn2G],SERVER_JAVA,[$SERVER_JAVA])
   1.161 +        ADD_JVM_ARG_IF_OK([-d64],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
   1.162 +        ADD_JVM_ARG_IF_OK([-Xms10G -Xmx10G],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
   1.163      elif test "$MEMORY_SIZE" -gt "10000"; then
   1.164          MAX_HEAP_MEM=6000
   1.165 -        ADD_JVM_ARG_IF_OK([-d64],SERVER_JAVA,[$SERVER_JAVA])
   1.166 -        ADD_JVM_ARG_IF_OK([-Xms6G -Xmx6G],SERVER_JAVA,[$SERVER_JAVA])
   1.167 -        ADD_JVM_ARG_IF_OK([-Xmn1G],SERVER_JAVA,[$SERVER_JAVA])
   1.168 +        ADD_JVM_ARG_IF_OK([-d64],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
   1.169 +        ADD_JVM_ARG_IF_OK([-Xms6G -Xmx6G],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
   1.170      elif test "$MEMORY_SIZE" -gt "5000"; then
   1.171          MAX_HEAP_MEM=3000
   1.172 -        ADD_JVM_ARG_IF_OK([-d64],SERVER_JAVA,[$SERVER_JAVA])
   1.173 -        ADD_JVM_ARG_IF_OK([-Xms1G -Xmx3G],SERVER_JAVA,[$SERVER_JAVA])
   1.174 -        ADD_JVM_ARG_IF_OK([-Xmn256M],SERVER_JAVA,[$SERVER_JAVA])
   1.175 +        ADD_JVM_ARG_IF_OK([-d64],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
   1.176 +        ADD_JVM_ARG_IF_OK([-Xms1G -Xmx3G],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
   1.177      elif test "$MEMORY_SIZE" -gt "3800"; then
   1.178          MAX_HEAP_MEM=2500
   1.179 -        ADD_JVM_ARG_IF_OK([-Xms1G -Xmx2500M],SERVER_JAVA,[$SERVER_JAVA])
   1.180 -        ADD_JVM_ARG_IF_OK([-Xmn256M],SERVER_JAVA,[$SERVER_JAVA])
   1.181 +        ADD_JVM_ARG_IF_OK([-Xms1G -Xmx2500M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
   1.182      elif test "$MEMORY_SIZE" -gt "1900"; then
   1.183          MAX_HEAP_MEM=1200
   1.184 -        ADD_JVM_ARG_IF_OK([-Xms700M -Xmx1200M],SERVER_JAVA,[$SERVER_JAVA])
   1.185 -        ADD_JVM_ARG_IF_OK([-Xmn256M],SERVER_JAVA,[$SERVER_JAVA])
   1.186 +        ADD_JVM_ARG_IF_OK([-Xms700M -Xmx1400M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
   1.187      elif test "$MEMORY_SIZE" -gt "1000"; then
   1.188          MAX_HEAP_MEM=900
   1.189 -        ADD_JVM_ARG_IF_OK([-Xms400M -Xmx900M],SERVER_JAVA,[$SERVER_JAVA])
   1.190 -        ADD_JVM_ARG_IF_OK([-Xmn128M],SERVER_JAVA,[$SERVER_JAVA])
   1.191 +        ADD_JVM_ARG_IF_OK([-Xms400M -Xmx1100M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
   1.192      else
   1.193          MAX_HEAP_MEM=512
   1.194 -        ADD_JVM_ARG_IF_OK([-Xms256M -Xmx512M],SERVER_JAVA,[$SERVER_JAVA])
   1.195 -        ADD_JVM_ARG_IF_OK([-Xmn128M],SERVER_JAVA,[$SERVER_JAVA])
   1.196 +        ADD_JVM_ARG_IF_OK([-Xms256M -Xmx512M],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
   1.197      fi
   1.198  
   1.199 +    ADD_JVM_ARG_IF_OK([-XX:PermSize=32m],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
   1.200 +    ADD_JVM_ARG_IF_OK([-XX:MaxPermSize=160m],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
   1.201 +    ADD_JVM_ARG_IF_OK([-XX:ThreadStackSize=$STACK_SIZE],SJAVAC_SERVER_JAVA,[$SJAVAC_SERVER_JAVA])
   1.202 +
   1.203      MAX_COMPILERS_IN_HEAP=`expr $MAX_HEAP_MEM / 501`
   1.204 -    if test "$JAVAC_SERVER_CORES" -gt "$MAX_COMPILERS_IN_HEAP"; then
   1.205 +    if test "$SJAVAC_SERVER_CORES" -gt "$MAX_COMPILERS_IN_HEAP"; then
   1.206          AC_MSG_CHECKING([if number of server cores must be reduced])
   1.207 -        JAVAC_SERVER_CORES="$MAX_COMPILERS_IN_HEAP"
   1.208 -        AC_MSG_RESULT([yes, to $JAVAC_SERVER_CORES with max heap size $MAX_HEAP_MEM MB])
   1.209 +        SJAVAC_SERVER_CORES="$MAX_COMPILERS_IN_HEAP"
   1.210 +        AC_MSG_RESULT([yes, to $SJAVAC_SERVER_CORES with max heap size $MAX_HEAP_MEM MB])
   1.211      fi
   1.212  fi                    
   1.213 -AC_SUBST(JAVAC_SERVER_CORES)
   1.214 -
   1.215 -AC_MSG_CHECKING([whether to track dependencies between Java packages])
   1.216 -AC_ARG_ENABLE([javac-deps], [AS_HELP_STRING([--enable-javac-deps],
   1.217 -	[enable the dependency tracking between Java packages @<:@disabled@:>@])],
   1.218 -	[ENABLE_JAVAC_DEPS="${enableval}"], [ENABLE_JAVAC_DEPS='no'])
   1.219 -AC_MSG_RESULT([$ENABLE_JAVAC_DEPS])
   1.220 -if test "x$ENABLE_JAVAC_DEPS" = xyes; then
   1.221 -    JAVAC_USE_DEPS=true
   1.222 -else
   1.223 -    JAVAC_USE_DEPS=false
   1.224 -fi
   1.225 -AC_SUBST(JAVAC_USE_DEPS)
   1.226 -
   1.227 -AC_MSG_CHECKING([whether to use multiple cores for javac compilation])
   1.228 -AC_ARG_ENABLE([javac-multi-core], [AS_HELP_STRING([--enable-javac-multi-core],
   1.229 -	[compile Java packages concurrently @<:@disabled@:>@])],
   1.230 -	[ENABLE_JAVAC_MULTICORE="${enableval}"], [ENABLE_JAVAC_MULTICORE='no'])
   1.231 -AC_MSG_RESULT([$ENABLE_JAVAC_MULTICORE])
   1.232 -if test "x$ENABLE_JAVAC_MULTICORE" = xyes; then
   1.233 -    JAVAC_USE_MODE=MULTI_CORE_CONCURRENT
   1.234 -else
   1.235 -    JAVAC_USE_MODE=SINGLE_THREADED_BATCH
   1.236 -    if test "x$ENABLE_JAVAC_DEPS" = xyes; then
   1.237 -        AC_MSG_WARN([Dependency tracking is not supported with single threaded batch compiles of Java source roots. Please add --disable-javac-deps to your configure options.])
   1.238 -        AC_MSG_WARN([Disabling dependency tracking for you now.])
   1.239 -        JAVAC_USE_DEPS=false
   1.240 -    fi
   1.241 -    if test "x$ENABLE_JAVAC_SERVER" = xyes; then
   1.242 -        AC_MSG_WARN([The javac server will not be used since single threaded batch compiles are run within their own JVM. Please add --disable-javac-server to your configure options.])
   1.243 -        AC_MSG_WARN([Disabling javac server for you now.])
   1.244 -        JAVAC_USE_REMOTE=false
   1.245 -    fi
   1.246 -fi
   1.247 -AC_SUBST(JAVAC_USE_MODE)
   1.248 +AC_SUBST(SJAVAC_SERVER_CORES)
   1.249  
   1.250  AC_MSG_CHECKING([whether to use sjavac])
   1.251  AC_ARG_ENABLE([sjavac], [AS_HELP_STRING([--enable-sjavac],
   1.252 @@ -375,4 +309,11 @@
   1.253  AC_MSG_RESULT([$ENABLE_SJAVAC])
   1.254  AC_SUBST(ENABLE_SJAVAC)
   1.255  
   1.256 +if test "x$ENABLE_SJAVAC" = xyes; then
   1.257 +    SJAVAC_SERVER_DIR="$OUTPUT_ROOT/javacservers"
   1.258 +else
   1.259 +    SJAVAC_SERVER_DIR=
   1.260 +fi
   1.261 +AC_SUBST(SJAVAC_SERVER_DIR)
   1.262 +
   1.263  ])

mercurial