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 ])