IOPS

Miara wydajności nośnika danych określająca liczbę operacji wejścia/wyjścia na sekundę. Ważna przy ocenie szybkości dysków SSD i macierzy.

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.