---
title: "Harmonogram I/O Kyber w Linuksie: jak działa i kiedy go używać"
url: "https://kyberlinux.com/pl/blog/harmonogram-io-kyber-w-linuksie"
description: "Kyber to harmonogram I/O w jądrze Linuksa dla szybkich SSD i NVMe. Jak działa, jak go włączyć i kiedy lepszy jest mq-deadline, BFQ albo none."
---

# Harmonogram I/O Kyber w Linuksie: jak działa i kiedy go używać

2 listopada 2026·3 min czytania·Redakcja

Krótki wielotorowy przenośnik z małymi bramkami na każdym torze, które przepuszczają po kilka paczek do jednego modułu dysku

Kto wpisuje w wyszukiwarkę „kyber linux”, zwykle nie szuka nas. Szuka Kybera, harmonogramu blokowego wejścia-wyjścia, który jest częścią jądra Linuksa od 2017 roku. Zbieżność nazw jest przypadkowa, więc najmniej, co możemy zrobić, to porządnie wyjaśnić to, po co ktoś przyszedł.

## O czym decyduje harmonogram I/O

Między programem, który prosi o odczyt pliku, a dyskiem, który zwraca dane, jest warstwa blokowa. Harmonogram to jej część, która decyduje, w jakiej kolejności żądania trafiają do urządzenia i ile może ich być w drodze naraz.

Na dyskach talerzowych kolejność miała ogromne znaczenie, bo głowica musiała się przesuwać. Na nowoczesnym dysku NVMe z wieloma kolejkami sprzętowymi przestawianie żądań daje niewiele. Nadal liczy się natomiast sprawiedliwość między rodzajami pracy: duży zapis w tle nie powinien kazać czekać każdemu drobnemu odczytowi.

## Jak działa Kyber

Kyber powstał w Facebooku dokładnie z myślą o takiej sytuacji: o szybkich urządzeniach wielokolejkowych, na których głównym ryzykiem nie jest czas wyszukiwania, tylko głęboka kolejka wolnych żądań, która opóźnia te szybkie.

Dzieli żądania na domeny: odczyty, zapisy synchroniczne, operacje discard i całą resztę. Każda domena dostaje pulę żetonów, a żądanie potrzebuje żetonu, żeby trafić do urządzenia. Kyber mierzy, ile faktycznie trwa obsługa żądań. Jeśli odczyty nie mieszczą się w swoim celu opóźnienia, wydaje mniej żetonów pozostałym domenom. Kolejka w urządzeniu się skraca, a odczyty przestają czekać za zapisami. Gdy opóźnienia są wyraźnie poniżej celu, oddaje żetony i przepustowość znów rośnie.

To cały pomysł i jest celowo prosty. Kyber nie rozlicza procesów i nie próbuje być sprawiedliwy między użytkownikami. Ma dwa parametry i bardzo mały narzut na żądanie, dlatego pasuje do urządzeń, które obsługują setki tysięcy operacji na sekundę.

## Jak sprawdzić i zmienić harmonogram

Aktywny harmonogram jest pokazany w nawiasach kwadratowych:

```
cat /sys/block/nvme0n1/queue/scheduler
# [none] mq-deadline kyber bfq
```

Jeśli na liście nie ma `kyber`, moduł nie jest załadowany:

```
sudo modprobe kyber-iosched
```

Zmiana harmonogramu dla urządzenia w trakcie pracy:

```
echo kyber | sudo tee /sys/block/nvme0n1/queue/scheduler
```

Oba cele opóźnień są obok, w nanosekundach. Domyślnie cel dla odczytów to 2 ms, a dla zapisów synchronicznych 10 ms:

```
cat /sys/block/nvme0n1/queue/iosched/read_lat_nsec
cat /sys/block/nvme0n1/queue/iosched/write_lat_nsec
```

Tak wprowadzona zmiana nie przetrwa restartu. Żeby była trwała, użyj reguły udev, na przykład w pliku `/etc/udev/rules.d/60-iosched.rules`:

```
ACTION=="add|change", KERNEL=="nvme[0-9]*n[0-9]*", ATTR{queue/scheduler}="kyber"
```

## Kiedy Kyber to dobry wybór, a kiedy nie

**Kyber** pasuje do szybkich SSD i dysków NVMe z mieszaną pracą, na przykład do bazy danych albo usługi, która czyta, gdy coś innego zapisuje w tle. Jego zadaniem jest utrzymać przewidywalne opóźnienie odczytów pod obciążeniem.

**none** bywa lepszym domyślnym wyborem dla jednego bardzo szybkiego dysku NVMe z jednym głównym obciążeniem. Pracę wykonują kolejki samego urządzenia, a każdy harmonogram tylko dokłada narzut. Z tego powodu wiele dystrybucji wybiera go dla NVMe.

**mq-deadline** to bezpieczny wybór ogólny dla dysków SSD SATA i dysków talerzowych. Każde żądanie dostaje termin, więc nic nie czeka w nieskończoność, a harmonogram dobrze zachowuje się na prawie każdym urządzeniu.

**BFQ** jest dla komputerów biurkowych i wolnych urządzeń, na których płynność działania liczy się bardziej niż przepustowość: laptop kopiujący duży plik powinien nadal od razu otworzyć terminal. To najbardziej rozbudowany z czterech harmonogramów i najdroższy na żądanie, dlatego rzadko trafia na serwery z szybkimi dyskami.

## Jak wybrać bez zgadywania

Mierz opóźnienie, które odczuwają użytkownicy, a nie przepustowość z testu syntetycznego. Uruchom prawdziwe obciążenie albo zadanie `fio`, które łączy odczyty z zapisami w tle, i porównaj 99. percentyl opóźnienia odczytów dla `none`, `mq-deadline` i `kyber`. Jeśli ogon się nie zmienia, zostań przy najprostszej opcji. Jeśli zapisy w tle wyraźnie szkodzą odczytom na szybkim dysku, Kyber jest narzędziem zbudowanym dokładnie na ten problem.

## A KyberLinux?

KyberLinux to coś innego, co dzieli z nim pierwszą połowę nazwy: ultralekki, bezpieczny, otwarty system operacyjny dla SI, ten sam na kieszonkowym decku, w robocie i w węźle chmurowym. Jeśli jednak tego szukasz, [zacznij tutaj](https://kyberlinux.com/pl).

-   kyber
-   harmonogram io
-   jądro linuksa
-   nvme
-   opóźnienia

## Czytaj dalej

-   [Fabryki agentów wyjdą z IT na maszyny, których nikt nie pilnuje](https://kyberlinux.com/pl/blog/fabryki-agentow-na-maszynach-bez-admina)
-   [Lista referencyjna bez Debiana: jak wybrać bazę pod SI](https://kyberlinux.com/pl/blog/lista-referencyjna-bez-debiana)