ionice闲置被忽略

我一直在testingionice命令一段时间, idle (3)模式似乎在大多数情况下被忽略。

我的testing是同时运行两个命令:

  • du <big folder>
  • ionice -c 3 du <another big folder>

如果我在iotop检查这两个进程,我发现每个进程的io利用率的百分比没有差别。

为了提供关于CFQ调度程序的更多信息,我使用了一个3.5.0的Linux内核。

我开始做这个testing,因为每次在我的Ubuntu 12.10机器上执行每日cron作业updatedb.mlocate时,我正在试验系统延迟。

如果你检查/etc/cron.daily/mlocate文件,你会意识到命令是这样执行的:

/usr/bin/ionice -c3 /usr/bin/updatedb.mlocate

此外,有趣的是,每当我的系统出于某种原因开始使用交换内存时, updatedb.mlocate io进程的计划比kswapd0进程更快,然后我的系统卡住了。

一些build议?

参考文献:

  • http://ubuntuforums.org/showthread.php?t=1243951&page=2
  • https://bugs.launchpad.net/ubuntu/+source/findutils/+bug/332790

ionice只适用于使用CFQ内核调度程序。 分配似乎默认为deadline调度程序。

看看/sys/block/xvdh/queue/scheduler来查看你已经启用了哪个。 这是方括号中的那个。

我认为这是预期的行为 – 至less如果两个进程的I / O份额接近100%。 应该有一个小的差异,但100%是极限,如果你已经在96%,那么只有一半的I / O结果为98%。 没什么大不了。

在绝对转移价值中应该可以看出严重的差异。 这个差异也可能取决于CPU的优先级。

I / O空闲并不意味着系统完全不受影响。 如果非空闲进程不消耗整个可用I / O,那么prio空闲进程也获得I / O带宽。 因此,非闲置的prio应用程序可能会经常发生I / O请求并且获得下一个时隙,但是由于正在执行用于闲置prio过程的IOP,所以延长了增加。 一个进程导致更大的I / O应该是闲置进程对它的影响。 因此,它可能有助于降低cron进程的CPU优先级(甚至可能使其成为SCHED_IDLE)。

我不知道交换问题。