Всем привет. До сегодняшнего дня был апологетом systemd, но вот натолкнулся на баг, который присутствует в Ubuntu / Debian (хз, может плохо тестировал).
Итак, нужно ограничить IOPS чтения для процесса. Запускаем транзитивный юнит kek:
systemd-run --scope --unit=kek \
-p IOReadBandwidthMax="/dev/sda 10M" \
-p IOReadIOPSMax="/dev/sda 20" \
bash
далее идем вот сюда /sys/fs/cgroup/blkio/system.slice/kek.scope/ и смотрим в 2 файла. Один норм создался ( blkio.throttle.read_bps_device — ограничение полосы трафика ) а другой пустой — о чем и пост — ( blkio.throttle.read_iops_device ).
В общем Systemd не передает свой IOReadIOPSMax в cgroups-овый формат blkio.throttle.read_iops_device. Причем если вписать туда нужные значения вручную, то все работает. Т.е. к Cgroups претензий нет.
P.S. В Centos 7 этой штуки вообще нет.
P.P.S. Ограничение скорости работает из коробки, а IOPS нет