Praćenje diskovnog I/O-a s iostat i dstat. | INTROSERV
EUR
european

EUR

usa

USD

Croatia Hr
Ex. VAT Ex. VAT 0%

Praćenje diskovnog I/O-a s iostat i dstat.

Uvod

Nadzor ulazno-izlaznih operacija diska jedan je od ključnih zadataka pri upravljanju poslužiteljima u hosting infrastrukturi. Podsustav diska izravno utječe na performanse web usluga, baza podataka, virtualnih strojeva, kontejnera i pozadinskih zadataka. Čak i uz dovoljno RAM-a i slobodnih CPU resursa, preopterećeni ili spori disk može postati usko grlo cijelog sustava.

Ovaj priručnik namijenjen je sistemskim administratorima, DevOps inženjerima i vlasnicima poslužitelja. Pokriva iostat i dstat alate, principe njihovog rada, interpretaciju metrika i praktičan pristup pronalaženju uskih grla u I/O disku u hosting okruženju.

Opće informacije i principi rada

Disk I/O u infrastrukturi poslužitelja

Ulazno-izlazne operacije diska uključuju operacije čitanja i pisanja podataka na blok uređaje. U stvarnim hosting scenarijima, opterećenje na podsustavu diska najčešće generiraju:

  • baze podataka (MySQL, MariaDB, PostgreSQL);
  • web aplikacije s dinamičkim sadržajem;
  • mail usluge;
  • sigurnosne kopije podataka i sinkronizacija;
  • logiranje;
  • swap i privremene datoteke;
  • korisnički skripti i cron poslovi.

Uska grla mogu se pojaviti zbog sporih uređaja za pohranu, visokog sukoba između procesa, neoptimalnih I/O planera, nepravilnog rada predmemorije ili značajki virtualizacije.

Svrha iostat i dstat

iostat je alat iz sysstat paketa dizajniran za prikupljanje detaljnih statistika o opterećenju CPU-a i disk uređaja. Glavni zadatak iostat-a je pokazati koliko se intenzivno koristi određeni disk, postoji li red zahtjeva i kolika je prosječna čekanja za operacije.

dstat je svestrani alat za nadzor koji prikazuje statistike u stvarnom vremenu preko nekoliko podsustava odjednom: CPU, memorija, disk, mreža, procesi. Omogućuje korelaciju aktivnosti diska s ukupnim opterećenjem poslužitelja i prikladan je za brzu dijagnostiku.

Ovi alati se 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:

  • Linux operativni sustav (Debian, Ubuntu, AlmaLinux, Rocky Linux, CentOS).
  • SSH pristup poslužitelju.
  • Root privilegije ili mogućnost izvršavanja naredbi putem sudo.

Provjera verzije OS-a:

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

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

Pregled i analiza korak po korak

Osnovna analiza diska pomoću iostat

iostat alat koristi se za procjenu opterećenja CPU-a i diskovnog podsustava, kao i za identifikaciju kašnjenja i redova I/O operacija.

Sintaksa:

sudo iostat [options] [interval] [count]

Najčešće korišteni parametri:

  • -x — proširena statistika;
  • -d — podaci samo za disk;
  • -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, a ne prosječno stanje od pokretanja sustava.

Primjer iostat izlaza:

Primjer iostat izlaza

Ključne CPU metrike:

  • %iowait — postotak vremena kada je CPU neaktivan dok čeka I/O operacije. Povećanje ove metrike ukazuje na utjecaj diska na ukupne performanse.
  • %steal — relevantno za virtualne poslužitelje i pokazuje ukradeno CPU vrijeme.

Ključne disk metrike:

  • %util — postotak vremena kada je disk bio zauzet. Vrijednosti koje stalno prelaze 80–90% ukazuju na zasićenje uređaja.
  • r_await — prosječno vrijeme (ms) za završetak operacija čitanja (uključujući vrijeme čekanja u redu).
  • w_await — prosječno vrijeme (ms) za završetak operacija pisanja (uključujući vrijeme čekanja u redu).
  • aqu-sz — (prosječna veličina reda) prosječna duljina reda zahtjeva za disk. Vrijednost > 1 već ukazuje na formiranje reda. Vrijednost > 2–4 za HDD / > 1–2 za SSD znak je da disk ne prati opterećenje.

Razlika između await i svctm pokazuje je li kašnjenje uzrokovano redom, a ne fizičkom brzinom diska.
Ako await samo malo premašuje svctm (razlika < 20–30%), kašnjenja su uglavnom uzrokovana samim diskom (sporo fizičko čitanje/pisanje).
Ako await značajno premašuje svctm (razlika > 50–100%), glavno kašnjenje uzrokovano je redom zahtjeva (aqu-sz će biti visok), što ukazuje na preopterećenje diska s mnogo paralelnih zahtjeva.

U modernim verzijama iostat-a (kao u primjeru), svctm se ne prikazuje jer je njegova 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.

Analiza opće slike s dstat

dstat se koristi za promatranje sustava u stvarnom vremenu i korelaciju opterećenja diska s drugim resursima.

Primjeri naredbi:

dstat -d

dstat --disk-util

dstat -rd --disk-util

dstat -D vda,sda

Primjer pokretanja s intervalom:

dstat -rd --disk-util 1 5

Prilikom analize obratite pažnju na:

  • povećanje iowait u CPU-u;
  • vrhove čitanja ili pisanja;
  • istovremenu mrežnu i disk aktivnost (sigurnosne kopije, sinkronizacija).

Primjer dstat izlaza:

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
Način rada u stvarnom vremenu Ograničeno Izvrsno
Povijesni podaci Da (sar) Ne
Obojeni izlaz Ne Da
Proširivost Ne Dodaci
Izvoz u CSV Ne Da
Opterećenje CPU-a Nisko Srednje

dstat je posebno koristan za kratkotrajne vrhove opterećenja koji nisu uvijek primjetni u iostat-u.

Identifikacija uskih grla u I/O disku

Sljedeće naredbe koriste se za brzu dijagnostiku:

sudo iostat -mx 2

sudo iostat -p /dev/vda 2 5

sar -d 1 5

Tipični znakovi problema:

  • %util iznad 80% tijekom duljeg razdoblja;
  • await iznad 20–30 ms za SSD ili iznad 50–100 ms za HDD;
  • aqu-sz veći od 2–3, što ukazuje na formiranje reda.

Info

U primjeru se koristi disk /dev/vda — ovo je virtualni disk (VirtIO) na virtualnom poslužitelju. Na fizičkim poslužiteljima i u drugim okruženjima, diskovi mogu biti imenovani drugačije.

  • /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 I/O diska

Nakon utvrđivanja prisutnosti preopterećenja diskovnog podsustava pomoću iostat i dstat, sljedeći korak je identificirati specifične procese koji iniciraju intenzivne operacije čitanja ili pisanja. Analiza na razini uređaja bez identifikacije izvora opterećenja ne omogućuje ispravne korektivne mjere.

Korištenje iotop

Primarni alat za pronalaženje procesa koji aktivno koriste disk je iotop alat.

sudo iotop -ao

Parametri naredbe:

  • -a — prikazuje kumulativnu statistiku od pokretanja procesa, što pomaže identificirati pozadinske zadatke s dugotrajnim I/O;
  • -o — prikazuje samo one procese koji trenutno izvode I/O operacije.

Primjer izlaza:

TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 11056 be/4 mysql 0.00 B 3.44 M 0.00 % 0.76 % mysqld 2580 be/4 rsync 0.00 B 23.48 M 0.00 % 1.17 % rsync

U iotop izlazu, posebnu pažnju treba obratiti na polja DISK READ, DISK WRITE i postotak I/O vremena. Obično su izvori opterećenja procesi baza podataka, procesi sigurnosnih kopija, procesi sinkronizacije datoteka ili korisnički skripti.

Korištenje pidstat za analizu I/O po procesu

Za formaliziraniju i ponovljivu analizu može se koristiti pidstat, koji je dio sysstat paketa.

pidstat -d 1

Ova naredba ispisuje statistiku I/O diska za svaki proces u intervalima od jedne sekunde. Ovo je prikladno za identificiranje kratkotrajnih vrhova aktivnosti i njihovu korelaciju s drugim metrikama sustava.

pidstat je posebno koristan u situacijama kada se opterećenje pojavljuje periodično i možda ga iotop ne uhvati uvijek.

Korištenje lsof za analizu aktivnosti datoteka

U slučajevima kada je potrebno razumjeti s kojim specifičnim datotekama ili direktorijima proces radi, koristi se lsof alat.

lsof +D /path

Gdje je /path specifični direktorij unutar kojeg je potrebno identificirati aktivne datoteke i procese. Na primjer, to može biti direktorij baze podataka, direktorij sigurnosnih kopija ili područje privremenih datoteka.

Naredba omogućuje određivanje koji procesi trenutno drže deskriptore datoteka i izvode operacije unutar navedenog puta, što je posebno korisno pri analizi opterećenja aplikacija.

Analiza konteksta opterećenja

Identifikacija procesa s visokom disk aktivnošću nije krajnji cilj. Administrator treba procijeniti kontekst njegovog rada:

  • je li opterećenje očekivano za ovu uslugu;
  • je li proces pokrenut u odgovarajuće vrijeme (npr. sigurnosne kopije tijekom vršnih sati);
  • mogu li se promijeniti raspored ili operativni parametri;
  • je li dopušteno smanjiti I/O prioritet.

Ovaj pristup omogućuje razlikovanje normalnog opterećenja od problematičnog opterećenja i odabir ispravne metode optimizacije.

Provjera ispravnosti analize

Ispravnost provedene analize potvrđuje se ako:

  • vrhovi u %util, await ili aqu-sz u iostat podudaraju se vremenski s aktivnošću procesa u iotop ili pidstat;
  • povećanje iowait u dstat podudara se s disk operacijama, a ne s opterećenjem CPU-a;
  • ponovljena mjerenja pokazuju ponovljiv obrazac opterećenja.

Za akumulaciju podataka i naknadnu analizu preporučuje se korištenje logiranja:

sar -d 1 100 > io.log

Ovo omogućuje bilježenje ponašanja diskovnog podsustava tijekom određenog razdoblja i korištenje podataka pri istraživanju incidenata.

Tipične pogreške i operativne značajke

U praksi rada s hosting poslužiteljima, najčešći problemi su:

  • pokretanje sigurnosnih kopija i sinkronizacije podataka tijekom vršnih sati;
  • intenzivna upotreba swap-a kada nema dovoljno RAM-a;
  • neprikladan I/O planer za vrstu pogona;
  • nedostatak prioritizacije za pozadinske zadatke.

Kako bi se smanjio utjecaj pozadinskih procesa na performanse, preporučuje se korištenje ionice alata za upravljanje I/O prioritetom procesa, što omogućuje smanjenje utjecaja pozadinskih zadataka na odzivnost sustava.

Primjer korištenja:

ionice -c3 rsync /source /destination

Ključni prioriteti:

  • -c1 (realtime) — najviši prioritet. Koristi se za zadatke osjetljive na kašnjenje. Može potpuno blokirati druge procese.
  • -c2 (best-effort) — zadano za većinu procesa. Omogućuje prilagodbu razine prioriteta (od 0 (visok) do 7 (nizak)).
  • -c3 (idle) — pozadinski. Proces će dobiti pristup disku samo kada ga drugi procesi ne koriste. Sigurno i preporučeno za pozadinske operacije (sigurnosne kopije, sinkronizacija podataka).

U ovom primjeru, rsync proces se pokreće s najnižim I/O prioritetom, minimizirajući njegov utjecaj na osnovne operacije sustava. Korištenje ionice omogućuje minimiziranje utjecaja pozadinskih procesa bez potrebe za njihovim potpunim isključivanjem.

Zaključak

Nadzor ulazno-izlaznih operacija diska sastavni je dio održavanja performansi i stabilnosti infrastrukture poslužitelja. iostat i dstat alati omogućuju identifikaciju situacija preopterećenja i procjenu stanja diskovnog podsustava, dok alati poput iotop, pidstat i lsof pomažu identificirati specifične procese i prirodu njihovog opterećenja.

Redovita primjena opisanog pristupa, ispravna interpretacija metrika i upravljanje I/O prioritetima pomažu smanjiti vrijeme odziva usluga, povećati predvidljivost opterećenja i osigurati usklađenost s SLA zahtjevima. Naknadno, ova metodologija može se proširiti kroz centralizirani nadzor i automatizaciju analize I/O opterećenja.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA