8233712: Limit default tests jobs based on ulimit -u setting
Reviewed-by: erikj, ihse
This commit is contained in:
parent
38f3241513
commit
753c58b7f5
@ -247,11 +247,29 @@ ifeq ($(TEST_JOBS), 0)
|
|||||||
CORES_DIVIDER := 4
|
CORES_DIVIDER := 4
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
# For some big multi-core machines with low ulimit -u setting we hit the max
|
||||||
|
# threads/process limit. In such a setup the memory/cores-only-guided
|
||||||
|
# TEST_JOBS config is insufficient. From experience a concurrency setting of
|
||||||
|
# 14 works reasonably well for low ulimit values (<= 4096). Thus, use
|
||||||
|
# divider 4096/14. For high ulimit -u values this shouldn't make a difference.
|
||||||
|
ULIMIT_DIVIDER := (4096/14)
|
||||||
|
PROC_ULIMIT := -1
|
||||||
|
ifneq ($(OPENJDK_TARGET_OS), windows)
|
||||||
|
PROC_ULIMIT := $(shell $(ULIMIT) -u)
|
||||||
|
ifeq ($(PROC_ULIMIT), unlimited)
|
||||||
|
PROC_ULIMIT := -1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
MEMORY_DIVIDER := 2048
|
MEMORY_DIVIDER := 2048
|
||||||
TEST_JOBS := $(shell $(AWK) \
|
TEST_JOBS := $(shell $(AWK) \
|
||||||
'BEGIN { \
|
'BEGIN { \
|
||||||
c = $(NUM_CORES) / $(CORES_DIVIDER); \
|
c = $(NUM_CORES) / $(CORES_DIVIDER); \
|
||||||
m = $(MEMORY_SIZE) / $(MEMORY_DIVIDER); \
|
m = $(MEMORY_SIZE) / $(MEMORY_DIVIDER); \
|
||||||
|
u = $(PROC_ULIMIT); \
|
||||||
|
if (u > -1) { \
|
||||||
|
u = u / $(ULIMIT_DIVIDER); \
|
||||||
|
if (u < c) c = u; \
|
||||||
|
} \
|
||||||
if (c > m) c = m; \
|
if (c > m) c = m; \
|
||||||
c = c * $(TEST_JOBS_FACTOR); \
|
c = c * $(TEST_JOBS_FACTOR); \
|
||||||
c = c * $(TEST_JOBS_FACTOR_JDL); \
|
c = c * $(TEST_JOBS_FACTOR_JDL); \
|
||||||
|
@ -175,6 +175,7 @@ UNZIP := unzip
|
|||||||
EXPR := expr
|
EXPR := expr
|
||||||
FILE := file
|
FILE := file
|
||||||
HG := hg
|
HG := hg
|
||||||
|
ULIMIT := ulimit
|
||||||
|
|
||||||
# On Solaris gnu versions of some tools are required.
|
# On Solaris gnu versions of some tools are required.
|
||||||
ifeq ($(OPENJDK_BUILD_OS), solaris)
|
ifeq ($(OPENJDK_BUILD_OS), solaris)
|
||||||
|
@ -573,6 +573,26 @@ AC_DEFUN([BASIC_REQUIRE_SPECIAL],
|
|||||||
BASIC_CHECK_NONEMPTY($1)
|
BASIC_CHECK_NONEMPTY($1)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Like BASIC_REQUIRE_PROGS but also allows for bash built-ins
|
||||||
|
# $1: variable to set
|
||||||
|
# $2: executable name (or list of names) to look for
|
||||||
|
# $3: [path]
|
||||||
|
AC_DEFUN([BASIC_REQUIRE_BUILTIN_PROGS],
|
||||||
|
[
|
||||||
|
BASIC_SETUP_TOOL($1, [AC_PATH_PROGS($1, $2, , $3)])
|
||||||
|
if test "x[$]$1" = x; then
|
||||||
|
AC_MSG_NOTICE([Required tool $2 not found in PATH, checking built-in])
|
||||||
|
if help $2 > /dev/null 2>&1; then
|
||||||
|
AC_MSG_NOTICE([Found $2 as shell built-in. Using it])
|
||||||
|
$1="$2"
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([Required tool $2 also not found as built-in.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
BASIC_CHECK_NONEMPTY($1)
|
||||||
|
])
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Setup the most fundamental tools that relies on not much else to set up,
|
# Setup the most fundamental tools that relies on not much else to set up,
|
||||||
# but is used by much of the early bootstrap code.
|
# but is used by much of the early bootstrap code.
|
||||||
@ -1284,6 +1304,9 @@ AC_DEFUN_ONCE([BASIC_SETUP_COMPLEX_TOOLS],
|
|||||||
elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
|
elif test "x$OPENJDK_TARGET_OS" = "xsolaris"; then
|
||||||
BASIC_REQUIRE_PROGS(ELFEDIT, elfedit)
|
BASIC_REQUIRE_PROGS(ELFEDIT, elfedit)
|
||||||
fi
|
fi
|
||||||
|
if ! test "x$OPENJDK_TARGET_OS" = "xwindows"; then
|
||||||
|
BASIC_REQUIRE_BUILTIN_PROGS(ULIMIT, ulimit)
|
||||||
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
@ -767,6 +767,7 @@ JIB_HOME:=@JIB_HOME@
|
|||||||
XCODEBUILD=@XCODEBUILD@
|
XCODEBUILD=@XCODEBUILD@
|
||||||
DTRACE := @DTRACE@
|
DTRACE := @DTRACE@
|
||||||
FIXPATH:=@FIXPATH@
|
FIXPATH:=@FIXPATH@
|
||||||
|
ULIMIT:=@ULIMIT@
|
||||||
|
|
||||||
TAR_TYPE:=@TAR_TYPE@
|
TAR_TYPE:=@TAR_TYPE@
|
||||||
TAR_CREATE_EXTRA_PARAM:=@TAR_CREATE_EXTRA_PARAM@
|
TAR_CREATE_EXTRA_PARAM:=@TAR_CREATE_EXTRA_PARAM@
|
||||||
|
Loading…
Reference in New Issue
Block a user