summary refs log tree commit diff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2021-04-23 11:00:56 +0100
committerChristopher Baines <mail@cbaines.net>2021-04-23 11:03:23 +0100
commite2ab6fb0dd3e2bcaadc0d349c96c3689db5ac670 (patch)
tree76aead530762f726243ddf9d965231c19d66f5cb
parent44ae570fba1ec1b5873af3a9f03d7d73a866bfca (diff)
downloadguix-e2ab6fb0dd3e2bcaadc0d349c96c3689db5ac670.tar.gz
services: guix-build-coordinator: Add max-1min-load-average option.
To the agent configuration.

* gnu/services/guix.scm (<guix-build-coordinator-agent-configuration>): New
field, max-1min-load-average.
(guix-build-coordinator-agent-configuration-max-1min-load-average): New
procedure.
(guix-build-coordinator-agent-shepherd-services): If set, include the
max-1min-load-average in the agent arguments.
-rw-r--r--doc/guix.texi9
-rw-r--r--gnu/services/guix.scm9
2 files changed, 18 insertions, 0 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index b9019d5550..262877cb88 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -31155,6 +31155,15 @@ will use the current system it's running on as the default.
 @item @code{max-parallel-builds} (default: @code{1})
 The number of builds to perform in parallel.
 
+@item @code{max-1min-load-average} (default: @code{#f})
+Load average value to look at when considering starting new builds, if
+the 1 minute load average exceeds this value, the agent will wait before
+starting new builds.
+
+This will be unspecified if the value is @code{#f}, and the agent will
+use the number of cores reported by the system as the max 1 minute load
+average.
+
 @item @code{derivation-substitute-urls} (default: @code{#f})
 URLs from which to attempt to fetch substitutes for derivations, if the
 derivations aren't already available.
diff --git a/gnu/services/guix.scm b/gnu/services/guix.scm
index d1d31febdc..65f3007916 100644
--- a/gnu/services/guix.scm
+++ b/gnu/services/guix.scm
@@ -58,6 +58,7 @@
             guix-build-coordinator-agent-configuration-authentication
             guix-build-coordinator-agent-configuration-systems
             guix-build-coordinator-agent-configuration-max-parallel-builds
+            guix-build-coordinator-agent-configuration-max-1min-load-average
             guix-build-coordinator-agent-configuration-derivation-substitute-urls
             guix-build-coordinator-agent-configuration-non-derivation-substitute-urls
 
@@ -156,6 +157,9 @@
   (max-parallel-builds
    guix-build-coordinator-agent-configuration-max-parallel-builds
    (default 1))
+  (max-1min-load-average
+   guix-build-coordinator-agent-configuration-max-1min-load-average
+   (default #f))
   (derivation-substitute-urls
    guix-build-coordinator-agent-configuration-derivation-substitute-urls
    (default #f))
@@ -370,6 +374,7 @@
 (define (guix-build-coordinator-agent-shepherd-services config)
   (match-record config <guix-build-coordinator-agent-configuration>
     (package user coordinator authentication max-parallel-builds
+             max-1min-load-average
              derivation-substitute-urls non-derivation-substitute-urls
              systems)
     (list
@@ -402,6 +407,10 @@
                                                 token-file))))
                       #$(simple-format #f "--max-parallel-builds=~A"
                                        max-parallel-builds)
+                      #$@(if max-1min-load-average
+                             #~(#$(simple-format #f "--max-1min-load-average=~A"
+                                                 max-1min-load-average))
+                             #~())
                       #$@(if derivation-substitute-urls
                              #~(#$(string-append
                                    "--derivation-substitute-urls="