summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorGreg Hogan <code@greghogan.com>2025-04-01 13:58:17 +0000
committerAndreas Enge <andreas@enge.fr>2025-07-18 20:17:32 +0200
commitb2a20e5fd94b447b4749828f57d0dd82e9cb3639 (patch)
tree4bb79d7ecafd3dbae67cb7c477d88d50f4e0a0de /guix
parente239958b8bfcca685514b633b90cbe6536f5762e (diff)
build-system/gnu: Limit load average.
A nice feature of offload builds is that Guix will throttle the start of new jobs based on the overload-threshold. There is no equivalent for local builds, so one must either run builds in serial (--max-jobs=1) and endure single-threaded builds or run concurrent builds and watch the system overload as it runs multiple multi-threaded builds. From a benchmark comparing the compilation of concurrent Folly builds, the "max-load" option reduced the overall time by 8.3%. Memory use also drops considerably since we are only running 1/4 of the processes at any time. * guix/build/gnu-build-system.scm (build, check): Set max load. Change-Id: I97f1e3e59880b6ed23faed2038eb5279415e9c95 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'guix')
-rw-r--r--guix/build/gnu-build-system.scm9
1 files changed, 7 insertions, 2 deletions
diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm
index 10542b3ec2..63bbeae605 100644
--- a/guix/build/gnu-build-system.scm
+++ b/guix/build/gnu-build-system.scm
@@ -28,6 +28,7 @@
#:use-module (ice-9 regex)
#:use-module (ice-9 format)
#:use-module (ice-9 ftw)
+ #:use-module (ice-9 threads)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
#:use-module (srfi srfi-34)
@@ -386,7 +387,9 @@ makefiles."
#:allow-other-keys)
(apply invoke "make"
`(,@(if parallel-build?
- `("-j" ,(number->string (parallel-job-count)))
+ `("-j" ,(number->string (parallel-job-count))
+ ,(string-append "--max-load="
+ (number->string (total-processor-count))))
'())
,@make-flags)))
@@ -425,7 +428,9 @@ makefiles."
(raise c)))
(apply invoke "make" test-target
`(,@(if parallel-tests?
- `("-j" ,(number->string (parallel-job-count)))
+ `("-j" ,(number->string (parallel-job-count))
+ ,(string-append "--max-load="
+ (number->string (total-processor-count))))
'())
,@make-flags)))
(format #t "test suite not run~%")))