Support customising the latest branch revision max processes

This makes it possible to set a higher or lower value depending on what you
want.
This commit is contained in:
Christopher Baines 2020-02-28 20:58:21 +00:00
parent 185ba36853
commit 65f2f21d3a
2 changed files with 24 additions and 12 deletions

View file

@ -24,7 +24,8 @@
default-max-processes)) 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) (define (fetch-new-jobs)
(fetch-unlocked-jobs conn)) (fetch-unlocked-jobs conn))
@ -44,7 +45,9 @@
(process-jobs-concurrently fetch-new-jobs (process-jobs-concurrently fetch-new-jobs
process-job process-job
handle-job-failure handle-job-failure
#:max-processes max-processes)) #:max-processes max-processes
#:priority-max-processes
latest-branch-revision-max-processes))
(define default-max-processes (define default-max-processes
(max (round (/ (current-processor-count) (max (round (/ (current-processor-count)
@ -55,12 +58,15 @@
(* (* 60 60) ;; 1 hour in seconds (* (* 60 60) ;; 1 hour in seconds
24)) 24))
(define* (process-jobs-concurrently fetch-new-jobs (define* (process-jobs-concurrently
process-job fetch-new-jobs
handle-job-failure process-job
#:key (max-processes handle-job-failure
default-max-processes) #:key
(timeout default-timeout)) (max-processes default-max-processes)
(priority-max-processes (* 2 max-processes))
(timeout default-timeout))
(define processes (define processes
(make-hash-table)) (make-hash-table))
@ -156,9 +162,7 @@
(hash-count (const #t) processes))) (hash-count (const #t) processes)))
(when (< current-processes (when (< current-processes
(if priority? (if priority?
;; For priority jobs, burst up to twice the number priority-max-processes
;; of max processes
(* 2 max-processes)
max-processes)) max-processes))
(fork-and-process-job (list job-id)))))) (fork-and-process-job (list job-id))))))
jobs))) jobs)))

View file

@ -35,6 +35,11 @@
(list (option '("max-processes") #t #f (list (option '("max-processes") #t #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'max-processes (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) (string->number arg)
result))))) result)))))
@ -62,4 +67,7 @@
(lambda (conn) (lambda (conn)
(simple-format #t "Ready to process jobs...\n") (simple-format #t "Ready to process jobs...\n")
(process-jobs conn (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)))))))