磁盘 IO 优先级如何与进程优先级相关?

Kam*_*mil 17 linux process priority

我运行的软件有时会使磁盘 IO 过载。我不需要那个软件的快速响应,我需要其他应用程序的快速响应,所以我可以为此设置低进程优先级。我想问一下进程优先级如何影响进程的磁盘IO优先级。

我尝试了一个小实验:我为一个进程设置了低优先级(在 GNOME 下的系统监视器中),并使用ionice.

结果:

IO priority = 0 for normal process priority   
IO priority = 4 for low process priority
Run Code Online (Sandbox Code Playgroud)

但这会一直这样吗?当我降低进程优先级时,IO 优先级是否总是降低?

Gil*_*il' 24

在 Linux 下,默认情况下,进程的 IO 优先级是根据公式从其 CPU 优先级推导出来的

io_priority = (cpu_nice + 20) / 5
Run Code Online (Sandbox Code Playgroud)

IO 优先级范围从 0 到 7,其中 0 是最高优先级。CPU niceness 范围从 -20 到 19,-20 是最高优先级。

您可以使用该ionice命令来更改进程的 IO 优先级。如果您希望该进程仅在系统不忙时运行,请使其在“空闲”类下运行,而不是在默认的“尽力而为”类下运行:

ionice -c 3 -p $PID
ionice -c 3 mycommand --someoption
Run Code Online (Sandbox Code Playgroud)

即使优先级最低,磁盘密集型进程也往往会降低系统速度,因为它会污染缓存。

有关更多信息,请参阅ionice手册页