IOWeight= и ограничение дискового ввода-вывода
Задаёт относительный вес службы при конкуренции за диск. Жёсткие пределы скорости задаются отдельными параметрами для конкретных устройств.
Что делает
Вес работает как приоритет: при конкуренции служба с меньшим весом уступает. Пока диск свободен, ограничений нет. Для фоновых задач это лучше, чем жёсткий предел: они работают быстро, когда никому не мешают.
Жёсткие пределы (IOReadBandwidthMax=, IOWriteBandwidthMax=) задаются для устройства и ограничивают скорость всегда. Их применяют, когда нужно гарантированно оставить полосу другим.
Где ставится. В секции [Service]. Требует второй версии иерархии контрольных групп.
Значения
| Значение | Что происходит |
|---|---|
IOWeight=100 | вес по умолчанию; диапазон от 1 до 10000. |
IOWeight=20 | фоновая задача уступает остальным. |
IOReadBandwidthMax=/dev/sda 50M | жёсткий предел скорости чтения с устройства. |
IODeviceLatencyTargetSec=/dev/sda 50ms | целевая задержка для устройства. |
Пример
Резервное копирование, которое не мешает работе.
[Service]
IOWeight=20
IOSchedulingClass=idle
Nice=15
CPUWeight=20
Четыре параметра работают вместе: два про диск, два про процессор. Для ночных задач это разумный набор.
Типичные ошибки
На первой версии иерархии контрольных групп вес не действует.
Жёсткий предел скорости замедляет задачу всегда, даже когда диск свободен.
Учёт ввода-вывода нужно включить, иначе счётчики будут пустыми.
Связанные ошибки
- Служба работает медленно: упор в CPUQuotaКвота процессора ограничивает службу: признаки, как измерить и когда квота вредна.
- Input/output error в журнале службыОшибка ввода-вывода: проблемы носителя, отвалившийся сетевой ресурс, повреждённая файловая система. Что проверять срочно.
Рядом стоящие параметры
Источники
- systemd.resource-control(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)