Снижение скорости дискового ввода-вывода контейнеров
У меня есть несколько контейнеров Docker, на которых запущена виртуальная машина, и я хотел бы равномерно регулировать пропускную способность дискового ввода-вывода, скажем, на 20% во всех контейнерах, фактически не создавая нагрузки на другие ресурсы (например, ЦП) на машине.
Я понимаю, что могу изменить cgroups, изменив вес blkio каждого контейнера; однако контейнеры Docker обладают свойством, что даже если вы ограничите использование определенного ресурса, он будет использовать больше этого предела, если никакой другой процесс не будет бороться за этот ресурс (возможно, есть способ отключить это?).
Одним из решений было бы просто запустить другой процесс, который выполняет произвольное чтение с диска (скажем, через dd). Однако dd также будет использовать значительный процессор, так что это нежелательно.
Чтобы подвести итог моего вопроса, я ищу способ ограничить использование чтения диска без использования каких-либо других ресурсов.
1 ответ
Здесь похожий вопрос. Было бы --device-read-bps
работа для вашего случая?
--device-read-bps
флаг ограничивает скорость чтения (байтов в секунду) с устройства. Например, эта команда создает контейнер и ограничивает скорость чтения до 1 МБ в секунду из /dev/sda:
$ docker run -it --device-read-bps /dev/sda:1mb ubuntu
Если да, мы можем, вероятно, отметить это как дубликат