subota, 20 aprila, 2024
Kako da...?

Administracija linuks sistema – Praćenje performansi sistema (1. deo)

Autor: Mihajlo Bogdanović

Uvod

Svaki računar na svetu ima svog administratora sistema. Po definiciji administrator GNU/Linux sistema je osoba koja ima potpun pristup, odnosno osoba koja je superkorisnik (root). Između ostalih dužnosti, administrator treba da ima uvid u rad svog sistema. U narednom delu ovog teksta videćemo nekoliko osnovnih naredbi/alatki (komandi/programa) za nadgledanje i praćenje performansi GNU/Linux sistema. To bi činile sledeće oblasti: opšte opterećenje sistema, nadgledanje aktivnih procesa, zauzeće sistemske memorije, zauzeće diska sa njegovim performansama i nadgledanje rada u mreži našeg GNU/Linux sistema.

Opšte stanje sistema

uptime

Da bi ste stekli izvestan utisak o opštem stanju performansi sistema možete koristiti komandu uptime

Primer

  bash-4.1$ uptime 15:39:11 up  3:13,  3 users,  load average: 0.08, 0.03, 0.05

Komanda uptime će pokazati koliko je korisnika prijavljeno i koliko je prosečno opterećenje sistema tokom poslednjih 1, 5 i 15 minuta. Kao što se može videti na primeru, opterećenje tokom poslednjeg minuta bilo je 0.08, tokom poslednjih pet minuta 0.03 i tokom poslednjih petnaest minuta 0.05. Ipak je ovo jako “grub” prikaz opterećenosti sistema.

sar

Komanda sar je skraćenica od system activity report (izveštaj o aktivnosti sistema). Za razliku od uptime, komanda sar daje mnogo pouzdanije podatke.

Primer

Navedena naredba nalaže komandi sar da u intervalima od broja zadatih sekundi (u ovom slučaju pet sekundi) uzme odgovarajući broj uzoraka (takođe u ovom slučaju pet uzoraka). Opcijom -u postižemo da komanda sar prikaže iskorišćenje procesora.

%user – označava procenat procesorskog vremena utrošenog na izvršavanje korisničkog koda, uglavnom programa
%nice – je procenat procesorskog vremena utrošenog na izvršavanje korisničkog koda promenjenog prioriteta
%system – označava vreme utrošeno na izvršavanje sistemskog koda (kernel i pozivi sistemu)
%idle – pokazuje koliko vremena procesor nije ništa radio

Više informacija možete naći u datoteci/zapisniku /usr/lib/sa/sadc.

vi /usr/lib/sa/sadc

xload

Ako vam je tako lakše opterećenje sistema možete pratiti preko programa xload koji daje informacije u grafičkom obliku.

  xload 

Nadgledanje aktivnih procesa

Komanda ps je odlično oruđe za nadgledanje aktiviranih procesa vašeg sistema. Najkorisnija je u kombinaciji sa opcijom -el (ps -el). Opcija -e izlistava podatke o svakom aktiviranom procesu dok opcija -l pravi dugačak listing sa podacima.

Primer

Polje opis
F – sadrži zbir jedne ili više heksadecimalnih vrednosti koje opisuju aktuelno stanje procesa
S – prikazuje aktuelno stanje procesa po principu: izvršava se, privremeno zaustavljen itd…)
UID – prikazuje identifikator vlasnika procesa
PID – prikazuje identifikator procesa
PPID – prikazuje identifikator “starijeg” procesa
C – prikazuje zauzeće procesora procesom
PRI – prikazuje prioritet procesa po principu veći broj veći prioritet
NI – prikazuje izmenu prioriteta procesa pomoću komande nice po principu veći broj označava niži prioritet
SZ – prikazuje količinu virtuelne memorije potrebne za izvršavanje procesa
TTY – označava terminal sa kojeg je proces pokrenut
TIME – prikazuje ukupno procesorsko vreme u satima i minutima utrošeno na izvršavanje procesa
CMD – prikazuje komandu koja je pokrenula proces

Zauzeće memorije

Pomoću komande vmstat možemo ispitati podsistem virtuelne memorije i pronaći eventualni problem. Komanda vmstat prikazuje statistiku korišćenja podsistema virtuelne memorije, opterećenje procesora i podatke o aktivnosti diska i procesora. Opšti oblik te naredbe je

  vmstat [interval] [broj]

Komanda vmstat u intervalima (zadatim u sekundama) uzima odgovarajući broj uzoraka i rezultate prikazuje u standardnom izlaznom toku

Dobijeni rezultati su naizgled teško čitljivi. Prvi red svakog izveštaja komande vmstat prikazuje samo zbirne informacije. Sledeći redovi prikazuju informacije koje možemo da iskoristimo za otkrivanje eventualnog problema sa memorijom.

polje procs
r – broj procesa spremnih za izvršavanje
b – broj zaustavljenih procesa

polje memory
swpd – količina korišćene virtuelne memorije u kilobajtima
free – količina nedodeljene memorije u kilobajtima
buff – količina međumemorije (engl. buffer) u kilobajtima
cache – količina memorijske ostave (engl. cache) u kilobajtima

polje swap
si – brzina prenosa podataka iz virtuelne memorije u radnu memoriju u KB/s
so – brzina prenosa podataka iz radne u virtuelnu memoriju u KB/s

polje io
bi – broj blokova podataka zapisanih u sekundi na ulazno-izlazni uređaj
bo – broj blokova podataka pročitanih u sekundi sa ulazno-izlaznog uređaja

polje system
in – broj prekida u sekundi izazvanih uređajima
cs – broj promena konteksta procesa u sekundi

polje cpu
us – procenat procesorskog vremena utrošenog na izvršavanje korisničkog koda
sy – procenat procesorskog vremena utrošenog na izvršavanje sistemskog koda
id – procenat neutrošenog procesorskog vremena

U ovim poljima treba obratiti pažnju na korišćenje ukupne i virtuelne memorije. Kada je raspoloživa virtuelna memorija (prikazana u kilobajtima u polju swpd) mala, sistem sa njom intenzivno razmenjuje podatke pa su performanse verovatno zbog toga slabije. Tada treba upotrebiti komandu ps da bi se otkrio proces ili procesi koji intenzivno koriste virtuelnu memoriju. Uglavnom trajno rešenje je u dodavanju još RAM-a.

Ako je u koloni wa vrednost različita od nule, a vrednosti u kolonama so i si ukazuju na neprestanu razmenu sa virtuelnom memorijom, potražite proces koji opsežno zauzima memoriju, naročito virtuelnu. Ako duže posmatrate kolone r i b steći ćete utisak o brzini prolaska procesa kroz red čekanja na izvršavanje, vrednost u koloni r i b treba stalno da budu male, osim kod dugotrajnih procesa koje takođe lako možete da otkrijete sa komandom ps.

Komanda free prikazuje korišćenje memorije, uključujući virtuelnu memoriju sa raspoloživom količinom. Za jedno umereno opterećenje sistema dobićete otprilike sledeće rezultateNasuprot gornjem prikazu evo primera gde je memorija prilično opterećena

Komanda free prikazuje snimak korišćenja memorije koji možete da obuhvatite jednim pogledom. Prvi red ispod zaglavlja pokazuje podatke o fizičkoj (radnoj) memoriji u kilobajtima, uključujući ukupnu količinu RAM-a, njegov ne uvek i iskorišćen deo koji zauzima jezgro operativnog sistema, količinu slobodnog RAM-a i delove RAM-a namenjenog deljenju, međumemoriji i ostavi.

Drugi red se odnosi na korišćenje međumemorije. Drugim rečima, komanda free oduzima predviđenu međumemoriju i ostavu od kolone used i rezultat smešta u kolonu free tako da dobijamo tačniju sliku korišćenja memorije u odnosu na zauzeće u jezgru operativnog sistema, ona se menja u zavisnosti od iskorišćenja sistema i prosečnog korišćenja memorije. Ako u prvom redu vrednost buffers i cached oduzmete od vrednosti korišćene memorije dobićete vrednost (za prvi prikaz) 311204 (1471564−282812−877548=311204), dok dodavanjem vrednosti buffers i cached na vrednost free dobijamo 3890644 (2135548+877548+877548=3890644) što je oko 12,5 puta više.

Treći red prikazuje količinu raspoložive, korišćene i slobodne virtuelne memorije koja je u vreme snimanja sistema bila nekorišćena u oba snimka.

Ovi podaci se mogu videti i u grafičkom prikazu, sve u zavisnosti koje grafičko okruženje koristite. Recimo System Monitor u GNOME grafičkom okruženju.

Zaključak

U ovom delu smo mogli videti neke najosnovnije programe poput uptime, xload, free i System Monitor koje koriste svi korisnici bez obzira na stepen znanja i ambicije ali i nešto naprednije poput komandi sar, ps i vmstat.

U narednom broju sledi nastavak gde ćemo se baviti temama zauzeća diska i korišćenje procesa.