Nadzor procesa i memorije

Par riječi o procesima

Proces u linuxu predstavlja objekt preko kojeg program koristi memoriju, procesorsko vrijeme i ulazno-izlazne resurse. U kernelu postoji tablica procesa - podatkovna struktura koja bilježi razne podatke o svakom pojedinačnom procesu (status procesa, adresni prostor, roditelj procesa, otvorene datoteke, ...). Ovdje ćemo navesti samo neke od parametara procesa koji imaju važnost za uobičajeno administriranje sustava.

  • PID – Identifikator procesa (process ID) – Dinamički dodijeljen od kernela, po redu, kako je proces kreiran.
  • PPID – Roditelj procesa (parent PID) – Svaki proces ima PPID veći od 1, osim u slučaju inita, "majke svih procesa" koji se pokreće prilikom inicijalizacije sustava i čiji je PPID 0.
  • UID – Vlasnik procesa (user ID) – Brojčani identifikator vlasnika procesa tekstualno povezan s korisnikom preko datoteke /etc/passwd (broj u trećem stupcu).
  • TTY – Upravljački terminal za koji je proces vezan.

Samo postojanje procesa ne mora značiti da isti automatski zauzima procesorsko vrijeme i ostale resurse. U osnovi moguća su četiri stanja procesa:

  • Aktivni proces (runnable) – proces koji se izvršava
  • Spavajući proces (sleeping) – proces koji očekuje specifični događaj. Primjerice daemoni koji većinu svog vremena provedu u ovom stanju očekujući mrežnu konekciju.
  • Zombi procesi (zombie) – Procesi koji pokušavaju "umrijeti" – proces je završio ali je ostao zapis u tablici procesa.
  • Zaustavljeni (stopped) – Proces koji je administrativno zaustavljen.

 

Nadzor procesa (ps)

Osnovni alat kojim se ispisuju procesi je ps. Pomoću te naredbe možemo dobiti sve podatke o trenutnim procesima ispisane u različitim formatima. Naredba ps postoji na svim UNIX-oidima, ali se njena implementacija znatno razlikuje od sustava do sustava. Na linuxu postoji objedinjena verzija koja se ponaša različito u ovisnosti o parametrima. Generalno možemo razlikovati standardnu i BSD sintaksu.

 

shell

1.1 Ispis ps naredbe u BSD stilu s parametrima za prikaz stabla procesa. Korisnik je više puta pokrenuo  ljusku unutar ljuske i na kraju izvršio naredbu ps ajxf. Obratite pažnju na PID i PPID identifikatore.

 

shell

1.2 Ista naredba pokrenuta u standardnom linux stilu (Zanimljivo je primjetiti razliku pri korištenju crtice ispred parametara kod ovog tipa sintakse).

Kod uobičajenog linux kernela, bilo koji korisnik može dobiti izlist svih procesa na računalu. CARNet-ova standardna distribucija bazira se na Grsecurity dodacima kernelu kojima je običnom korisniku dozvoljen samo  ispis vlastitih procesa, a za ispis svih procesa potrebno je koristiti root ovlasti.

Jedan od načina provjere procesa po potrošnji memorije je korištenje standardne naredbe ps aux uz dodatak parametara za sortiranje po količini memorije

korisnik@stroj:~$ sudo ps aux --sort -rss
USER          PID       %CPU     %MEM       VSZ          RSS
clamav        3205      0.1      11.9     133256      123480
amavis       17707      0.0      7.4       89084       77528

Stupac RSS (Resident Set Size) predstavlja dio memorije pojedinog procesa u RAM-u, a VSZ (Virtual memory SiZe) je veličina virtualne memorije procesa – obuhvaća RSS, memoriju u swapu te na file sistemu. Izražene vrijednosti su u kilobajtima.

Vote: 
4
Vaša ocjena: Nema Average: 4 (1 vote)