Я создаю группу под /sys/fs/cgroup/blkio/usertest
и добавляю текущую оболочку в эту группу. Я использую следующую команду dd для проверки поведения файла blkio.throttle.io_service_bytes. Я обнаружил, что в некоторых случаях данные будут попадать в родительскую группу.
до дд:
cat /sys/fs/cgroup/blkio/usertest/blkio.throttle.io_service_bytes
253:0 Read 32768
253:0 Write 9466880
253:0 Sync 9442304
253:0 Async 57344
253:0 Total 9499648
Total 9499648
cat /sys/fs/cgroup/blkio/blkio.throttle.io_service_bytes
253:0 Read 360803840
253:0 Write 76435959296
253:0 Sync 1026532352
253:0 Async 75770230784
253:0 Total 76796763136
Total 76796763136
после dd if=/dev/zero of=test bs=100M count=5 && sync
cat /sys/fs/cgroup/blkio/blkio.throttle.io_service_bytes
253:0 Read 360803840
253:0 Write 76960499712
253:0 Sync 1026550784
253:0 Async 76294752768
253:0 Total 77321303552
Total 77321303552
cat /sys/fs/cgroup/blkio/usertest/blkio.throttle.io_service_bytes
253:0 Read 32768
253:0 Write 9468928
253:0 Sync 9444352
253:0 Async 57344
253:0 Total 9501696
Total 9501696
Группы /sys/fs/cgroup/blkio/usertest/blkio.throttle.io_service_bytes
увеличьте только 2048 байт, в то время как родительская группа /sys/fs/cgroup/blkio/blkio.throttle.io_service_bytes
увеличится примерно на 500 МБ, что должно быть записано в группу usertest
.
Почему происходит утечка в родительскую группу?
Но, если я уменьшу количество bs (например: dd if=/dev/zero of=test bs=10M count=5 && sync
) или добавлю oflag=direct
к команде (например: dd if=/dev/zero of=test bs=100M count=5 oflag=direct
) утечка не произойдет, и все выглядит нормально, увеличение /sys/fs/cgroup/blkio/usertest/blkio.throttle.io_service_bytes
составит ровно 500 МБ.
Проблемы, связанные с: