repere
Limita de cache de 10 GB este adevăratul blocaj CI
Am instrumentat 40.000 de fluxuri de lucru. Comportamentul memoriei cache a prezis ora ceasului de perete mai bine decât numărul vCPU, iar majoritatea echipelor depășesc limita fără să observe vreodată.
{autor} · {rol} · {data} · {minute} {minuteLabel}
Există un mod de eroare în GitHub Actions care nu produce nicio eroare, nicio avertizare și nicio linie de jurnal. Depozitul dvs. traversează 10 GB de cache, intrările cele mai puțin utilizate recent încep să fie evacuate și, din acea zi, o parte din rulările dvs. încep în liniște.
Nimeni nu este trimis pentru asta. Construcția încă trece. Este doar mai lent, pentru totdeauna, și până când cineva investighează schimbarea are șase luni.
Ce am măsurat
Pe parcursul a 40.000 de rulări pe depozitele care s-au înscris, am înregistrat rata de accesare a memoriei cache, durata restaurării, dimensiunea runnerului și timpul total al ceasului de perete. Două lucruri au ieșit în evidență.
A doua constatare este cea mai acționabilă: sub aproximativ 80% rata de accesare a memoriei cache, adăugarea vCPU-urilor abia a mutat timpul total al conductei. Echipele cumpărau mașini mai mari pentru a compensa cache-urile reci, care este aproape de cea mai costisitoare modalitate de a rezolva această problemă.
Viteza de restabilire contează la fel de mult ca rata de lovituri
O memorie cache care durează patru minute pentru a restabili și salvează trei minute de lucru este o pierdere netă și va raporta o rată de accesare de 100% în timp ce vă pierde timp. Am văzut mai multe depozite exact în această stare.
Ce să faci în privința asta
- Măsurați dimensiunea totală a memoriei cache pe depozit - majoritatea echipelor nu s-au uitat niciodată
- Măsurați durata restaurării, nu doar rata de accesare
- Remediați cheile cache înainte de a cumpăra rulouri mai mari
- Dacă structural aveți peste 10 GB, capacul este problema și nicio cheie nu o va rezolva
Următorul tău build poate fi de două ori mai rapid, la jumătate de preț
Începe gratuit. Plecarea înseamnă aceeași linie, iar acel diff îl publicăm și noi.