aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix-data-service/jobs.scm26
-rw-r--r--scripts/guix-data-service-process-jobs.in10
2 files changed, 24 insertions, 12 deletions
diff --git a/guix-data-service/jobs.scm b/guix-data-service/jobs.scm
index 31440ba..d770d34 100644
--- a/guix-data-service/jobs.scm
+++ b/guix-data-service/jobs.scm
@@ -24,7 +24,8 @@
default-max-processes))
-(define* (process-jobs conn #:key max-processes)
+(define* (process-jobs conn #:key max-processes
+ latest-branch-revision-max-processes)
(define (fetch-new-jobs)
(fetch-unlocked-jobs conn))
@@ -44,7 +45,9 @@
(process-jobs-concurrently fetch-new-jobs
process-job
handle-job-failure
- #:max-processes max-processes))
+ #:max-processes max-processes
+ #:priority-max-processes
+ latest-branch-revision-max-processes))
(define default-max-processes
(max (round (/ (current-processor-count)
@@ -55,12 +58,15 @@
(* (* 60 60) ;; 1 hour in seconds
24))
-(define* (process-jobs-concurrently fetch-new-jobs
- process-job
- handle-job-failure
- #:key (max-processes
- default-max-processes)
- (timeout default-timeout))
+(define* (process-jobs-concurrently
+ fetch-new-jobs
+ process-job
+ handle-job-failure
+ #:key
+ (max-processes default-max-processes)
+ (priority-max-processes (* 2 max-processes))
+ (timeout default-timeout))
+
(define processes
(make-hash-table))
@@ -156,9 +162,7 @@
(hash-count (const #t) processes)))
(when (< current-processes
(if priority?
- ;; For priority jobs, burst up to twice the number
- ;; of max processes
- (* 2 max-processes)
+ priority-max-processes
max-processes))
(fork-and-process-job (list job-id))))))
jobs)))
diff --git a/scripts/guix-data-service-process-jobs.in b/scripts/guix-data-service-process-jobs.in
index 5161a34..4a7af52 100644
--- a/scripts/guix-data-service-process-jobs.in
+++ b/scripts/guix-data-service-process-jobs.in
@@ -36,6 +36,11 @@
(lambda (opt name arg result)
(alist-cons 'max-processes
(string->number arg)
+ result)))
+ (option '("latest-branch-revision-max-processes") #t #f
+ (lambda (opt name arg result)
+ (alist-cons 'latest-branch-revision-max-processes
+ (string->number arg)
result)))))
(define %default-options
@@ -62,4 +67,7 @@
(lambda (conn)
(simple-format #t "Ready to process jobs...\n")
(process-jobs conn
- #:max-processes (assq-ref opts 'max-processes)))))
+ #:max-processes (assq-ref opts 'max-processes)
+ #:latest-branch-revision-max-processes
+ (or (assq-ref opts 'latest-branch-revision-max-processes)
+ (* 2 (assq-ref opts 'max-processes)))))))