Ada Stevenson <adansk...@gmail.com> writes:

> Hi Hilton!
>
> On 07/09/2025 5:55 pm, Hilton Chain wrote:
> >[...]
>
> I've been using the `ci.boiledscript.org` substitute server for a
> while now and it has been a treat! I recently switched to the mirror
> url `cache-cdn.guix.moe` and while the download speeds are good,
> getting the substitute info is an order of magnitude slower than
> getting it from Bordeaux or Guix CI. There wasn't a problem when I was
> downloading straight from the `ci.guix.moe` server itself, so perhaps
> this is a quirk of Cloudflare?
>
> Anyway, I thought I would mention it as it is a pretty big hindrance
> for a good UX, and perhaps you haven't noticed it.
>
> Thanks for your work hosting these servers! There's been a couple
> times now where having this server has saved me from having to wait a
> few hours for builds to complete on another server, or simply having
> to build it myself. :)

Thanks very much!  This is very valuable feedback, indeed I didn't notice the
issue.  Below are a few tests in my environment, I have also tested latency in a
few regions.

So for best querying performance:

    a suitable mirror > Cloudflare (cached) > Cloudflare (uncached)

Although Cloudflare might be better for downloading speed.

Then the goal will be: deploy more mirrors for better coverage and use
Cloudflare as the default mirror for stable experience.

To achieve the latter, performance of uncached requests should be improved, then
there're two approaches:

    1. Sync narinfo files to Cloudflare as well, making it similiar to a full
mirror.  There're low-latency storage choices but adding more expenses.

    2. The worker is deployed near the user, so narinfo files should be accessed
from a mirror in nearest region, sounds more reasonable given the former goal,
I'll have a try.

Cloudflare (uncached)
--8<---------------cut here---------------start------------->8---
$ rm -rf ~/.cache/guix/substitute && guix weather 
--manifest=etc/teams/emacs/emacs-manifest.scm 
--substitute-urls=https://cache-cdn.guix.moe
computing 1,713 package derivations for x86_64-linux...
looking for 1,734 store items on https://cache-cdn.guix.moe...
https://cache-cdn.guix.moe ☀
  98.0% substitutes available (1,700 out of 1,734)
  246.9 MiB of nars (compressed)
  1,153.2 MiB on disk (uncompressed)
  0.063 seconds per request (108.4 seconds in total)
  15.0 requests per second
  (continuous integration information unavailable)
--8<---------------cut here---------------end--------------->8---

Cloudflare (cached)
--8<---------------cut here---------------start------------->8---
$ rm -rf ~/.cache/guix/substitute && guix weather 
--manifest=etc/teams/emacs/emacs-manifest.scm 
--substitute-urls=https://cache-cdn.guix.moe
computing 1,713 package derivations for x86_64-linux...
looking for 1,734 store items on https://cache-cdn.guix.moe...
https://cache-cdn.guix.moe ☀
  98.0% substitutes available (1,700 out of 1,734)
  246.9 MiB of nars (compressed)
  1,153.2 MiB on disk (uncompressed)
  0.027 seconds per request (47.6 seconds in total)
  36.4 requests per second
  (continuous integration information unavailable)
--8<---------------cut here---------------end--------------->8---

cache-de
--8<---------------cut here---------------start------------->8---
$ rm -rf ~/.cache/guix/substitute && guix weather 
--manifest=etc/teams/emacs/emacs-manifest.scm 
--substitute-urls=https://cache-de.guix.moe
computing 1,713 package derivations for x86_64-linux...
looking for 1,734 store items on https://cache-de.guix.moe...
https://cache-de.guix.moe ☀
  98.2% substitutes available (1,702 out of 1,734)
  246.9 MiB of nars (compressed)
  1,153.3 MiB on disk (uncompressed)
  0.008 seconds per request (14.5 seconds in total)
  119.6 requests per second
  (continuous integration information unavailable)
--8<---------------cut here---------------end--------------->8---

cache-it
--8<---------------cut here---------------start------------->8---
$ rm -rf ~/.cache/guix/substitute && guix weather 
--manifest=etc/teams/emacs/emacs-manifest.scm 
--substitute-urls=https://cache-it.guix.moe
computing 1,713 package derivations for x86_64-linux...
looking for 1,734 store items on https://cache-it.guix.moe...
https://cache-it.guix.moe ☀
  98.0% substitutes available (1,699 out of 1,734)
  246.5 MiB of nars (compressed)
  1,151.2 MiB on disk (uncompressed)
  0.061 seconds per request (106.5 seconds in total)
  16.3 requests per second
  (continuous integration information unavailable)
--8<---------------cut here---------------end--------------->8---

cache-us-lax
--8<---------------cut here---------------start------------->8---
$ rm -rf ~/.cache/guix/substitute && guix weather 
--manifest=etc/teams/emacs/emacs-manifest.scm 
--substitute-urls=https://cache-us-lax.guix.moe
computing 1,713 package derivations for x86_64-linux...
looking for 1,734 store items on https://cache-us-lax.guix.moe...
https://cache-us-lax.guix.moe ☀
  98.0% substitutes available (1,699 out of 1,734)
  246.5 MiB of nars (compressed)
  1,151.2 MiB on disk (uncompressed)
  0.002 seconds per request (2.9 seconds in total)
  600.1 requests per second
  (continuous integration information unavailable)
--8<---------------cut here---------------end--------------->8---

cache-sg
--8<---------------cut here---------------start------------->8---
rm -rf ~/.cache/guix/substitute && guix weather 
--manifest=etc/teams/emacs/emacs-manifest.scm 
--substitute-urls=https://cache-sg.guix.moe
computing 1,713 package derivations for x86_64-linux...
looking for 1,734 store items on https://cache-sg.guix.moe...
https://cache-sg.guix.moe ☀
  98.0% substitutes available (1,699 out of 1,734)
  246.5 MiB of nars (compressed)
  1,151.2 MiB on disk (uncompressed)
  0.632 seconds per request (1,096.4 seconds in total)
  1.6 requests per second
  (continuous integration information unavailable)
--8<---------------cut here---------------end--------------->8---

Reply via email to