--- old/test/Makefile 2016-09-26 15:37:58.971811400 -0400 +++ new/test/Makefile 2016-09-26 15:37:58.638291100 -0400 @@ -66,6 +66,7 @@ ifeq ($(ARCH), i386) ARCH=i586 endif + NUM_CORES := $(shell LC_MESSAGES=C /usr/sbin/psrinfo -v | grep -c on-line) endif ifeq ($(UNAME_S), Linux) PLATFORM = linux @@ -74,6 +75,7 @@ ifeq ($(ARCH), i386) ARCH = i586 endif + NUM_CORES := $(shell cat /proc/cpuinfo | grep -c processor) endif ifeq ($(UNAME_S), Darwin) PLATFORM = bsd @@ -82,6 +84,7 @@ ifeq ($(ARCH), i386) ARCH = i586 endif + NUM_CORES := $(shell /usr/sbin/sysctl -n hw.ncpu) endif ifeq ($(findstring BSD,$(UNAME_S)), BSD) PLATFORM = bsd @@ -115,6 +118,14 @@ endif endif EXESUFFIX = .exe +# Don't enable this on Windows until JDK-8159799 has been resolved +# ifneq ($(NUMBER_OF_PROCESSORS), ) +# NUM_CORES := $(NUMBER_OF_PROCESSORS) +# else +# ifneq ($(HOTSPOT_BUILD_JOBS), ) +# NUM_CORES := $(HOTSPOT_BUILD_JOBS) +# endif +# endif endif ifdef ALT_SLASH_JAVA @@ -308,9 +319,22 @@ TEST_SELECTION = $(TESTDIRS) endif -ifdef CONCURRENCY - JTREG_BASIC_OPTIONS += -concurrency:$(CONCURRENCY) +# Concurrency based on min(cores / 2, 12) +ifdef NUM_CORES + CONCURRENCY := $(shell expr $(NUM_CORES) / 2) + ifeq ($(CONCURRENCY), 0) + CONCURRENCY := 1 + else ifeq ($(shell expr $(CONCURRENCY) \> 12), 1) + CONCURRENCY := 12 + endif +else + CONCURRENCY := 1 endif +JTREG_BASIC_OPTIONS += -concurrency:$(CONCURRENCY) + +# Make sure MaxRAMFraction is high enough to not cause OOM or swapping since we may end up with a lot of JVM's +JTREG_BASIC_OPTIONS += -vmoption:-XX:MaxRAMFraction=$(shell expr $(CONCURRENCY) \* 4) + ifdef EXTRA_JTREG_OPTIONS JTREG_BASIC_OPTIONS += $(EXTRA_JTREG_OPTIONS) endif