oavsett om du kör en server för ett program eller bara din lokala dator, vill du att datorn ska köra sitt bästa. Det är därför du bör se till att övervaka datorns CPU, disk, och minnesanvändning. Övervakning saker som minnesanvändning och diskanvändning är faktiskt ganska lätt. Hur mycket diskutrymme har du kvar? Är hårddisken fragmenterad? Har du tillräckligt med RAM för de program du använder? Byter du regelbundet minne?
det är enkla frågor att svara på, och de är frågor du bör ställa., Men vissa frågor är mer komplicerade, särskilt när det gäller CPU-mätvärden. Visst, det finns enkla mått som övergripande CPU-användning. Men om du använder Linux har du mer esoteriska (och ibland mer användbara) mätvärden, som CPU-belastning. I det här inlägget kommer vi att prata om vad CPU-belastningen faktiskt betyder och hur du kan använda den för att optimera dina servrar.
CPU-belastning vs CPU-användning
det första att förstå är att CPU-belastning inte är samma sak som CPU-användning., Även om de kanske låter liknande, är de helt annorlunda. CPU-användning är en mätning, i procent, av hur mycket tid CPU spenderar aktivt beräkna något. Till exempel, om du hade ett program som krävde oavbruten processorkraft för 54 av de senaste 60 sekunderna, skulle din CPU-användning på en kärna vara 90%. Istället, om programmet bara krävs sex sekunder bearbetningstid på en kärna, skulle användningen vara 10%.
de flesta företag försöker hålla CPU-användningen av sina servrar så nära 100% som möjligt., De flesta servrar säljs av övergripande datorkraft, och om din server bara sitter vid 30% CPU-användning, betalar du för mycket processorkraft. Du kan nedgradera processorn till en lägre nivå, spara pengar och se ingen minskning av kvaliteten på serverns prestanda.
CPU-belastning
CPU-belastning är annorlunda. Istället för att mäta den procentandel av tiden som CPU fungerar mäter CPU-belastningen hur många program som använder eller väntar på en processorkärna på en gång. En helt tomgång processor skulle ha ETT lastvärde på 0., I vårt tidigare exempel skulle vi ha en minuts lasttider på .9 och .1, respektive. Det är ganska intuitivt. Men det som är ointuitivt om CPU-belastning är att ett värde på 1 inte nödvändigtvis är en fullastad mätning.
istället är vad som utgör ”full” CPU-belastning beroende av hur många operativsystemstrådar din CPU har. De flesta processorer dessa dagar utgör mer än bara en CPU-kärna, kör mer än bara en CPU-tråd. Om din CPU har fyra kärnor, är en CPU-belastning på 1 inte en fullastad CPU. Istället skulle det bara vara en fjärdedel laddad., Istället skulle din CPU-belastning anses vara full för din CPU om ditt lastvärde var 4, inte 1.
dechiffrera Linux CPU laster
köra ett program som visar Linux CPU belastning summor kan vara lite förvirrande först. Om du kör ett kommando som upptid eller topp kan du se ett CPU-belastningsvärde som ser ut som 1.68 0.55 5.91. Om du inte vet vad du letar efter, ser det ut som ljud. Tack och lov är det faktiskt ganska lätt att dechiffrera. Det finns tre värden här, och vi tittar på dem i följd.
det första värdet är 1,68. Detta är värdet av CPU-belastningen under sista minuten., Som vi nämnde tidigare är detta ett mått på hur många program som använde CPU-tid under sista minuten. Så under sista minuten på den här maskinen fanns det i genomsnitt 1,68-program antingen med CPU-bearbetningstid eller väntar på CPU-bearbetningstid. Om det här är en enkelgängad CPU betyder det att datorn är överbelastad. Användare väntar på att deras program ska köras på CPU: n och upplever försämrad prestanda. Om det istället är en dubbelkärnig dator eller en quad-core, kan användarna få CPU-tid lika snabbt som de behövde det, under sista minuten.,
det andra värdet är 0,55. Detta är mätningen under de senaste 5 minuterna. Som vi tidigare diskuterat innebär en mätning under 1 att CPU-enheten tillbringade en del av tiden i det fönstret helt tomgång. I det här fallet var CPU: n ledig i nästan hälften av tiden. Om vi optimerar vår CPU för att ständigt göra något, är det inte ett gott tecken.
det slutliga numret, 5.91, är en mätning av de senaste 15 minuterna. Om du använder en åtta-core CPU, då detta nummer är inte särskilt chockerande. Om du använder en dual-core CPU, betyder ett nummer som 5.91 att din CPU är mycket överbelastad., Användare väntar regelbundet på CPU-tid, och upplever förmodligen signifikant försämrad prestanda.
Unix vs Linux CPU laddar
om du är van vid att använda CPU-belastningsmätningen i Unix, kan några av dessa siffror verka ganska höga för dig. Det beror på att Unix och Linux mäter CPU-belastning annorlunda. Unix mäter CPU belastning uttryckligen som ett mått på program som aktivt använder eller väntar på CPU-behandling. Linux mäter saker lite annorlunda och förstår hur är nyckeln till bra systemadministration.,
Linux mäter CPU-belastning genom att titta på både program som för närvarande använder eller väntar på CPU-tid utöver program som väntar på tillstånd. Till exempel, ett program som väntar på en nätverksförfrågan, eller att ladda något från en disk, skulle inte räknas mot CPU belastning på Unix. På Linux gör det det. Oavsett om detta är ett bättre eller sämre tillvägagångssätt beror på ditt användningsfall. Om du vill mäta ingenting men övergripande CPU-användning, Unix ger ett bättre gränssnitt., Men om du har ett program som är låst i 30 sekunder som väntar på en nätverksförfrågan, kommer Linux att berätta det. Unix skulle aldrig komma över data alls.
Optimera CPU-laster
det finns ingen Silver bullet för att optimera dina CPU-laster. Det är en process som du behöver närma dig holistiskt. Ungefär som CPU-användning, när du är på en server som du vill vara nära 100%, men inte över. Ibland är processen att optimera dina CPU-laster ganska lätt. Kanske kommer din server bara någonsin att använda två trådar samtidigt., I så fall är optimering av serverbelastningar inte mer komplicerat än att ha en dual-core processor. Du kan behöva en snabbare processor för att se till att dessa program slutförs i tid, men du behöver aldrig mer än två kärnor.
de flesta system begränsar sig faktiskt inte till exakt två aktiva trådar. De flesta servrar är mycket mer komplicerade. Och en av de verkliga utmaningarna är att hålla antalet kärnor så låga som möjligt, eftersom det sparar pengar, utan att gå för låga och förnedrande användarupplevelser. Det kan vara att du behöver optimera koden din server körs., Ibland måste du bestämma hur mycket programtid som förbrukas genom att vänta på saker som databasfrågor. Det kan vara att du verkligen behöver upp kärnan räkna på din processor. Bottlenecked servrar kan ha ett antal orsaker, och kan fastställas på ett antal sätt.
hur är din CPU-belastning?
övervakning och optimering av din CPU-belastning är en viktig del av att få ut det mesta för ditt serverminne. Tyvärr är det också en tidskrävande, manuell process. Som noterat ger de flesta Linux-kommandon bara CPU-belastning för 15-minuters windows., Det är en bra sak; du skulle inte vilja windows mycket bredare än så. Du skulle ha svårt att få någon användbar information ur dem. Men att hålla ett öga på CPU-belastningen över rullande 15-minuters perioder är typ av huvudvärk.
lyckligtvis finns det bra verktyg för att övervaka dessa saker för dig. Till exempel kan Scalyr övervaka CPU-belastning bara genom att ta in några loggar. Du får inte bara en enkel numerisk utskrift., Istället får du en fin visuell som visar din totala CPU-belastning över tiden. Detta kan vara särskilt användbart, eftersom det hjälper dig att hitta specifika fönster som är mest krävande på din CPU. Optimera serverns prestanda innebär att förstå det i detalj, och inte bara på en hög nivå.
en del av att vara en bra systemadministratör innebär att förstå din server från alla håll. Att veta hur man tolkar CPU-belastning och hur man optimerar det är en viktig del av att maximera företagets serverinvestering., Innan du kan göra det måste du förstå vad din serverns CPU-belastning faktiskt är. Det finns ingen bättre dag än idag för att komma igång övervaka din server CPU belastning. Du kan börja formulera en plan för optimering idag.
det här inlägget skrevs av Eric Boersma. Eric är en mjukvaruutvecklare och utvecklingschef som har gjort allt från IT-säkerhet i läkemedel till att skriva underrättelseprogram för den amerikanska regeringen att bygga internationella utvecklingsteam för ideella organisationer., Han älskar att prata om de saker han lärt sig på vägen, och han tycker om att lyssna på och lära av andra också.