introducerar runqstat – New Linux Run Queue & Load Average Tool

Få real CPU Load Average på Linux

linuxbelastningsgenomsnittet är lika gammalt som kullarna, och ungefär lika förvirrande, eftersom få ingenjörer även kan berätta vad det egentligen är eller hur det beräknas.,
lyckligtvis har Brendon Gregg en bra sammanfattning inklusive dess historia, vid Linux – Belastningsmedelvärden: lösa mysteriet, där du kan se kärnproblemet:

Linux-belastningsmedel innehåller i/o

det är så enkelt som det. Till skillnad från alla andra UNIX-liknande system (Solaris, AIX, etc.), Linux räknar både löpande / runnable processer och blockerade (avbrottsfri) processer, som vanligtvis väntar på I / O. det här är en dålig sak och går till en arkaisk 24-årig patch som Brendon hittade.

Varför bryr vi oss?,

Vi bryr oss eftersom på alla system för blandad användning (med både CPU och I / O) är det resulterande Belastningsgenomsnittet mycket variabelt och ofta värdelöst. Detta kan vara särskilt dåligt med mycket gängade system som kan orsaka I/O, så det är lätt att ha dussintals eller hundratals av dem blockerade på långsamma skivor.

vad de flesta av oss verkligen vill ha är det traditionella Unix-måttet på Belastningsgenomsnittet, vilket är det genomsnittliga antalet körbara processer som är genomsnittliga över tiden. Detta berättar hur laddat vårt system är, och vi kan titta på kön som ett mått på mättnad, dvs, en kontinuerlig CPU kö innebär w är vi överbelastade.

Så, hur kan vi få det?

vi vill verkligen att CPU Run Kölängden, som blir> 0 när processer måste vänta på CPU. Men det är svårt att få exakt, och Linux-kärnan är inte särskilt vänlig på detta område.

först, vad Linux folk kallar körkön inkluderar köruppgifter, så det är inte riktigt kön, men kön plus vad som körs. Det är förvirrande, och därmed måste du subtrahera antalet processorer för att få en känsla av den verkliga kön.,

flera verktyg kan få den aktuella momentana köstorleken. Detta är vad vmstat” r ”- kolumnen och” sar-q ” visar; båda får detta från /proc/stat procs_running metric.

problemet är att detta är ett momentant tal, så det är väldigt bullrigt och måste vara i genomsnitt för att få användbara data, men kärnan kommer inte att göra det för dig. Helst skulle det finnas en kärnutgång i /proc endast för CPU och I / O Bara ladda medelvärden, men ingen har skapat detta ännu.,

Så vi behöver ett verktyg som försöker efterlikna hur load Average fungerar, genom att snabbt sampla denna instant run köstorlek, och i genomsnitt detta över tiden.

introducerar runqstat

runqstat gör det här — det är ett enkelt kommandoradsverktyg skrivet I Go som standardprover denna köstorlek varje 10ms och genomsnitt detta över en sekund. Målet är ett stabilt och korrekt mått på hur upptagen systemet är.,
det innehåller alternativ för att ändra samplingsfrekvensen och genomsnittstiden, plus att subtrahera antalet processorer så att du bara kan se den faktiska köstorleken om du vill.

det har också möjlighet att beräkna det genomsnittliga blockerade antalet, vilket i teorin kan du subtrahera från Belastningsgenomsnittet för att få en annan bild av CPU-mättnaden (och för att se hur mycket problembelastningsmedelvärde som orsakar dig).

med det här verktyget har ops-lag äntligen ett bra sätt att övervaka deras Linux-servrar mättnad.

hitta den på Github-runqstat

Share

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *