系统是 Ubuntu 10 LTS 64 位 (2.6.35.31),我在 xen 4.0 上运行,没有活动服务,cron 已停止,调度程序是 cfq,磁盘 /usr 已挂载自:
时间find /usr -exec stat {} \; > /dev/null 2>&1
&
给予
real 0m35.760s
user 0m0.270s
sys 0m3.910s
和
时间ionice -c3 find /usr -exec stat {} \; > /dev/null 2>&1
&
给予
real 0m36.110s
user 0m0.310s
sys 0m4.100s
这与预期完全一致,现在我同时运行两者:
时间find /usr -exec stat {} \; > /dev/null 2>&1
与时间ionice -c3 find /usr -exec stat {} \; > /dev/null 2>&1
与
我认为离子化版本应该慢得多,而直接版本应该和单独运行时一样快。但是:
直的:
real 1m10.430s
user 0m0.320s
sys 0m3.940s
离子化:
real 1m10.230s
user 0m0.250s
sys 0m4.020s
这意味着 ionice 根本不起作用。有什么提示吗?
答案1
这几乎肯定不起作用,因为您没有使用 CFQ 内核调度程序。
查看/sys/block/xvdh/queue/scheduler
您正在使用的。[] 括号中的是活动的。
现在似乎deadline
大多数系统都支持该功能,但 ionice 却无法工作。(据我所知,它的文档记录非常糟糕)。
答案2
由于两个进程都在请求相同的文件,因此无论哪个进程先到达那里,都会从文件系统缓存中获取文件。由于它实际上并没有移动主轴,因此它不受 的影响ionice
。