我运行的软件有时会使磁盘 IO 过载。我不需要该软件的快速响应,我需要其他应用程序的快速响应,因此我可以为此设置较低的进程优先级。我想问一下进程优先级如何影响进程的磁盘IO优先级。
我尝试了一个小实验:我为一个进程设置了低优先级(在 GNOME 下的系统监视器中),并使用ionice
.
结果:
IO priority = 0 for normal process priority
IO priority = 4 for low process priority
但这总是这样吗?当我降低进程优先级时,IO优先级是否总是降低?
答案1
在Linux下,默认情况下,进程的IO优先级是根据其CPU优先级根据公式得出的
io_priority = (cpu_nice + 20) / 5
IO 优先级范围为 0 到 7,其中 0 为最高优先级。 CPU 友好度范围从 -20 到 19,其中 -20 是最高优先级。
您可以使用该ionice
命令更改进程的 IO 优先级。如果您希望该进程仅在系统不忙时运行,请使其在“idle”类而不是默认的“best-effort”类下运行:
ionice -c 3 -p $PID
ionice -c 3 mycommand --someoption
即使优先级最低,磁盘密集型进程也会降低系统速度,因为它会污染缓存。
请参阅ionice
手册页了解更多信息。