benchmarks
De cachelimiet van 10 GB is het echte CI-knelpunt
We hebben 40.000 workflowruns geïnstrumenteerd. Cachegedrag voorspelde de tijd van de wandklok beter dan het aantal vCPU's, en de meeste teams overschrijden de limiet zonder het ooit te merken.
{auteur} · {rol} · {datum} · {minuten} min leestijd
Er is een foutmodus in GitHub Actions die geen fout, geen waarschuwing en geen logregel produceert. Je repository overschrijdt de cache van 10 GB, de minst recent gebruikte vermeldingen worden uitgezet en vanaf die dag begint een deel van je runs stilletjes koud.
Niemand wordt hiervoor opgeroepen. De bouw gaat nog steeds door. Het is alleen langzamer, voor altijd, en tegen de tijd dat iemand de verandering onderzoekt, is deze zes maanden oud.
Wat we hebben gemeten
Bij de 40.000 uitvoeringen op opslagplaatsen die zich hiervoor hadden aangemeld, hebben we het cachetrefferpercentage, de herstelduur, de runnergrootte en de totale wandkloktijd geregistreerd. Twee dingen vielen op.
De tweede bevinding is de meest bruikbare: bij een cachetrefferpercentage van ongeveer 80% zorgde het toevoegen van vCPU's er nauwelijks voor dat de totale pijplijntijd werd verplaatst. Teams kochten grotere machines om koude caches te compenseren, wat bijna de duurste manier is om dat probleem op te lossen.
Herstelsnelheid is net zo belangrijk als het aantal treffers
Een cache die vier minuten nodig heeft om te herstellen en drie minuten werk bespaart, is een nettoverlies en rapporteert een trefferpercentage van 100% terwijl u tijd verliest. We hebben verschillende opslagplaatsen gezien die precies in deze staat verkeerden.
Wat eraan te doen
- Meet de totale cachegrootte per repository; de meeste teams hebben er nog nooit naar gekeken
- Meet de herstelduur, niet alleen de hitrate
- Herstel cachesleutels voordat u grotere hardlopers koopt
- Als je structureel meer dan 10 GB hebt, is de cap het probleem en kan geen enkele sleutel dit oplossen
Je volgende build kan twee keer zo snel zijn, voor de halve prijs
Begin gratis. Weggaan is dezelfde ene regel, en die diff publiceren we ook.