ionice
só funciona se você estiver usando o agendador do kernel do CFQ. Distribuições parecem padrão para deadline
scheduler.
Veja /sys/block/xvdh/queue/scheduler
para ver qual você ativou. É aquele entre colchetes.
Eu tenho testado o comando ionice
por um tempo e o modo idle
(3) parece ser ignorado na maioria dos casos.
Meu teste é executar os dois comandos ao mesmo tempo:
<big folder>
<another big folder>
Se eu verificar o processo em iotop
, não vejo diferença na porcentagem de utilização de io para cada processo.
Para fornecer mais informações sobre o planejador CFQ, estou usando um kernel do Linux 3.5.0.
Eu comecei a fazer este teste porque estou experimentando um atraso no sistema cada vez que uma tarefa cron diária updatedb.mlocate
é executada na minha máquina Ubuntu 12.10.
Se você verificar o arquivo /etc/cron.daily/mlocate
, perceberá que o comando é executado como:
/usr/bin/ionice -c3 /usr/bin/updatedb.mlocate
Além disso, o mais engraçado é que sempre que meu sistema, por algum motivo, começa a usar memória swap, o processo updatedb.mlocate
io é agendado mais rápido do que kswapd0
process e meu sistema fica preso.
Alguma sugestão?
Referências:
ionice
só funciona se você estiver usando o agendador do kernel do CFQ. Distribuições parecem padrão para deadline
scheduler.
Veja /sys/block/xvdh/queue/scheduler
para ver qual você ativou. É aquele entre colchetes.
Acho que esse é o comportamento esperado - pelo menos, se ambos os processos tiverem um compartilhamento de E / S próximo a 100%. Deve haver uma pequena diferença, mas 100% é o limite e, se você já estiver em 96%, obter apenas metade dos resultados de E / S em 98%. Não é grande coisa.
Uma diferença séria deve ser discernível nos valores absolutos de transferência. Essa diferença pode depender da prioridade da CPU também.
O ingresso de I / O não significa que o sistema não é afetado. Se processos não ociosos não consumirem toda a E / S disponível, o processo prioritário também receberá largura de banda de E / S. Assim, pode acontecer com muita frequência que um aplicativo de prio não ocioso exija E / S e obtenha o próximo slot, mas como há um IOP sendo executado para o processo de inatividade ocioso, a latência aumenta. Quanto menos E / S um processo faz, maior deve ser o impacto do processo de prioridade ocioso sobre ele. Assim, pode ajudar a reduzir a prioridade da CPU do processo cron (talvez até mesmo tornando-a SCHED_IDLE).
Eu não tenho ideia sobre o problema de troca.