Understanding Linux CPU Load – când ar trebui să fie îngrijorat?

Andre Lewis iulie 28, 2019

s-ar putea să fie familiarizați cu mediile de încărcare Linux deja. Medii de încărcare sunt cele trei numere prezentate cu uptime și top comenzi – ei arata ca aceasta:

încărcare medie: 0.09, 0.05, 0.,01

majoritatea oamenilor au o idee despre ce înseamnă mediile de încărcare: cele trei numere reprezintă medii pe perioade progresiv mai lungi de timp (medii de unu, cinci și cincisprezece minute) și că numerele mai mici sunt mai bune. Numerele mai mari reprezintă o problemă sau o mașină supraîncărcată. Dar, care este pragul? Ce constituie valorile medii de încărcare” bune” și „rele”? Când ar trebui să fie preocupat de o valoare medie de încărcare, și când ar trebui să vă încăierare să-l repara ASAP?

În primul rând, un pic de fundal pe ceea ce înseamnă valorile medii de încărcare., Vom începe cu cel mai simplu caz: o mașină cu un singur procesor cu un singur nucleu.

analogia traficului

un procesor cu un singur nucleu este ca o singură bandă de trafic. Imaginați-vă că sunteți un operator de pod … uneori, podul este atât de ocupat, există mașini aliniate pentru a traversa. Vrei să spui oamenilor cum se mișcă traficul pe podul tău. O valoare decentă ar fi câte mașini așteaptă la un anumit moment. În cazul în care nu mașini sunt în așteptare, șoferii de intrare știu că pot conduce peste imediat. În cazul în care mașinile sunt susținute, șoferii știu că sunt în pentru întârzieri.,deci, operator de pod, ce sistem de numerotare ai de gând să folosești? Ce zici de:

  • 0.00 înseamnă că nu există trafic pe pod deloc. De fapt, între 0.00 și 1.00 înseamnă că nu există nici o rezervă, și o mașină care sosesc va merge doar pe dreapta.
  • 1.00 înseamnă că podul este exact la capacitate. Totul este încă bun, dar dacă traficul devine puțin mai greu, lucrurile vor încetini.
  • peste 1.00 înseamnă că există backup. Cât? Ei bine, 2.00 înseamnă că există două benzi în valoare de mașini total – o bandă în valoare de pe pod, și o bandă în valoare de așteptare. 3.,00 înseamnă că există trei benzi în valoare totală – o bandă în valoare de pe pod, și două benzi în valoare de așteptare. Etc.

aceasta este practic ceea ce este încărcarea procesorului. „Cars”sunt procese care utilizează o felie de timp CPU („crossing the bridge”) sau sunt puse în coadă pentru a utiliza CPU-ul. Unix se referă la aceasta ca lungimea run-queue: suma numărului de procese care rulează în prezent plus numărul care așteaptă (în coadă) să ruleze.la fel ca operatorul de pod, doriți ca mașinile/procesele dvs. să nu aștepte niciodată. Deci, încărcarea procesorului dvs. ar trebui să rămână în mod ideal sub 1.00., De asemenea, la fel ca operatorul de pod, sunteți încă în regulă dacă aveți niște vârfuri temporare peste 1.00 … dar când sunteți în mod constant peste 1.00, trebuie să vă faceți griji.

deci spui că sarcina ideală este 1.00?

Ei bine, nu chiar. Problema cu o sarcină de 1.00 este că nu aveți loc pentru cap. În practică, mulți sysadmini vor trage o linie la 0.70:

  • regula” trebuie să te uiți în ea”: 0.70 dacă media de încărcare rămâne peste> 0.70, este timpul să investigăm înainte ca lucrurile să se înrăutățească.

  • regula „remediați acest lucru acum”: 1.00., Dacă media de încărcare rămâne peste 1.00, găsiți problema și remediați-o acum. În caz contrar, te vei trezi în mijlocul nopții, și nu va fi distractiv.

  • ” Arrgh, este 3 AM WTF?”Regula generală: 5.0. Dacă media de încărcare este peste 5.00, ați putea avea probleme serioase, cutia dvs. este fie agățată, fie încetinită, iar acest lucru se va întâmpla (inexplicabil) în cel mai rău timp posibil, ca în mijlocul nopții sau când prezentați la o conferință. Nu-l lăsa să ajungă acolo.

Ce zici de multi-procesoare? Sarcina Mea spune 3.,00, dar lucrurile merg bine!

ai un sistem quad-procesor? Este încă sănătos, cu o sarcină de 3.00.

același lucru cu procesoarele: o încărcare de 1.00 este utilizarea procesorului 100% pe o cutie cu un singur nucleu. Pe o cutie dual-core, o sarcină de 2.00 este 100% utilizarea procesorului.

Multicore vs. multiprocesor

în timp ce suntem pe acest subiect, să vorbim despre multicore vs.multiprocesor. În scopuri de performanță, este o mașină cu un singur procesor dual-core practic echivalentă cu o mașină cu două procesoare cu un nucleu fiecare? Da. Aproximativ., Există o mulțime de subtilități aici cu privire la cantitatea de cache, frecvența de proces de transfer-off-uri între procesoare, etc. În ciuda acestor puncte mai fine, în scopul dimensionării valorii de încărcare a procesorului, numărul total de nuclee este ceea ce contează, indiferent de câte procesoare fizice sunt răspândite aceste nuclee.

ceea ce ne conduce la două noi reguli de bază:

  • regula „număr de nuclee = încărcare maximă”: pe un sistem multicore, sarcina dvs. nu trebuie să depășească numărul de nuclee disponibile.,

  • regula „miezuri este miezuri”: modul în care nucleele sunt răspândite pe procesoare nu contează. Două quad-miezuri = = patru dual-miezuri = = opt single-miezuri. Sunt toate cele opt nuclee pentru aceste scopuri.

, Aducând-O Acasă

Să aruncăm o privire la medii de încărcare de ieșire din uptime:

~ $ uptime
23:05 14 zile, 6:08, 7 utilizatori, medii de încărcare: 0.65 0.42 0.36

Acesta este un dual-core CPU, deci, avem o mulțime de spațiu. Nici nu mă voi gândi la asta până când încărcarea nu va ajunge și va rămâne peste 1.7 sau cam așa ceva.

acum, Ce zici de aceste trei numere? 0.,65 este media în ultimul minut, 0.42 este media în ultimele cinci minute, iar 0.36 este media în ultimele 15 minute. Ceea ce ne aduce la întrebarea:

Ce medie ar trebui să observ? Unu, cinci sau 15 minute?

pentru numerele despre care am vorbit (1.00 = fix it now, etc), ar trebui să vă uitați la mediile de cinci sau 15 minute. Sincer, dacă caseta dvs. atinge peste 1.0 în media de un minut, sunteți încă bine. Atunci când media de 15 minute merge la nord de 1.0 și rămâne acolo, trebuie să vă fixați., (evident, după cum am aflat, ajustați aceste numere la numărul de nuclee de procesor pe care le are sistemul dvs.).

deci # de nuclee este important pentru interpretarea mediilor de încărcare … de unde știu câte nuclee are sistemul meu?

cat /proc/cpuinfo pentru a obține informații despre fiecare procesor din sistemul dvs. Notă: nu este disponibil pe OSX, Google pentru alternative. Pentru a obține doar un număr, rulați-l prin grep și numărul de cuvinte: grep 'model name' /proc/cpuinfo | wc -l

Mai multe servere? Sau cod mai rapid?

adăugarea serverelor poate fi un ajutor de bandă pentru codul lent., Scout APM vă ajută să găsiți și să remediați codul dvs. ineficient și costisitor. Identificăm automat apelurile SQL N+1, umflarea memoriei și alte probleme legate de cod, astfel încât să puteți petrece mai puțin timp de depanare și mai mult timp de programare.

gata pentru a optimiza site-ul dvs.? Înscrieți-vă pentru o încercare gratuită.

mai mult lectură

  • Wikipedia-o explicație bună, scurtă a mediei de încărcare; merge un pic mai adânc în matematică
  • Linux Journal – articol foarte bine scris, merge mai adânc decât acest post sau intrarea wikipedia.,

mai multe despre performanța Linux

  • înțelegerea discului I / o – când ar trebui să vă faceți griji?
  • determinarea memoriei libere pe Linux

Abonați-vă la fluxul RSS sau urmați-ne pe Twitter pentru mai multe informații despre performanța Linux.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *