diff options
-rw-r--r-- | guix-data-service/jobs.scm | 26 | ||||
-rw-r--r-- | scripts/guix-data-service-process-jobs.in | 10 |
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))))))) |