Olika metoder för beräkning av belastning
Innan vi dyker in i Linux-belastningsmedelvärden måste vi utforska de olika sätten som belastningen beräknas och ta itu med den vanligaste mätningen av CPU-belastningen - en procent.
Windows beräknar belastningen annorlunda än Linux, och eftersom Windows historiskt sett har varit mer populärt på skrivbordet, förstås Windows-definitionen av belastning i allmänhet av de flesta datoranvändare. De flesta Windows-användare har sett systembelastningen i Aktivitetshanteraren visas som en procentsats från 0% till 100%.
I Windows härleds detta genom att undersöka hur ”upptagen” System tomgångsprocess är och använder det inversa för att representera systembelastningen. Om till exempel ledig tråd kör 99% av tiden skulle CPU-belastningen i Windows vara 1%. Detta värde är lätt att förstå men ger mindre övergripande detaljer om systemets verkliga status.
I Linux representeras belastningsgenomsnittet istället av ett decimaltal som börjar på 0.00. Värdet kan grovt definieras som antalet processer under den senaste minuten som fick vänta på sin tur för körning. Till skillnad från Windows är Linux-belastningens genomsnitt inte en omedelbar mätning. Belastningen ges i tre värden - genomsnittet på en minut, genomsnittet på fem minuter och genomsnittet på femton minuter.
Förstå belastningsgenomsnitt i Linux
Till en början verkar detta extra detaljlager onödigt om du bara vill veta det aktuella läget för CPU-belastning i ditt system. Men eftersom medelvärdet för tre tidsperioder ges, snarare än en omedelbar mätning, kan du få en mer fullständig uppfattning om förändringen av systembelastningen över tiden i en enda blick på tre siffror
Att visa lastgenomsnittet är enkelt. På kommandoraden kan du använda en mängd olika kommandon. Jag använder helt enkelt kommandot "w":
root @ virgo [~] # w21:08:43 upp 38 dagar, 4:34, 4 användare, belastningsmedelvärde: 3.11, 2.75, 2.70
Resten av kommandot visar vem som är inloggad och vad de kör, men för våra ändamål är denna information irrelevant så jag har klippt den från ovanstående skärm.
I ett idealiskt system ska ingen process hållas uppe av en annan process (eller tråd) utan i ett enda processorsystem, detta inträffar när lasten går över 1.00.
Orden ”enda processorsystem” är oerhört viktiga här. Om du inte kör en gammal dator har din dator antagligen flera CPU-kärnor. I maskinen jag är på har jag 16 kärnor:
root @ virgo [~] # nproc16
I det här fallet är ett lastgenomsnitt på 3.11 är inte alls alarmerande. Det betyder helt enkelt att lite mer än tre processer var redo att köras och CPU-kärnor var närvarande för att hantera deras körning. På detta specifika system måste belastningen nå 16 för att kunna betraktas som "100%".
För att översätta detta till en procentbaserad systembelastning kan du använda det här enkla, om inte stumt, kommandot:
cat / proc / loadavg | klipp -c 1-4 | eko "skala = 2; ($ (Dessa kommandosekvenser isolerar 1 minuts medelvärde via klippning och ekar det, dividerat med antalet CPU-kärnor, via bc, en kommandoradsräknare, för att härleda procentsatsen.Detta värde är inte vetenskapligt men ger en ungefärlig approximation av CPU-belastningen i procent.
En minut att lära sig, en livstid att behärska
I föregående avsnitt lade jag exemplet “100%” av en belastning på 16.0 på ett 16 CPU-kärnsystem i citat eftersom beräkningen av belastningen i Linux är lite mer otydlig än Windows. Systemadministratören måste komma ihåg att:
- Belastning uttrycks i vänteprocesser och trådar
- Det är inte ett momentant värde, snarare ett genomsnitt och
- Tolkningen måste innehålla antalet CPU-kärnor och
- Kan överblåsa I / O-väntan som en disk läser
På grund av detta är det inte helt en empirisk sak att ta hand om CPU-belastning på ett Linux-system. Även om det vore så är inte CPU-belastning en tillräcklig mätning av det totala systemresursutnyttjandet. Som sådan kommer en erfaren Linux-administratör att överväga CPU-belastning i kombination med andra värden som I / O-väntan och procentsatsen av kärnan kontra systemtiden.
I / O Vänta
I / O-väntan ses lättast med kommandot "överst":
I skärmdumpen ovan har jag markerat I / O-väntan. Det här är en procentandel av tiden som CPU: n väntade på att in- eller utgångskommandon skulle slutföras. Detta är vanligtvis ett tecken på hög diskaktivitet. Även om en hög vänteprocent inte ensam kan försämra CPU-bundna uppgifter, kommer det att minska I / O-prestanda för andra uppgifter och få systemet att känna sig trögt.
Hög I / O-vänta utan någon uppenbar orsak kan indikera ett problem med en skiva. Använd kommandot “dmesg” för att se om några fel har inträffat.
Kärna vs. System tid
Ovan markerade värden representerar användarens och kärnans (system) tid. Detta är en fördelning av den totala förbrukningen av CPU-tid för användare (i.e. applikationer osv.) och kärnan (i.e. interaktion med systemenheter). Högre användartid indikerar mer CPU-användning av program där högre kärntid indikerar mer bearbetning på systemnivå.
En ganska genomsnittlig belastning
Att lära sig förhållandet mellan belastningsmedelvärde och faktisk systemprestanda tar tid, men innan lång tid ser du en tydlig korrelation. Beväpnad med detaljerna i systemprestandamätvärdena kommer du att kunna fatta bättre beslut om hårdvaruuppgraderingar och programresursanvändning.