Praćenje disk I/O s iostatom i dstatom: Pronalaženje uskih grla
Uvod
Praćenje ulazno-izlaznih operacija diska jedna je od ključnih zadaća pri upravljanju poslužiteljima u hosting infrastrukturi. Podsustav diska izravno utječe na performanse web usluga, baza podataka, virtualnih strojeva, spremnika i pozadinskih zadataka. Čak i uz dovoljno RAM-a i slobodnih CPU resursa, preopterećen ili spor disk može postati usko grlo cijelog sustava.
Ovaj priručnik namijenjen je sistemskim administratorima, DevOps inženjerima i vlasnicima poslužitelja. Obuhvaća alate iostat i dstat, principe njihovog rada, tumačenje metrika i praktičan pristup pronalaženju uskih grla na disk I/O u hosting okruženju.
Opće informacije i načela rada
Disk I/O u poslužiteljskoj infrastrukturi
U/I diska uključuje operacije čitanja i pisanja podataka na blok uređaje. U stvarnim scenarijima hostinga opterećenje podsustava diska najčešće generiraju:
- baze podataka (MySQL, MariaDB, PostgreSQL);
- web-aplikacije s dinamičkim sadržajem;
- poštanske usluge;
- sigurnosno kopiranje i sinkronizacija podataka;
- vođenje dnevnika;
- swap i privremene datoteke;
- korisnički skripti i cron zadaci.
Uskogrudni vratovi mogu nastati zbog sporih uređaja za pohranu, velike konkurencije među procesima, neoptimalnih I/O rasporeditelja, neispravnog rada predmemorije ili značajki virtualizacije.
Svrha alata iostat i dstat
iostat je alat iz paketa sysstat namijenjen prikupljanju detaljnih statistika o opterećenju CPU-a i diskova. Glavni zadatak alata iostat je prikazati koliko se intenzivno određeni disk koristi, postoji li red zahtjeva i kolavo je prosječno vrijeme čekanja na operacije.
dstat je svestran alat za nadzor koji istovremeno prikazuje statistiku u stvarnom vremenu za nekoliko podsustava: CPU, memoriju, disk, mrežu, procese. Omogućuje povezivanje aktivnosti diska s ukupnim opterećenjem poslužitelja i praktičan je za brzu dijagnostiku.
Ovi se alati međusobno nadopunjuju: iostat pruža točnu sliku na razini uređaja, dok dstat pruža kontekst cijelog sustava.
Preduvjeti i zahtjevi
Prije početka analize moraju biti ispunjeni sljedeći uvjeti:
- Operativni sustav Linux (Debian, Ubuntu, AlmaLinux, Rocky Linux, CentOS).
- SSH pristup poslužitelju.
- Privilegiji korijenskog korisnika ili mogućnost izvršavanja naredbi putem sudo-a.
Provjera verzije operativnog sustava:
cat /etc/os-release
Instalacija potrebnih paketa:
Debian / Ubuntu:
sudo apt update sudo apt install sysstat dstat
CentOS / RHEL / AlmaLinux / Rocky Linux:
sudo yum install sysstat dstat # or sudo dnf install sysstat dstat
Provjera rada sysstat-a:
systemctl status sysstat
Ako je usluga aktivna, prikazat će se relevantne informacije:
root@server:~# systemctl status sysstat ● sysstat.service - Resets System Activity Logs Loaded: loaded (/usr/lib/systemd/system/sysstat.service; enabled; preset: enabled) Active: active (exited) since Tue 2025-12-23 10:35:35 UTC; 16min ago Docs: man:sa1(8) man:sadc(8) man:sar(1) Main PID: 731 (code=exited, status=0/SUCCESS) CPU: 7ms
Korak-po-korak pregled i analiza
Osnovna analiza diska pomoću iostat
Alat iostat koristi se za procjenu opterećenja procesora i diskovnog podsustava, kao i za otkrivanje kašnjenja I/O operacija i redova čekanja.
Sintaksa:
sudo iostat [options] [interval] [count]
Najčešće korišteni parametri:
- -x - proširena statistika;
- -d - samo podaci o disku;
- -k - izlaz u kilobajtima;
- -p - statistika za particije ili određeni uređaj.
Osnovni primjer:
sudo iostat -x
Dinamička analiza:
sudo iostat -xk 5 3
Interval i broj uzoraka omogućuju praćenje promjena opterećenja tijekom vremena, umjesto prosječnog stanja od pokretanja sustava.
Primjer izlaza naredbe iostat

Ključne CPU metrike:
- %iowait - postotak vremena kada je CPU neaktivan dok čeka na I/O operacije. Porast ove metrike ukazuje na utjecaj diska na ukupne performanse.
- %steal - relevantno za virtualne poslužitelje i prikazuje ukradeno vrijeme procesora.
Ključni metrički pokazatelji diska:
- %util - postotak vremena tijekom kojeg je disk bio zauzet. Vrijednosti koje dosljedno prelaze 80-90% ukazuju na zasićenje uređaja.
- r_await - prosječno vrijeme (ms) potrebno za dovršetak operacija čitanja (uključujući vrijeme u redu).
- w_await - prosječno vrijeme (ms) potrebno za dovršetak zapisnih operacija (uključujući vrijeme u redu).
- aqu-sz - (prosječna veličina reda čekanja) prosječna duljina reda čekanja za disk. Vrijednost veća od 1 već ukazuje na formiranje reda čekanja. Vrijednost veća od 2-4 za HDD / veća od 1-2 za SSD znak je da disk ne može pratiti opterećenje.
Razlika između await i svctm pokazuje je li kašnjenje uzrokovano redom čekanja, a ne brzinom fizičkog diska.
Ako await samo neznatno premašuje svctm (razlika < 20-30%), kašnjenja su uglavnom uzrokovana samim diskom (spor fizički čitanje/pisanje).
Ako je await znatno veći od svctm-a (razlika > 50-100%), glavni zastoj uzrokovan je redom zahtjeva (aqu-sz će biti visok), što ukazuje na preopterećenje diska zbog mnogih paralelnih zahtjeva.
U modernim verzijama alata iostat (kao u primjeru) svctm se ne prikazuje jer je njegovo izračunavanje nepouzdano. Za analizu se koristi kombinacija await + aqu-sz: visok await s niskim aqu-sz (~0) ukazuje na spor disk; visok await s visokim aqu-sz (>1) ukazuje na preopterećenje diska zahtjevima.
Analiziranje cjelokupne slike pomoću dstat-a
dstat se koristi za praćenje sustava u stvarnom vremenu i povezivanje opterećenja diska s drugim resursima.
Primjeri naredbi:
dstat -d dstat --disk-util dstat -rd --disk-util dstat -D vda,sda
Primjer izvođenja s intervalom:
dstat -rd --disk-util 1 5
Prilikom analize obratite pozornost na:
- porast iowait-a u CPU-u;
- vrhunci čitanja ili pisanja;
- istovremena mrežna i diskovna aktivnost (sigurnosne kopije, sinkronizacija).
Example dstat output: dstat -rd --disk-util 1 5 --io/total- -dsk/total- vda- read write| read write|util 0 4.00 | 0 76k|0.50 0 29.5 | 0 240k|0.20 0 1.00 | 0 4096B| 0 0 0 | 0 0 | 0 0 1.00 | 0 32k| 0
Usporedba dstat i iostat:
| Kriteriji | iostat | dstat |
|---|---|---|
| Točnost podataka | Visoka | Visoka |
| Režim u stvarnom vremenu | Ograničeno | Izvrsno |
| Povijesni podaci | Da (sar) | Ne |
| Obojeni izlaz | Ne | Da |
| Proširivost | Ne | Dodaci |
| CSV izvoz | Ne | Da |
| Opterećenje procesora | Nisko | Srednje |
dstat je osobito koristan za kratkoročne skokove opterećenja koji nisu uvijek vidljivi u iostat-u.
Identifikacija I/O uskih grla na disku
Za brzu dijagnostiku koriste se sljedeće naredbe:
sudo iostat -mx 2 sudo iostat -p /dev/vda 2 5 sar -d 1 5
Tipični znakovi problema:
- %util iznad 80% tijekom dužeg razdoblja;
- vrijeme čekanja iznad 20-30 ms za SSD ili iznad 50-100 ms za HDD;
- aqu-sz veći od 2-3, što ukazuje na nakupljanje u redu.
U primjeru se koristi disk /dev/vda – to je virtualni disk (VirtIO) na virtualnom poslužitelju.
Na fizičkim poslužiteljima i u drugim okruženjima diskovi mogu imati drugačija imena:
- /dev/sdX (npr. /dev/sda) - obični SATA/SAS/USB diskovi
- /dev/nvmeXnY (npr. /dev/nvme0n1) - NVMe pogoni
- /dev/vdX - virtualni diskovi
Identifikacija procesa koji uzrokuju visoko opterećenje diska I/O
Nakon što se pomoću iostat i dstat utvrdi preopterećenje podsustava diska, sljedeći je korak identificirati specifične procese koji pokreću intenzivne operacije čitanja ili pisanja. Analiza na razini uređaja bez identificiranja izvora opterećenja ne omogućuje ispravne korektivne mjere.
Korištenje alata iotop
Glavni alat za pronalaženje procesa koji aktivno koriste disk je uslužni program iotop.
sudo iotop -ao
Parametri naredbe:
-a - prikazuje kumulativnu statistiku od pokretanja procesa, što pomaže u identifikaciji pozadinskih zadataka s dugotrajnim I/O operacijama;
-o - prikazuje samo one procese koji trenutno izvršavaju I/O operacije.
Primjer izlaza:
TID 41PRIO USER41DISK READ41DISK WRITE41SWAPIN41IO>4141COMMAND 1105641be/441mysql410.00 B 413.44 M410.00 %410.76 %41mysqld 258041be/441rsync410.00 B4123.48 M410.00 %411.17 %41rsync
U izlazu alata iotop posebna pažnja treba posvetiti poljima DISK READ i DISK WRITE te postotku vremena I/O. Obično su izvori opterećenja procesi baza podataka, procesi sigurnosnog kopiranja, procesi sinkronizacije datoteka ili korisnički skripti.
Korištenje pidstata za analizu I/O operacija po procesu
Za formaliziraniju i ponovljivu analizu može se koristiti pidstat, koji je dio paketa sysstat.
pidstat -d 1
Ova naredba ispisuje statistiku disk I/O za svaki proces u intervalima od jedne sekunde. To je praktično za prepoznavanje kratkoročnih vrhova aktivnosti i njihovo povezivanje s drugim metrika sustava.
pidstat je posebno koristan u situacijama kada se opterećenje pojavljuje povremeno i iotop ga ne mora uvijek uhvatiti.
Korištenje lsof-a za analizu aktivnosti datoteka
U slučajevima kada je potrebno razumjeti s kojim se točno datotekama ili direktorijima proces radi, koristi se alat lsof.
lsof +D /path
Gdje je/path specifična mapa unutar koje je potrebno identificirati aktivne datoteke i procese. Na primjer, to može biti mapa baze podataka, mapa za sigurnosne kopije ili područje privremenih datoteka.
Naredba omogućuje utvrđivanje koji procesi trenutno drže opisivače datoteka i izvode operacije unutar navedenog puta, što je osobito korisno pri analizi opterećenja od aplikacija.
Analiza konteksta opterećenja
Identificiranje procesa s visokom aktivnošću diska nije krajnji cilj. Administrator treba procijeniti kontekst njegova rada:
- je li opterećenje očekivano za ovu uslugu;
- radi li se o procesu koji se pokreće u odgovarajuće vrijeme (npr. sigurnosno kopiranje tijekom vršnih sati);
- može li se promijeniti raspored ili operativni parametri;
- je li dopušteno smanjiti prioritet I/O.
Ovaj pristup omogućuje razlikovanje normalnog opterećenja od problematičnog i odabir ispravne metode optimizacije.
Provjera ispravnosti analize
Točnost izvršene analize potvrđuje se ako:
- vrhunci u %util, await ili aqu-sz u iostat podudaraju se u vremenu s aktivnošću procesa u iotop ili pidstat;
- porast iowait vrijednosti u dstat-u podudara se s operacijama diska, a ne s opterećenjem CPU-a;
- ponovljena mjerenja pokazuju reproducibilan obrazac opterećenja.
Za prikupljanje podataka i naknadnu analizu preporučuje se korištenje logiranja:
sar -d 1 100 > io.log
To omogućuje snimanje ponašanja diskovnog podsustava tijekom određenog razdoblja i korištenje tih podataka pri istraživanju incidenata.
Tipične pogreške i operativne značajke
U praksi rada hosting poslužitelja najčešći su sljedeći problemi:
- izvođenje sigurnosnih kopija i sinkronizaciju podataka tijekom vršnih sati;
- intenzivna upotreba swap prostora kada je RAM-a nedovoljno;
- neprikladan I/O rasporeditelj za tip diska;
- nedostatak prioritizacije pozadinskih zadataka.
Kako bi se smanjio utjecaj pozadinskih procesa na performanse, preporučuje se korištenje uslužnog programa ionice za upravljanje I/O prioritetom procesa, što omogućuje smanjenje utjecaja pozadinskih zadataka na odziv sustava.
Primjer upotrebe:
ionice -c3 rsync /source /destination
Ključni prioriteti:
- -c1 (realtime) - najviši prioritet. Koristi se za zadatke osjetljive na kašnjenje. Može u potpunosti blokirati druge procese.
- -c2 (best-effort) - zadano za većinu procesa. Omogućuje prilagodbu razine prioriteta (od 0 (visok) do 7 (nisak)).
- -c3 (idle) - pozadinski. Proces će dobiti pristup disku samo kada ga ne koriste drugi procesi. Sigurno i preporučeno za pozadinske operacije (sigurnosne kopije, sinkronizacija podataka).
U ovom primjeru, rsync proces radi s najnižim I/O prioritetom, čime se minimizira njegov utjecaj na osnovne operacije sustava. Korištenje ionice omogućuje vam da minimizirate utjecaj pozadinskih procesa bez potrebe da ih potpuno onemogućite.
Zaključak
Praćenje I/O operacija na disku sastavni je dio održavanja performansi i stabilnosti poslužiteljske infrastrukture. Korisnički programi iostat i dstat omogućuju prepoznavanje situacija preopterećenja i procjenu stanja diskovnog podsustava, dok alati poput iotopa, pidstata i lsofa pomažu u prepoznavanju određenih procesa i prirode njihovog opterećenja.
Redovita primjena opisanog pristupa, ispravna interpretacija metrika i upravljanje I/O prioritetima pomažu smanjiti vrijeme odziva usluge, povećati predvidljivost opterećenja i osigurati usklađenost sa zahtjevima SLA-a. Nadalje, ova se metodologija može proširiti centraliziranim nadzorom i automatizacijom analize I/O opterećenja.