From: Michael Tremer Date: Tue, 7 Nov 2017 14:43:14 +0000 (+0100) Subject: make.sh: Calculate MAKETUNING depending on available memory X-Git-Tag: v2.19-core117~1^2~95 X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=commitdiff_plain;h=a98ab1d7fdba5d18d42faab43bf03662ca4d4261;hp=4f1cce84fb8217589b67dd3244fd3f8ccbe14e3d make.sh: Calculate MAKETUNING depending on available memory Signed-off-by: Michael Tremer --- diff --git a/make.sh b/make.sh index 175db5191e..f4d474d364 100755 --- a/make.sh +++ b/make.sh @@ -62,16 +62,17 @@ export BASEDIR LOGFILE DIR_CHK=$BASEDIR/cache/check mkdir $BASEDIR/log/ 2>/dev/null +# Load configuration file +if [ -f .config ]; then + . .config +fi + # Include funtions . tools/make-functions # Get the amount of memory in this build system HOST_MEM=$(system_memory) -if [ -f .config ]; then - . .config -fi - if [ -n "${BUILD_ARCH}" ]; then configure_build "${BUILD_ARCH}" elif [ -n "${TARGET_ARCH}" ]; then @@ -176,11 +177,6 @@ prepareenv() { # Setup environment set +h LC_ALL=POSIX - if [ -z $MAKETUNING ]; then - CPU_COUNT="$(system_processors)" - - MAKETUNING="-j$(( ${CPU_COUNT} * 2 + 1 ))" - fi export LFS LC_ALL CFLAGS CXXFLAGS MAKETUNING unset CC CXX CPP LD_LIBRARY_PATH LD_PRELOAD diff --git a/tools/make-functions b/tools/make-functions index 676b971012..9cf2fcfb47 100644 --- a/tools/make-functions +++ b/tools/make-functions @@ -150,6 +150,26 @@ configure_build() { fi CXXFLAGS="${CFLAGS}" + + # Determine parallelism + if [ -z "${MAKETUNING}" ]; then + # We assume that each process consumes about + # 192MB of memory. Therefore we find out how + # many processes fit into memory. + local mem_max=$(( ${HOST_MEM} / 192 )) + + local processors="$(system_processors)" + local cpu_max=$(( ${processors} * 2 )) + + local parallelism + if [ ${mem_max} -lt ${cpu_max} ]; then + parallelism=${mem_max} + else + parallelism=${cpu_max} + fi + + MAKETUNING="-j${parallelism}" + fi } configure_build_guess() {