Praćenje disk I/O s iostatom i dstatom: Pronalaženje uskih grla | INTROSERV
EUR
european

EUR

usa

USD

Croatia Hr
Ex. VAT Ex. VAT 0%

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.

Tip

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

Info

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.

Info

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.

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