~ruther/guix-local

50dc48922cc88faec10e8759f58f231bb08f0684 — Ludovic Courtès 12 years ago 6a99575
substitute-binary: Increase lookup concurrency to reduce latency.

* guix/scripts/substitute-binary.scm (%lookup-threads): New variable.
  (guix-substitute-binary): Use 'n-par-map' instead of 'par-map' for
  batch 'lookup-narinfo' calls.
1 files changed, 12 insertions(+), 4 deletions(-)

M guix/scripts/substitute-binary.scm
M guix/scripts/substitute-binary.scm => guix/scripts/substitute-binary.scm +12 -4
@@ 290,6 290,12 @@ reading PORT."
  (time>? (subtract-duration now (make-time time-duration 0 ttl))
          (make-time time-monotonic 0 date)))

(define %lookup-threads
  ;; Number of threads spawned to perform lookup operations.  This means we
  ;; can have this many simultaneous HTTP GET requests to the server, which
  ;; limits the impact of connection latency.
  20)

(define (lookup-narinfo cache path)
  "Check locally if we have valid info about PATH, otherwise go to CACHE and
check what it has."


@@ 489,8 495,9 @@ Internal tool to substitute a pre-built binary to a local build.\n"))
                   ;; Return the subset of PATHS available in CACHE.
                   (let ((substitutable
                          (if cache
                              (par-map (cut lookup-narinfo cache <>)
                                       paths)
                              (n-par-map %lookup-threads
                                         (cut lookup-narinfo cache <>)
                                         paths)
                              '())))
                     (for-each (lambda (narinfo)
                                 (when narinfo


@@ 501,8 508,9 @@ Internal tool to substitute a pre-built binary to a local build.\n"))
                   ;; Reply info about PATHS if it's in CACHE.
                   (let ((substitutable
                          (if cache
                              (par-map (cut lookup-narinfo cache <>)
                                       paths)
                              (n-par-map %lookup-threads
                                         (cut lookup-narinfo cache <>)
                                         paths)
                              '())))
                     (for-each (lambda (narinfo)
                                 (format #t "~a\n~a\n~a\n"