guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/02: Make it possible to increase the number of thread pool threads


From: Christopher Baines
Subject: 02/02: Make it possible to increase the number of thread pool threads
Date: Sun, 2 Oct 2022 10:09:14 -0400 (EDT)

cbaines pushed a commit to branch master
in repository data-service.

commit ff77bbea7e647a07c5601e51704c04258a73b79f
Author: Christopher Baines <mail@cbaines.net>
AuthorDate: Sun Oct 2 15:08:18 2022 +0100

    Make it possible to increase the number of thread pool threads
    
    And double the default to 16.
---
 guix-data-service/utils.scm  |  9 +++++++--
 scripts/guix-data-service.in | 13 ++++++++++++-
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/guix-data-service/utils.scm b/guix-data-service/utils.scm
index f5a1128..6be5cc5 100644
--- a/guix-data-service/utils.scm
+++ b/guix-data-service/utils.scm
@@ -28,6 +28,7 @@
             with-time-logging
             prevent-inlining-for-tests
 
+            %thread-pool-threads
             parallel-via-thread-pool-channel
             par-map&
             letpar&
@@ -55,7 +56,10 @@
 (define-syntax-rule (prevent-inlining-for-tests var)
   (set! var var))
 
-(define* (make-thread-pool-channel #:key (threads 8))
+(define %thread-pool-threads
+  (make-parameter 8))
+
+(define* (make-thread-pool-channel threads)
   (define (delay-logger seconds-delayed)
     (when (> seconds-delayed 1)
       (format
@@ -107,7 +111,8 @@
 (define (make-thread-pool-channel!')
   (with-mutex %thread-pool-mutex
     (unless %thread-pool-channel
-      (set! %thread-pool-channel (make-thread-pool-channel))
+      (set! %thread-pool-channel (make-thread-pool-channel
+                                  (%thread-pool-threads)))
       (set! make-thread-pool-channel! (lambda () #t)))))
 
 (define make-thread-pool-channel!
diff --git a/scripts/guix-data-service.in b/scripts/guix-data-service.in
index e0b35c6..5f0dc25 100644
--- a/scripts/guix-data-service.in
+++ b/scripts/guix-data-service.in
@@ -33,6 +33,7 @@
              (system repl repl)
              (gcrypt pk-crypto)
              (guix pki)
+             (guix-data-service utils)
              (guix-data-service config)
              (guix-data-service database)
              (guix-data-service substitutes)
@@ -91,6 +92,12 @@
                   (alist-cons 'host
                               arg
                               (alist-delete 'host result))))
+        (option '("thread-pool-threads") #t #f
+                (lambda (opt name arg result)
+                  (alist-cons 'thread-pool-threads
+                              (string->number arg)
+                              (alist-delete 'thread-pool-threads
+                                            result))))
         (option '("postgresql-statement-timeout") #t #f
                 (lambda (opt name arg result)
                   (alist-cons 'postgresql-statement-timeout
@@ -111,6 +118,7 @@
           (_ #t)))
     (port                                 . 8765)
     (host                                 . "0.0.0.0")
+    (thread-pool-threads                  . 16)
     (postgresql-statement-timeout         . 60000)))
 
 
@@ -171,7 +179,10 @@
                                (current-error-port))
                       #f)))
                  (%show-error-details
-                  (assoc-ref opts 'show-error-details)))
+                  (assoc-ref opts 'show-error-details))
+
+                 (%thread-pool-threads
+                  (assoc-ref opts 'thread-pool-threads)))
 
     (let* ((startup-completed
             (make-atomic-box



reply via email to

[Prev in Thread] Current Thread [Next in Thread]