Како користити команду вмстат на Линуку

Vaš Linux ili macOS računar koristi virtuelnu memoriju. Otkrijte kako to utiče na korišćenje fizičke memorije, procesora i resursa hard diska u vašem sistemu.

Šta je virtuelna memorija?

Vaš računar poseduje ograničenu količinu fizičke memorije, poznatu kao RAM. Ovu RAM memoriju kontroliše jezgro operativnog sistema i deli se između samog operativnog sistema i svih aplikacija koje se pokreću. Ako ovi kombinovani zahtevi premaše količinu fizički instalirane memorije, kako jezgro rešava ovaj problem?

Operativni sistemi poput Linuxa i macOS-a mogu koristiti prostor na hard disku kako bi upravljali memorijskim zahtevima. Rezervisana oblast hard diska, nazvana „swap prostor“, može se koristiti kao proširenje RAM-a. Ovo je virtuelna memorija.

Linux jezgro može upisati sadržaj memorijskog bloka u swap prostor i osloboditi taj segment RAM-a za drugi proces. „Zamenjena“ memorija (takođe poznata kao „stranična“ memorija) može se preuzeti iz swap prostora i vratiti u RAM kada je to potrebno.

Naravno, pristup memoriji putem swap prostora je sporiji od pristupa memoriji u RAM-u. To nije jedini kompromis. Iako virtuelna memorija omogućava Linuxu da upravlja svojim memorijskim zahtevima, korišćenje virtuelne memorije povećava opterećenje drugih komponenti računara.

Vaš hard disk mora obavljati više operacija čitanja i pisanja. Jezgro, a time i procesor, moraju više da rade kako bi zamenjivali memoriju i održavali sve te procese kako bi zadovoljili potrebe različitih aplikacija.

Linux vam omogućava praćenje svih ovih aktivnosti putem komande vmstat, koja izveštava o statistici virtuelne memorije.

Komanda vmstat

Ako unesete vmstat kao komandu bez parametara, prikazaće vam skup vrednosti. Ove vrednosti predstavljaju prosečne vrednosti statistika od poslednjeg pokretanja računara. To nisu trenutne vrednosti.

vmstat

Prikazaće se kratka tabela sa vrednostima.

Tabela sadrži kolone sa naslovima Procs, Memory, Swap, IO, System i CPU. Poslednja kolona (krajnje desna) sadrži podatke koji se odnose na procesor.

Evo liste stavki podataka u svakoj koloni:

Procs

r: Broj procesa koji su pokrenuti. To su procesi koji se aktivno izvršavaju ili čekaju svoj red za korišćenje procesora.
b: Broj procesa u neprekidnom spavanju. Proces ne spava, već obavlja blokirajući sistemski poziv i ne može se prekinuti dok se trenutna operacija ne završi. Najčešće je to drajver uređaja koji čeka da se resurs oslobodi. Svi prekidi koji su povezani sa ovim procesom se obrađuju nakon što proces nastavi sa normalnim radom.

Memory

swpd: Količina korišćene virtuelne memorije, odnosno koliko memorije je zamenjeno.
free: Količina slobodne, nekorišćene memorije.
buff: Količina memorije koja se koristi za baferovanje.
cache: Količina memorije koja se koristi kao keš.

Swap

si: Količina virtuelne memorije koja je zamenjena iz swap prostora.
so: Količina virtuelne memorije zamenjena u swap prostor.

IO

bi: Broj blokova primljenih sa blok uređaja. Broj blokova podataka koji se koriste za prebacivanje virtuelne memorije nazad u RAM.
bo: Broj blokova poslatih na blok uređaj. Broj blokova podataka koji se koriste za prebacivanje virtuelne memorije iz RAM-a u swap prostor.

System

in: Broj prekida u sekundi, uključujući sat.
cs: Broj promena konteksta u sekundi. Promena konteksta se dešava kada jezgro prelazi iz sistemskog režima obrade u korisnički režim.

CPU

Sve ove vrednosti su procenti ukupnog vremena procesora.

us: Vreme provedeno u izvršavanju korisničkog koda (ne jezgra). Odnosno, vreme potrošeno na izvršavanje korisničkih procesa i „lepog“ vremena.
sy: Vreme provedeno u izvršavanju koda jezgra.
id: Vreme kada je procesor u stanju mirovanja.
wa: Vreme provedeno u čekanju na ulaz ili izlaz.
st: Vreme koje je „ukradeno“ od strane virtuelne mašine. Ovo je vreme kada virtuelna mašina mora čekati da hipervizor završi sa usluživanjem drugih virtuelnih mašina pre nego što se vrati i obradi ovu virtuelnu mašinu.

Korišćenje vremenskog intervala

Možemo naterati vmstat da redovno ažurira ove brojke korišćenjem vrednosti kašnjenja. Vrednost kašnjenja se zadaje u sekundama. Za ažuriranje statistika svakih pet sekundi, koristili bismo sledeću komandu:

vmstat 5

Svakih pet sekundi vmstat će dodati novi red podataka u tabelu. Morate pritisnuti Ctrl+C da biste zaustavili ovaj proces.

Korišćenje broja ponavljanja

Korišćenje preniske vrednosti kašnjenja dodatno će opteretiti vaš sistem. Ako vam je potrebno brzo ažuriranje statistika za dijagnostiku problema, preporučuje se korišćenje i vrednosti broja ponavljanja, pored vrednosti kašnjenja.

Vrednost broja ponavljanja govori vmstat-u koliko puta treba da ažurira podatke pre nego što završi sa radom i vrati vas na komandnu liniju. Ako ne navedete vrednost broja ponavljanja, vmstat će raditi dok ga ne zaustavite sa Ctrl+C.

Za vmstat da pruži ažuriranje svakih pet sekundi, ali samo za četiri ažuriranja, koristite sledeću komandu:

vmstat 5 4

Nakon četiri ažuriranja, vmstat se automatski zaustavlja.

Promena mernih jedinica

Možete izabrati da se memorijske i swap statistike prikazuju u kilobajtima ili megabajtima korišćenjem opcije -S (znak jedinice). Ovo mora biti praćeno jednim od k, K, m ili M. Ove oznake predstavljaju:

k: 1000 bajtova
K: 1024 bajta
m: 1000000 bajtova
M: 1048576 bajtova

Za ažuriranje statistika svakih 10 sekundi sa prikazom memorije i swap statistika u megabajtima, koristite sledeću komandu:

vmstat 10 -S M

Statistike memorije i swap prostora su sada prikazane u megabajtima. Imajte na umu da opcija -S ne utiče na statistike IO blokova. Oni su uvek prikazani u blokovima.

Aktivna i neaktivna memorija

Ako koristite opciju -a (aktivna), kolone buff i cache se zamenjuju kolona „inactive“ i „active“. One prikazuju količinu neaktivne i aktivne memorije, kao što i njihovi nazivi ukazuju.

Da biste videli ove dve kolone umesto kolona buff i cache, uključite opciju -a, kao što je prikazano:

vmstat 5 -a -S M

Opcija -S (znak jedinice) takođe utiče na neaktivne i aktivne kolone.

Forkovi

Prekidač -f prikazuje broj forkova koji su se desili od kada je računar pokrenut.

Drugim rečima, ovo prikazuje broj zadataka koji su pokrenuti (i, kod većine njih, zatvoreni) od kada je sistem pokrenut. Svaki proces pokrenut iz komandne linije bi povećao ovu cifru. Svaki put kada neki zadatak ili proces stvori novi zadatak, ova cifra će se povećati.

vmstat -f

Prikaz forkova se ne ažurira.

Prikaz slabinfo

Jezgro ima sopstveni sistem za upravljanje memorijom, o kojem mora da brine, pored upravljanja memorijom operativnog sistema i svih aplikacija.

Kao što možete zamisliti, jezgro konstantno dodeljuje i oslobađa memoriju za različite tipove objekata podataka sa kojima mora da radi. Da bi to bilo što efikasnije, koristi se sistem koji se zove „ploče“ (slabs). To je oblik keširanja.

Memorija koja je dodeljena, korišćena i koja više nije potrebna za određeni tip objekta jezgra, može se ponovo koristiti za drugi objekat istog tipa, bez potrebe za oslobađanjem i ponovnom dodelom memorije. Zamislite ploče kao unapred dodeljene, prilagođene segmente RAM-a za potrebe samog jezgra.

Da biste videli statistike za ploče, koristite opciju -m (slabs). Moraćete da koristite sudo i od vas će biti zatraženo da unesete lozinku. Pošto rezultat može biti prilično dugačak, usmeravamo ga u less.

sudo vmstat -m | less

Izlaz ima pet kolona. To su:

Cache: Naziv keša.
num: Broj trenutno aktivnih objekata u ovom kešu.
total: Ukupan broj dostupnih objekata u ovom kešu.
size: Veličina svakog objekta u kešu.
pages: Ukupan broj memorijskih stranica koje sadrže (najmanje) jedan objekat trenutno povezan sa ovim kešom.

Pritisnite q da izađete iz less.

Prikaz brojača događaja i statistika memorije

Da biste prikazali broj događaja i statistike memorije, koristite opciju -s (stats). Obratite pažnju da je to malo slovo s.

vmstat -s

Iako su statistike uglavnom iste kao i one u standardnom izlazu vmstat, neke od njih su detaljnije podeljene.

Na primer, standardni izlaz kombinuje „lepo“ i „nelepo“ korisničko vreme procesora u kolonu „us“. Ekran -s (stats) navodi ove statistike odvojeno.

Prikaz statistika diska

Sličnu listu statistika diska možete dobiti korišćenjem opcije -d (disk).

vmstat -d | less

Za svaki disk se prikazuju tri kolone, a to su reads, writes i IO.

IO je krajnje desna kolona. Imajte na umu da se sec kolona u IO meri u sekundama, dok se statistike zasnovane na vremenu u kolonama za čitanje i pisanje mere u milisekundama.

Evo šta znače kolone:

Reads

total: Ukupan broj čitanja diska.
merged: Ukupan broj grupisanih čitanja.
sectors: Ukupan broj pročitanih sektora.
ms: Ukupno vreme u milisekundama utrošeno za čitanje podataka sa diska.

Writes

total: Ukupan broj upisa na disk.
merged: Ukupan broj grupisanih upisa.
sectors: Ukupan broj sektora u koje je upisano.
ms: Ukupno vreme u milisekundama utrošeno za upis podataka na disk.

IO

cur: Broj trenutnih operacija čitanja ili upisa na disk.
sec: Vreme utrošeno u sekundama za bilo koje operacije čitanja ili upisa koje su u toku.

Prikaz zbirne statistike diska

Za brzi prikaz zbirne statistike aktivnosti vašeg diska, koristite opciju -D (disk-sum). Obratite pažnju na veliko slovo D.

vmstat -D

Broj diskova može izgledati neobično visok. Računar korišćen za ovaj članak koristi Ubuntu. Sa Ubuntu-om, svaki put kada instalirate aplikaciju preko Snap-a, kreira se squashfs pseudo-sistem datoteka koji se montira na /dev/loop uređaj.

Nažalost, mnoge Linux komande i pomoćni programi broje ove unose uređaja kao hard diskove.

Prikaz statistike particije

Da biste videli statistike koje se odnose na određenu particiju, koristite opciju -p (partition) i navedite identifikator particije kao parametar komandne linije.

Ovde ćemo pogledati particiju sda1. Broj jedan označava da je ovo prva particija na uređaju sda, koji je glavni hard disk za ovaj računar.

vmstat -p sda1

Vraćene informacije prikazuju ukupan broj čitanja i upisa diska sa te particije, kao i broj sektora koji su uključeni u operacije čitanja i pisanja na disk.

Pogled ispod haube

Uvek je dobro znati kako da zavirite ispod „haube“ i vidite šta se dešava unutra. Ponekad ćete pokušavati da rešite problem, a ponekad će to biti iz čiste radoznalosti da biste saznali kako vaš računar funkcioniše.

vmstat vam može pružiti obilje korisnih informacija. Sada znate kako da mu pristupite i šta sve to znači. A kada ste upoznati i naoružani znanjem – kada zatreba da zasučete rukave i dijagnostikujete problem, znaćete da imate vmstat na svojoj strani.