Zum Inhalt springen

Ingenieurwesen

Erstellen eines CI-Cache, der nicht drosselt

Wie wir Cache-Wiederherstellungen mit 1 GB/s bereitstellen und warum Bandbreite wichtiger ist als Kapazität.

{Autor} · {Rolle} · {Datum} · {Minuten} {MinutenLabel}

Die Cache-Diskussionen konzentrieren sich auf die Kapazität – die 10-GB-Obergrenze, die Räumungsrichtlinie und die Trefferquote. In der Praxis ist die Bandbreite die Einschränkung, die Menschen spüren und selten benennen.

Warum die Wiederherstellungsgeschwindigkeit dominiert

Ein Cache-Eintrag hilft nur, wenn die Wiederherstellung schneller ist als die Neuerstellung. Bei einer ausreichend niedrigen Übertragungsrate wird jeder Cache zu einem Nettoverlust und es wird die ganze Zeit über eine perfekte Trefferquote gemeldet.

Was wir gebaut haben

  • Auf NVMe gespeicherter Cache in derselben Verfügbarkeitszone wie der Runner-Pool
  • Inhaltsadressierte Blöcke, sodass unveränderte Teile nicht erneut übertragen werden
  • zstd-Komprimierung, ausgewählt wegen der Dekomprimierungsgeschwindigkeit und nicht wegen des Verhältnisses
  • Paralleler Chunk-Abruf sättigt den Link und nicht einen einzelnen Stream

Das Ergebnis ist eine nachhaltige Wiederherstellung mit etwa 1 GB/s. Dadurch ändert sich, welche Dinge es überhaupt wert sind, zwischengespeichert zu werden – bei dieser Geschwindigkeit wird das Zwischenspeichern eines 6-GB-Toolchain-Verzeichnisses offensichtlich korrekt und nicht marginal.

Ihr nächster Build könnte doppelt so schnell sein — zum halben Preis

Kostenlos starten. Der Wechsel zurück ist dieselbe eine Zeile — auch dieses Diff veröffentlichen wir.