unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Using HTTP pipelining for substitutes
@ 2014-06-16 22:20 Ludovic Courtès
  2014-06-18 12:11 ` Ludovic Courtès
  0 siblings, 1 reply; 2+ messages in thread
From: Ludovic Courtès @ 2014-06-16 22:20 UTC (permalink / raw)
  To: guix-devel

Hello!

The new ‘wip-http-pipelining’ branch changes ‘guix substitute-binary’ so
that, instead of using the current brute force approach—a bunch of
threads performing HTTP GETs[*] in parallel to hydra.gnu.org–, it sends all
HTTP GET requests in a row and then reads responses (“HTTP pipeline”.)

I suspect it performs more or less the same as the brute force approach,
but it uses much less resources on the client (memory, file descriptors,
etc.), and likewise on the server (doesn’t have to handle a large number
of parallel connections.)

It should also be more robust, and will make it easy to have progress
report when updating the list of substitutes.

I’ll test it some more and make sure it works with Guile 2.0.5.

Comments welcome!

Ludo’.

[*] The GETs are to check whether hydra.gnu.org has a substitute for a
    given store item.

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Using HTTP pipelining for substitutes
  2014-06-16 22:20 Using HTTP pipelining for substitutes Ludovic Courtès
@ 2014-06-18 12:11 ` Ludovic Courtès
  0 siblings, 0 replies; 2+ messages in thread
From: Ludovic Courtès @ 2014-06-18 12:11 UTC (permalink / raw)
  To: guix-devel

ludo@gnu.org (Ludovic Courtès) skribis:

> The new ‘wip-http-pipelining’ branch changes ‘guix substitute-binary’ so
> that, instead of using the current brute force approach—a bunch of
> threads performing HTTP GETs[*] in parallel to hydra.gnu.org–, it sends all
> HTTP GET requests in a row and then reads responses (“HTTP pipeline”.)
>
> I suspect it performs more or less the same as the brute force approach,

Actually that intuition was wrong, because it takes some time for Hydra
to process .narinfo GET requests.

Namely: it runs at 3.5 reqs/s. when signing narinfos (our case), and
37.0 reqs/s. when not signing them.

I’ll see if we can adjust Hydra to do some caching.

Ludo’.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-06-18 12:12 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-16 22:20 Using HTTP pipelining for substitutes Ludovic Courtès
2014-06-18 12:11 ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).