浏览代码

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.
Ben Boeckel 4 年之前
父节点
当前提交
3fd2cffb4d
共有 2 个文件被更改,包括 14 次插入4 次删除
  1. 11 3
      .gitlab/ci/ctest_build.cmake
  2. 3 1
      .gitlab/ci/ctest_test_external.cmake

+ 11 - 3
.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(

+ 3 - 1
.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(