From 3fd2cffb4d4649f7773297d5af7a6bda5ef9a69b Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Tue, 6 Apr 2021 10:43:49 -0400 Subject: ci: limit builds by machine load To avoid starving test jobs, the build jobs should also back off if there is a lot of machine load. --- .gitlab/ci/ctest_build.cmake | 14 +++++++++++--- .gitlab/ci/ctest_test_external.cmake | 4 +++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.gitlab/ci/ctest_build.cmake b/.gitlab/ci/ctest_build.cmake index 6402a5d..e7a0985 100644 --- a/.gitlab/ci/ctest_build.cmake +++ b/.gitlab/ci/ctest_build.cmake @@ -8,10 +8,18 @@ ctest_read_custom_files("${CTEST_BINARY_DIRECTORY}") # Pick up from where the configure left off. ctest_start(APPEND) +include(ProcessorCount) +ProcessorCount(nproc) +if (NOT "$ENV{CTEST_MAX_PARALLELISM}" STREQUAL "") + if (nproc GREATER "$ENV{CTEST_MAX_PARALLELISM}") + set(nproc "$ENV{CTEST_MAX_PARALLELISM}") + endif () +endif () + if (CTEST_CMAKE_GENERATOR STREQUAL "Unix Makefiles") - include(ProcessorCount) - ProcessorCount(nproc) - set(CTEST_BUILD_FLAGS "-j${nproc}") + set(CTEST_BUILD_FLAGS "-j${nproc} -l${nproc}") +elseif (CTEST_CMAKE_GENERATOR MATCHES "Ninja") + set(CTEST_BUILD_FLAGS "-l${nproc}") endif () ctest_build( diff --git a/.gitlab/ci/ctest_test_external.cmake b/.gitlab/ci/ctest_test_external.cmake index 9de06d1..6576c26 100644 --- a/.gitlab/ci/ctest_test_external.cmake +++ b/.gitlab/ci/ctest_test_external.cmake @@ -42,7 +42,9 @@ if (NOT "$ENV{CTEST_MAX_PARALLELISM}" STREQUAL "") endif () if (CTEST_CMAKE_GENERATOR STREQUAL "Unix Makefiles") - set(CTEST_BUILD_FLAGS "-j${nproc}") + set(CTEST_BUILD_FLAGS "-j${nproc} -l${nproc}") +elseif (CTEST_CMAKE_GENERATOR MATCHES "Ninja") + set(CTEST_BUILD_FLAGS "-l${nproc}") endif () ctest_build( -- cgit v0.12