Linux
磁碟 IO 優先級與程序優先級有何關係?
我正在執行有時會使磁碟 IO 過載的軟體。我不需要該軟體的快速響應,我需要其他應用程序的快速響應,因此我可以為此設置低程序優先級。我想問一下程序優先級如何影響程序的磁碟 IO 優先級。
我嘗試了一個小實驗:我為程序設置了低優先級(在 GNOME 下的系統監視器中),並使用
ionice
.結果:
IO priority = 0 for normal process priority IO priority = 4 for low process priority
但這會一直這樣工作嗎?降低程序優先級時是否總是降低 IO 優先級?
在Linux下,預設情況下,一個程序的IO優先級是由它的CPU優先級根據公式推導出來的
io_priority = (cpu_nice + 20) / 5
IO 優先級範圍從 0 到 7,其中 0 為最高優先級。CPU niceness 範圍從 -20 到 19,其中 -20 是最高優先級。
您可以使用該
ionice
命令更改程序的 IO 優先級。如果您希望該程序僅在系統不忙時執行,請使其在“空閒”類而不是預設的“盡力而為”類下執行:ionice -c 3 -p $PID ionice -c 3 mycommand --someoption
即使優先級最低,磁碟密集型程序也往往會減慢系統速度,因為它會污染記憶體。
有關更多資訊,請參見
ionice
手冊頁。