Forstå belastningsgjennomsnitt på Linux

Forstå belastningsgjennomsnitt på Linux
Lastegjennomsnitt er en måling av mengden arbeid kontra gratis CPU -sykluser tilgjengelig på en systemprosessor. I denne artikkelen vil jeg definere begrepet, demonstrere hvordan Linux beregner denne verdien, og deretter gi innsikt i hvordan man tolker systembelastningen.

Ulike metoder for å beregne belastning

Før vi dykker ned i Linux -belastningsgjennomsnitt, må vi utforske de forskjellige måtene belastningen beregnes og adresserer den vanligste målingen av CPU -belastning - en prosentandel.

Windows beregner belastning annerledes enn Linux, og siden Windows har vært historisk mer populært på skrivebordet, forstås Windows -definisjonen av belastningen generelt av de fleste databrukere. De fleste Windows -brukere har sett systembelastningen i oppgavelederen som ble vist i prosent fra 0% til 100%.

I vinduer er dette avledet ved å undersøke hvor "travelt" Systemets tomgangsprosess er og bruker det inverse for å representere systembelastningen. For eksempel, hvis tomgangstråden utfører 99% av tiden, ville CPU -belastning i vinduer være 1%. Denne verdien er lett å forstå, men gir mindre generelle detaljer om systemets sanne status.

I Linux er belastningsgjennomsnittet i stedet representert med et desimaltall som starter 0.00. Verdien kan grovt defineres som antall prosesser i løpet av det siste øyeblikket som måtte vente på sin tur på henrettelse. I motsetning til Windows, er ikke Linux -belastningsgjennomsnittet en øyeblikkelig måling. Belastningen er gitt i tre verdier - gjennomsnittet av ett minutt, gjennomsnittet på fem minutter og det femten minutters gjennomsnittet.

Forstå belastningsgjennomsnitt i Linux

Til å begynne med virker dette ekstra laget med detaljer unødvendig hvis du bare vil vite den nåværende tilstanden til CPU -belastningen i systemet ditt. Men siden gjennomsnittet av tre tidsperioder er gitt, i stedet for en øyeblikkelig måling, kan du få en mer fullstendig ide om endring av systembelastning over tid i et enkelt blikk på tre tall

Å vise belastningsgjennomsnittet er enkelt. På kommandolinjen kan du bruke en rekke kommandoer. Jeg bruker ganske enkelt “W” -kommandoen:

root@virgo [~]# w
21:08:43 opp 38 dager, 4:34, 4 brukere, belastningsgjennomsnitt: 3.11, 2.75, 2.70

Resten av kommandoen vil vise hvem som er logget på og hva de utfører, men for våre formål er denne informasjonen uten betydning, så jeg har klippet den ut fra skjermen ovenfor.

I et ideelt system skal ingen prosess holdes oppe av en annen prosess (eller tråd), men I et enkelt prosessorsystem, Dette skjer når lasten går over 1.00.

Ordene “enkelt prosessorsystem” er utrolig viktige her. Med mindre du kjører en gammel datamaskin, har maskinen din sannsynligvis flere CPU -kjerner. I maskinen jeg er på, har jeg 16 kjerner:

root@virgo [~]# nproc
16

I dette tilfellet et belastningsgjennomsnitt på 3.11 er ikke alarmerende i det hele tatt. Det betyr ganske enkelt at litt mer enn tre prosesser var klare til å utføre og CPU -kjerner var til stede for å håndtere utførelsen. På dette spesielle systemet må belastningen nå 16 for å bli vurdert til "100%".

For å oversette dette til en prosentbasert systembelastning, kan du bruke denne enkle, om ikke stump, kommando:

Cat /Proc /Loadavg | Cut -C 1-4 | ekko "skala = 2; ($ (

Denne kommandoen sekvenser isolerer det 1-minutters gjennomsnittet via kutt og gjenspeiler det, delt på antall CPU-kjerner, gjennom BC, en kommandolinjekalkulator, for å utlede prosentandelen.

Denne verdien er på ingen måte vitenskapelig, men gir en grov tilnærming av CPU -belastningen i prosent.

Et øyeblikk å lære, en levetid å mestre

I forrige seksjon la jeg “100%” -eksemplet på en belastning på 16.0 på et 16 CPU -kjernesystem i sitater fordi beregningen av belastningen i Linux er litt mer nebulous enn Windows. Systemadministratoren må huske på at:

  • Belastning uttrykkes i venteprosesser og tråder
  • Det er ikke en øyeblikkelig verdi, snarere et gjennomsnitt, og
  • Det er tolkningen må omfatte antall CPU -kjerner, og
  • Kan overvirke I/O venter som diskleser

På grunn av dette er det ikke helt en empirisk sak å få et håndtak av CPU -belastning på et Linux -system. Selv om det var det, er ikke CPU -belastning alene en tilstrekkelig måling av den generelle systemressursutnyttelsen. Som sådan vil en erfaren Linux -administrator vurdere CPU -belastning i samsvar med andre verdier som I/O Wait og prosentandelen av kjerne versus systemtid.

I/O Vent

I/O Vent blir lettest sett via “TOPP” -kommandoen:

På skjermdumpen ovenfor har jeg fremhevet I/O -venteverdien. Dette er en prosentandel av tiden som CPU ventet på inngangs- eller utgangskommandoer for å fullføre. Dette er vanligvis en indikasjon på høy diskaktivitet. Selv om en høy ventetid alene kanskje ikke nedbryter CPU-bundne oppgaver betydelig, vil den redusere I/O-ytelsen for andre oppgaver og vil få systemet til å føles tregt.

Høy I/O -vent uten noen åpenbar årsak kan indikere et problem med en disk. Bruk kommandoen “DMESG” for å se om det har oppstått noen feil.

Kjerne vs. System tid

Ovennevnte uthevede verdier representerer bruker- og kjernen (system) tid. Dette er en oversikt over det totale forbruket av CPU -tid av brukere (i.e. applikasjoner osv.) og kjernen (jeg.e. interaksjon med systemenheter). Høyere brukertid vil indikere mer CPU-bruk etter programmer der høyere kjernetid vil indikere mer systemnivåbehandling.

En ganske gjennomsnittlig belastning

Å lære forholdet mellom belastningsgjennomsnitt til faktisk systemytelse tar tid, men før lang tid vil du se en tydelig korrelasjon. Bevæpnet med vanskeligheter med systemytelsesmålinger, vil du kunne ta bedre beslutninger om maskinvareoppgraderinger og programressursutnyttelse.