IO контейнера Docker не записывается в файлы / sys / fs / cgroup / blkio / docker / [containerID] / blkio - PullRequest
0 голосов
/ 26 октября 2018

Я хочу измерить IO (чтение / запись данных на жесткий диск) приложения, работающего в контейнере Docker. Потому что есть больше контейнеров, Я решил отслеживать файлы blkio соответствующего контейнера. Проблема в том, что ни один из файлов blkio обновляются при записи большого количества данных в контейнер.

Что я делаю:

  • Я создал контейнер на основе fedora: docker run -ti fedora /bin/bash
  • Запустите следующую команду внутри контейнера: dd if=/dev/urandom of=./outfile bs=1M count=1000 (создан файл 1 ГБ)
  • Во время работы dd я просматривал все файлы blkio в /sys/fs/cgroup/blkio/docker/[containerID]/ каталог с использованием watch -n 0.2 cat *

Проблема в том, что файлы не были обновлены во время выполнения, ни после окончания dd. (Я дважды проверил containerID, чтобы убедиться, что смотрю нужный контейнер.)

Чтобы убедиться, что данные записаны на диск, а не в буферах ОС, я выполнил ту же команду в контейнере но я смотрел blkio файлы всей системы watch -n 0.2 cat /sys/fs/cgroup/blkio*. В этом случае файлы были обновляется во время выполнения dd и после него (пока ОС сбрасывается в буферы).

Я также установил /proc/sys/vm/dirty_bytes на 50 МБ [1], что должно гарантировать, что данные записываются на диск и не буферизируются в памяти.

Я использую Fedora 28 и Docker 18.03.1-ce. ПК имеет 32 ГБ оперативной памяти и 500 ГБ жесткого диска.

Почему операции ввода-вывода не записываются в blkio файлах контейнера?

[1] https://www.kernel.org/doc/Documentation/sysctl/vm.txt

...