磁盘IO优先级与进程优先级有何关系?

磁盘IO优先级与进程优先级有何关系?

我运行的软件有时会使磁盘 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手册页了解更多信息。

相关内容