Explicații · patru
Cinci coloane apar în majoritatea tabelelor noastre. Iată ce măsoară fiecare, de ce merită publicată, și cam cum arată o valoare bună sau proastă pe o mașină pe care chiar o ai.
Cifra principală
Cronometrul pornește când sarcina este adăugată și se oprește când conținutul finit există pe disc, verificat și extras. Nu când se termină descărcarea, și nu când clientul se declară gata.
Este singura cifră care corespunde cu ceva ce trăiești tu. Un client poate termina descărcarea repede și apoi să petreacă un minut verificând și dezarhivând, iar de unde stai tu acel minut face parte din așteptare. Măsurarea doar a descărcării ar avantaja clienții care își fac treaba după aceea, adică pe cei mai mulți.
Este și motivul pentru care arhitectura noastră pare neobișnuită în aceste tabele. Verificăm fiecare bucată pe măsură ce sosește și dezarhivăm în timp ce descărcarea încă rulează, așa că atunci când aterizează ultimul articol mai rămâne foarte puțin de făcut. Ceilalți clienți depun mai întâi toată postarea pe disc, apoi o verifică, apoi o dezarhivează, în trei etape succesive. La o sarcină ușoară diferența este modestă. La una mare sau deteriorată este cea mai mare parte a rezultatului.
Cea pe care lumea o citește greșit
Cea mai mare cantitate de memorie pe care programul a ținut-o în orice moment al sarcinii. RSS vine de la resident set size, adică pur și simplu memoria aflată efectiv în RAM, nu promisă sau rezervată.
Mai mult nu înseamnă automat mai rău, iar mai puțin nu înseamnă automat mai bine. Memoria se cheltuiește pentru a evita ceva mai scump, de obicei citirea acelorași date de pe disc de două ori. Întrebarea care merită pusă este dacă acea cheltuială cumpără ceva și dacă este mărginită.
Mărginită este cuvântul important. Un client a cărui memorie crește odată cu dimensiunea sarcinii va întâlni până la urmă o sarcină pe care nu o poate termina pe mașina ta, iar eșecul vine ca folosire a spațiului de swap sau ca proces ucis, nu ca mesaj politicos. Noi ținem un buget și rămânem în el, motiv pentru care putem trece o sarcină de 190 GB printr-o mașină pe care ne sunt disponibili aproximativ 1.1 GB de memorie. O cifră ca 9.3 GB la o sarcină de 190 GB nu este doar mare, are altă formă: crește odată cu munca.
Acolo unde propria noastră memorie urcă, încercăm să spunem ce a cumpărat. La postările grav deteriorate, versiunea actuală ține datele de paritate în memorie pentru a repara imediat în loc să aducă mai multe ulterior, ceea ce duce memoria de vârf de la aproximativ 0.8 GB la aproximativ 1.3 GB și economisește vreo zece secunde. La o postare nedeteriorată acea cheltuială nu are loc și cifra este 0.24 GB.
Indicatorul de consum
Timpul total de procesor consumat de întregul program, însumat pe toate nucleele. Este o măsură a muncii făcute, nu a timpului scurs, deci poate fi mult mai mare decât cronometrul.
Dacă o sarcină durează 100 de secunde și raportează 1,600 de secunde de procesor, aproximativ șaisprezece nuclee au fost ocupate pe toată durata rulării. Contează din trei motive practice: este căldură, este electricitate, iar pe o mașină care face altceva în același timp este concurență pentru resurse. Un client care termină într-un timp rezonabil saturând fiecare nucleu nu a fost eficient, a fost scump.
În această coloană apar cele mai mari diferențe de pe tot situl, mai mari decât la orice timp de sosire. Pentru o ieșire identică octet cu octet pe aceeași postare deteriorată, am măsurat o împrăștiere de treizeci de ori în secundele de procesor între clienți. Merită verificat înainte de a presupune că doi clienți care termină la câteva secunde unul de altul fac o cantitate comparabilă de muncă.
Cele două coloane de disc
Vârful de disc este spațiul suplimentar maxim de care a avut nevoie sarcina într-un singur moment. I/O pe volum este cantitatea totală de date citite și scrise pentru a ajunge acolo. Răspund la întrebări diferite.
Vârful de disc este o constrângere dură. Decide dacă sarcina poate rula, pur și simplu. Majoritatea clienților scriu postarea completă pe disc și apoi dezarhivează o a doua copie alături, deci au nevoie de aproximativ dublul conținutului în spațiu liber. Pentru o sarcină de 190 GB asta înseamnă aproximativ 313 GB liberi înainte să începi, față de aproximativ 157 GB la noi, fiindcă dezarhivăm în timp ce descărcăm și nu materializăm niciodată volumele arhivei. Dacă discul tău nu poate ține dublul sarcinii, acea diferență nu este un procent, este dacă descărcarea are loc sau nu.
I/O pe volum înseamnă uzură și timp. Scrierea postării, recitirea ei pentru verificare, recitirea ei încă o dată pentru dezarhivare și scrierea ieșirii înseamnă patru treceri peste date. A o face într-o singură trecere înseamnă aproximativ o treime din trafic, ceea ce pe un disc SSD înseamnă durată de viață, iar pe un disc mai lent este adesea adevăratul gât de sticlă în locul rețelei.
O notă despre cum citim aceste două cifre, fiindcă ne-a prins pe picior greșit și te-ar putea prinde și pe tine citind tabelele noastre. Ambele vin din contoare care acoperă tot discul, nu un singur program. Asta le face un control excelent pentru a vedea dacă o măsurătoare a fost contaminată de altceva care rula, și înseamnă că un număr care pare imposibil de obicei chiar este: o sarcină de 6.5 GB care raportează 144 GB de trafic pe disc nu este un client care se comportă ciudat, sunt două sarcini care împart o mașină.
Cum se citește un tabel
Tabelele propriu-zise, cu versiunea și data alături de fiecare, se află pe pagina de benchmark-uri, inclusiv rundele pe care le pierdem.