Não consigo fazer com que o cgroup blkio limpe os iops de processos em um subgrupo. Eu estou usando o CentOS 7, 3.10.0-229. Eu crio o cgroup /sys/fs/cgroup/blkio/user.slice/test1 e faço
echo 8:32 10 > /sys/fs/cgroup/blkio/user.slice/test1/blkio.throttle.read_iops_device
e da mesma forma para write_iops_device. 8:32 corresponde ao HDD em / dev / sdc. Em seguida, uso stress-ng para ler e gravar na unidade em / srv / hdd-c usando
cgexec -g blkio:user.slice/test1 stress-ng --temp-path /srv/hdd-c --hdd 15 -t 180
e
cgexec -g blkio:user.slice/test1 stress-ng --temp-path /srv/hdd-c --readahead 15 -t 180
Confirmei que os 30 processos iniciados estão sendo executados no blkio: user.slice / test1 cgroup usando ps eo pid,user,args,cgroup
.
Quando eu faço iostat 5
o número de tps para sdc é de 400 a 600, que é o mesmo de quando eu os executo fora do cgroup test1. Eu obtenho o mesmo resultado se eu fizer echo 8:32 10 > /sys/fs/cgroup/blkio/user.slice/blkio.throttle.{read|write}_iops_device
e executá-los no user.slice
ou user.slice/test1
cgroup. No entanto, se eu acelerar na raiz do blkio usando echo 8:32 10 > /sys/fs/cgroup/blkio/blkio.throttle.{read|write}_iops_device
e, em seguida, executar processos stress-ng, iostat 5
mostrará que o tps para sdc é 10-11.
O afogamento do blkio só funciona no nível da raiz? As páginas de manual não parecem sugerir isso.