Wie hängt die Festplatten-E / A-Priorität mit der Prozesspriorität zusammen?

11

Ich verwende Software, die manchmal die Festplatten-E / A überlastet. Ich brauche keine schnelle Antwort von dieser Software, ich brauche eine schnelle Antwort von anderen Anwendungen, daher könnte ich dafür eine niedrige Prozesspriorität festlegen. Ich möchte fragen, wie sich die Prozesspriorität auf die Festplatten-E / A-Priorität für einen Prozess auswirkt.

Ich habe ein kleines Experiment versucht: Ich habe für einen Prozess eine niedrige Priorität (im Systemmonitor unter GNOME) festgelegt und die E / A-Priorität mit überprüft ionice.

Ergebnis:

IO priority = 0 for normal process priority   
IO priority = 4 for low process priority

Aber wird das immer so funktionieren? Wird die E / A-Priorität immer reduziert, wenn ich die Prozesspriorität reduziere?

Kamil
quelle

Antworten:

14

Unter Linux wird die E / A-Priorität eines Prozesses standardmäßig gemäß der Formel von seiner CPU-Priorität abgeleitet

io_priority = (cpu_nice + 20) / 5

Die E / A-Priorität reicht von 0 bis 7, wobei 0 die höchste Priorität ist. Die CPU-Qualität reicht von -20 bis 19, wobei -20 die höchste Priorität hat.

Mit dem ioniceBefehl können Sie die E / A-Priorität eines Prozesses ändern. Wenn Sie möchten, dass dieser Prozess nur ausgeführt wird, wenn das System nicht anderweitig ausgelastet ist, lassen Sie ihn unter der Klasse "Leerlauf" und nicht unter der Standardklasse "Best-Effort" ausgeführt werden:

ionice -c 3 -p $PID
ionice -c 3 mycommand --someoption

Selbst mit der niedrigsten Priorität verlangsamt ein festplattenintensiver Prozess das System, nicht zuletzt, weil er den Cache verschmutzt.

Weitere Informationen finden Sie in der ioniceManpage .

Gilles 'SO - hör auf böse zu sein'
quelle