Eu tenho algumas perguntas sobre o controlador cgroup blkio.
Eu quero limitar o IOPS em um processo específico. Esse processo usa o redirecionamento de IO para gravar o conteúdo do stdout em um arquivo. Eu tentei colocar o processo em um cgroup. No entanto, parece que o cgroup não detectou as operações de IO no processo, portanto, não conseguiu limitar a IOPS.
Eu fiz um pequeno experimento para simular o processo. Aqui está o que eu fiz:
cgexec -g blkio:/dummy_group --sticky dd bs=1 if=/dev/zero of=/dev/stdout count=30000000 > /tmp/test
Eu planejei gerar um arquivo de 30MB usando dd, enviá-lo para o stdout e, em seguida, redirecionar para o arquivo. Eu esperava que as operações de gravação devessem ser registradas nas estatísticas do cgroup. No entanto, quando eu li o arquivo "/cgroup/blkio/dummy_group/blkio.throttle.io_serviced", o número "Write" não mudou!
Então eu fiz as tarefas semelhantes usando o comando cp, o número 'Write' realmente mudou:
cgexec -g blkio:/dummy_group --sticky cp /tmp/test /tmp/test2
Estou me perguntando se fiz algo errado para atingir esse objetivo. Qual é o método correto para monitorar e limitar processos cujo IO é executado usando o redirecionamento de IO?
Obrigado.
Tags io-redirection cgroups