ionice -c2 -n7 <PID>
在 I/O 密集型进程 (VirtualBox VM) 上运行并检查结果后ionice -p <PID>
,会显示出best-effort: prio 7
预期结果。
但是,当通过它监视所有进程的总体磁盘 I/O 时,iotop
它会在列中显示该进程PRIO
的值be/4
,我认为这意味着乙美东时间-e努力和级别(优先级)4,这是平均优先级,不是预期的。
有人可以评论一下为什么 ionice 和 iotop 显示之间存在差异吗?除了使用 之外,还有其他方法可以验证给定进程的实际 I/O 优先级吗ionice -p
?
据我了解,有/proc/<pid>/io
但它只显示读取和写入的字节/字符,而不显示优先级,参见。在没有 iotop 的情况下了解哪些进程进行 I/O
还如何查看进程的IO优先级?仅列出ionice -p
为了完整起见,这是在带有 iotop 0.3.2 的 RHEL 6.7 上,调度程序是默认的 CFQ。
答案1
看来我已经找到了部分答案。默认情况下iotop
显示所有进程和线程,我通常通过它运行它,iotop -o
仅显示执行 I/O 的线程和进程。显示的 VirtualBox 进程be/4
实际上是一个线程,当我运行iotop -p <pid>
我更改的 PIDionice
时,它会正确显示be/7
预期的内容。
了解为什么该进程的一个线程具有不同的 I/O 类/优先级仍然很有趣,但我的 ionice 没有-P
选项来更改进程组的 I/O 类/优先级。如果有人知道解决方法/解决方案,那就太好了。