IOPS (Input/Output Operations Per Second) to liczba operacji odczytu i zapisu, jakie nośnik danych jest w stanie obsłużyć w ciągu jednej sekundy. To podstawowa miara wydajności dysków i macierzy przy obciążeniach losowych (random) — czyli takich, gdzie odwołania do danych skaczą po całym nośniku, zamiast lecieć jednym ciągiem. Im wyższy IOPS, tym sprawniej dysk radzi sobie z bazami danych, maszynami wirtualnymi i wieloma użytkownikami naraz.
Do czego to służy
IOPS to nie to samo co przepustowość (throughput, mierzona w MB/s). Throughput mówi, ile danych przepłynie w sekundzie przy odczycie sekwencyjnym (np. kopiowanie wielkiego pliku). IOPS opisuje, ile osobnych, małych operacji nośnik ogarnie — a to właśnie one zabijają wydajność. Bazy danych czy systemy plików rzadko czytają jeden gigantyczny blok; częściej walą tysiące drobnych, rozrzuconych żądań po 4 KB.
Dlatego liczby potrafią rozjechać się o rzędy wielkości: zwykły talerzowy HDD 7200 obr./min wyciąga około 75-200 IOPS, dysk SATA SSD już dziesiątki tysięcy, a NVMe — setki tysięcy, w topowych modelach przekraczając milion. Ta przepaść tłumaczy, czemu po przesiadce z HDD na SSD system „budzi się” mimo identycznego procesora.
Przykład z praktyki
Do pomiaru IOPS w Linuksie standardem jest narzędzie fio. Test losowego odczytu blokami 4 KB odpalisz tak:
fio --name=test --ioengine=libaio --rw=randread --bs=4k --size=1G --numjobs=1 --iodepth=32 --runtime=60 --direct=1
Kluczowy jest tu iodepth — głębokość kolejki. Pojedyncze żądania (głębokość 1) pokażą znacznie niższy IOPS niż dziesiątki równoległych, bo SSD i NVMe rozkwitają dopiero pod większym obciążeniem. W chmurze (AWS EBS, Google Persistent Disk) IOPS to wręcz pozycja na fakturze — płacisz za przydzielony limit, a po jego przekroczeniu dysk zaczyna „dławić” (throttling).
Częste błędy i mity
- Patrzenie tylko na IOPS, ignorując latency. Wysoki IOPS przy opóźnieniu 20 ms bywa gorszy niż niższy przy 0,1 ms — liczy się też czas pojedynczej operacji.
- Porównywanie liczb bez kontekstu. IOPS zależy od rozmiaru bloku, proporcji odczyt/zapis i głębokości kolejki. „500k IOPS” z karty katalogowej to zwykle idealny random read 4 KB, nie Twój realny workload.
- Mylenie IOPS z throughputem. To dwa różne wymiary — dysk może mieć świetny jeden, a kiepski drugi.
Pojęcia powiązane: throughput (przepustowość), latency (opóźnienie), queue depth, SSD, NVMe, SATA, RAID, fio, random vs sequential access.