Razumijevanje prosjeka opterećenja na Linuxu

Understanding Load Average Linux



Prosječno opterećenje je mjerenje količine posla u odnosu na slobodne cikluse procesora dostupnih na sistemskom procesoru. U ovom članku ću definirati pojam, pokazati kako Linux izračunava ovu vrijednost, a zatim pružiti uvid u to kako tumačiti opterećenje sustava.

Prije nego što zaronimo u prosjeke opterećenja Linuxa, moramo istražiti različite načine izračunavanja opterećenja i riješiti najčešće mjerenje opterećenja procesora - postotak.







Windows izračunava opterećenje drugačije od Linuxa, a budući da je Windows povijesno bio popularniji na radnoj površini, većina korisnika računala općenito razumije definiciju opterećenja u sustavu Windows. Većina korisnika Windowsa vidjela je da je opterećenje sustava u upravitelju zadataka prikazano kao postotak u rasponu od 0% do 100%.



U sustavu Windows to se dobiva ispitivanjem koliko je zauzet Postupak mirovanja sustava je i koristeći inverz za predstavljanje opterećenja sustava. Na primjer, ako se prazna nit izvršava 99% vremena, opterećenje procesora u sustavu Windows bilo bi 1%. Ova je vrijednost lako razumljiva, ali daje manje općih detalja o stvarnom statusu sustava.



U Linuxu je prosjek učitavanja umjesto toga predstavljen decimalnim brojem koji počinje od 0,00. Vrijednost se može grubo definirati kao broj procesa u posljednjoj minuti koji su morali čekati svoj red za izvršenje. Za razliku od Windowsa, prosjek opterećenja Linuxa nije trenutno mjerenje. Opterećenje se daje u tri vrijednosti - jednominutni prosjek, petominutni prosjek i petnaestominutni prosjek.





Razumijevanje prosjeka opterećenja u Linuxu

U početku se čini da ovaj dodatni sloj detalja nije potreban ako jednostavno želite znati trenutno stanje opterećenja CPU -a u vašem sustavu. No, budući da su dati prosjeci tri vremenska razdoblja, a ne trenutno mjerenje, možete dobiti potpuniju predodžbu o promjeni opterećenja sustava tijekom vremena jednim pogledom na tri broja

Prikaz prosjeka opterećenja jednostavan je. U naredbenom retku možete koristiti različite naredbe. Jednostavno koristim naredbu w:



korijen@Djevica[~]# in
dvadeset i jedan: 08:43gore38dana,4:3. 4,4 korisnika, prosječno opterećenje:3.11,2,75,2,70

Ostatak naredbe prikazat će tko je prijavljen i što izvršava, ali za naše potrebe ove su informacije nevažne pa sam ih izrezao s gornjeg zaslona.

U idealnom sustavu nijedan proces ne smije biti zadržan drugim procesom (ili niti), ali u jednom procesorskom sustavu, to se događa kada opterećenje pređe 1,00.

Riječi jednoprocesorski sustav ovdje su nevjerojatno važne. Osim ako ne koristite staro računalo, vaš stroj vjerojatno ima više CPU jezgri. U stroju na kojem se nalazim imam 16 jezgri:

korijen@Djevica[~]# nproc
16

U ovom slučaju prosjek opterećenja od 3,11 uopće nije alarmantan. To jednostavno znači da je nešto više od tri procesa bilo spremno za izvođenje i da su prisutne CPU jezgre za rukovanje njihovim izvršavanjem. Na ovom sustavu opterećenje bi moralo doseći 16 da bi se smatralo 100%.

Da biste to preveli u postotak opterećenja sustava, mogli biste upotrijebiti ovu jednostavnu, ako ne i tupu naredbu:

mačka /posto/loadavg| izrezati -c 1-4 | izbaciti 'ljestvica = 2; ($ (/`nproc`) * 100 ' | prije Krista -

Ove naredbene sekvence izoliraju prosjek od 1 minute putem izrezivanja i odražavaju ga, podijeljeno s brojem jezgri procesora, putem bc, kalkulatora naredbenog retka, kako bi se izveo postotak.

Ova vrijednost nikako nije znanstvena, ali daje grubu aproksimaciju CPU opterećenja u postocima.

Minuta za učenje, cijeli život za savladavanje

U prethodnom odjeljku stavio sam 100% primjer opterećenja od 16,0 na 16 -jezgrenom jezgru sustava pod navodnicima jer je izračun opterećenja u Linuxu malo maglovitiji od Windows -a. Administrator sustava mora imati na umu sljedeće:

  • Opterećenje se izražava u procesima čekanja i nitima
  • To nije trenutna vrijednost, nego prosjek i
  • Njegovo tumačenje mora uključivati ​​broj CPU jezgri i
  • Može pretjerano napuhati I/O čekanje poput čitanja diska

Zbog toga, rješavanje opterećenja CPU -a na Linux sustavu nije u potpunosti empirijsko pitanje. Čak i da jest, samo opterećenje procesora nije odgovarajuće mjerenje ukupne iskorištenosti resursa sustava. Kao takav, iskusni administrator Linuxa razmotrit će opterećenje procesora u skladu s drugim vrijednostima, poput čekanja na I/O i postotka jezgre u odnosu na sistemsko vrijeme.

I/O Pričekajte

I/O čekanje najlakše se vidi pomoću naredbe top:

Na gornjoj snimci zaslona istaknuo sam vrijednost čekanja za I/O. Ovo je postotak vremena koje je CPU čekao na ulazne ili izlazne naredbe da se završi. To obično ukazuje na visoku aktivnost diska. Iako sam visoki postotak čekanja ne može značajno degradirati zadatke vezane za CPU, to će smanjiti performanse I/O za druge zadatke i učinit će sustav tromim.

Čekanje visokog I/O bez ikakvog očitog uzroka može ukazivati ​​na problem s diskom. Pomoću naredbe dmesg provjerite jesu li se dogodile greške.

Kernel vs System Time

Gore istaknute vrijednosti predstavljaju vrijeme korisnika i jezgre (sustava). Ovo je analiza ukupne potrošnje CPU vremena od strane korisnika (tj. Aplikacija itd.) I kernela (tj. Interakcije sa uređajima sustava). Veće vrijeme korisnika označit će veću potrošnju procesora od strane programa gdje će više vremena jezgre ukazivati ​​na više obrade na razini sustava.

Prilično prosječno opterećenje

Za učenje odnosa prosječnog opterećenja i stvarnih performansi sustava potrebno je vrijeme, no uskoro ćete vidjeti jasnu korelaciju. Naoružani zamršenim mjerilima performansi sustava, moći ćete donositi bolje odluke o nadogradnji hardvera i korištenju programskih resursa.