aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/build-allocator.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-12-23 14:57:14 +0000
committerChristopher Baines <mail@cbaines.net>2020-12-23 14:57:14 +0000
commitc4e5a39a4af6fe13a341631a1862ae50b407f82a (patch)
treeaf4217f198750bfc3d69b169accd19d7240e78e6 /guix-build-coordinator/build-allocator.scm
parenta52c76f6a7d2bd57f9837625b82a695b8455d4d5 (diff)
downloadbuild-coordinator-c4e5a39a4af6fe13a341631a1862ae50b407f82a.tar
build-coordinator-c4e5a39a4af6fe13a341631a1862ae50b407f82a.tar.gz
Skip some unnecessary prioritisation in the basic allocator
Diffstat (limited to 'guix-build-coordinator/build-allocator.scm')
-rw-r--r--guix-build-coordinator/build-allocator.scm20
1 files changed, 18 insertions, 2 deletions
diff --git a/guix-build-coordinator/build-allocator.scm b/guix-build-coordinator/build-allocator.scm
index 614bd0f..2fc1a27 100644
--- a/guix-build-coordinator/build-allocator.scm
+++ b/guix-build-coordinator/build-allocator.scm
@@ -161,6 +161,21 @@
builds)
builds))
+ (define (limit-processed-sublists lists)
+ (if planned-builds-for-agent-limit
+ (let loop ((remaining-lists lists)
+ (kept-lists '())
+ (count 0))
+ (if (or (>= count planned-builds-for-agent-limit)
+ (null? remaining-lists))
+ (reverse kept-lists)
+ (loop (cdr remaining-lists)
+ (cons (first remaining-lists)
+ kept-lists)
+ (+ count
+ (length (first remaining-lists))))))
+ lists))
+
(define (break-builds-in-to-priority-sublists all-builds)
(define (build-priority build)
(hash-ref derived-build-priorities-hash
@@ -353,8 +368,9 @@
(let ((final-ordered-builds
(concatenate
(map sort-priority-sublist
- (break-builds-in-to-priority-sublists
- builds-sorted-by-derived-priority)))))
+ (limit-processed-sublists
+ (break-builds-in-to-priority-sublists
+ builds-sorted-by-derived-priority))))))
(let ((builds-for-agent
(limit-planned-builds final-ordered-builds)))
(map (lambda (build-id ordering)