diff options
author | Christopher Baines <mail@cbaines.net> | 2020-12-23 18:11:15 +0000 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2020-12-23 18:11:15 +0000 |
commit | e1a4df900d87c4af63dc33aa5aabba821ac2be1f (patch) | |
tree | aab16c20e3511c6fbd946a7f894e04ae1576c082 /guix-build-coordinator/agent.scm | |
parent | c4e5a39a4af6fe13a341631a1862ae50b407f82a (diff) | |
download | build-coordinator-e1a4df900d87c4af63dc33aa5aabba821ac2be1f.tar build-coordinator-e1a4df900d87c4af63dc33aa5aabba821ac2be1f.tar.gz |
Avoid starting builds if the system load is high
Diffstat (limited to 'guix-build-coordinator/agent.scm')
-rw-r--r-- | guix-build-coordinator/agent.scm | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/guix-build-coordinator/agent.scm b/guix-build-coordinator/agent.scm index 9ace7d3..f80cb10 100644 --- a/guix-build-coordinator/agent.scm +++ b/guix-build-coordinator/agent.scm @@ -45,7 +45,8 @@ max-parallel-builds derivation-substitute-urls non-derivation-substitute-urls - metrics-file) + metrics-file + max-5min-load-average) (define lgr (make <logger>)) (define port-log (make <port-log> #:port (current-output-port) @@ -90,6 +91,15 @@ (write-textfile metrics-registry metrics-file))) + (define (wait-for-low-load build-id) + (let ((current-load (get-load-average))) + (when (>= current-load max-5min-load-average) + (log-msg lgr 'INFO + build-id + ": holding build start due to high load") + (sleep 30) + (wait-for-low-load build-id)))) + (define (process-job build) (let ((build-id (assoc-ref build "uuid")) (derivation-name (assoc-ref build "derivation-name"))) @@ -113,6 +123,7 @@ (write-metrics) (if (eq? (assq-ref pre-build-status 'result) 'success) (begin + (wait-for-low-load build-id) (log-msg lgr 'INFO build-id ": setup successful, building: " |