Ich weiß, dass Sie eine Prozessfreundlichkeit mit setpriority
oder nice
oder ändern können renice
.
Passt / ändert Linux jedoch automatisch eine Prozessfreundlichkeit ohne Benutzereingabe?
Ich habe einen Prozess, für den ich setpriority
in C Folgendes verwende:
setpriority(PRIO_PROCESS, 0, -1)
Wenn der Prozess ausgeführt wird, kann ich sehen, dass sein Wert für die Schönheit jetzt -1 ist, indem ich htop ausführe .
Bei der Untersuchung eines Absturzes auf einem Remote-Computer wurde mir die Ausgabe von htop zur Verfügung gestellt. Ich habe festgestellt, dass sich der Wert für die Freundlichkeit für diesen Prozess auf einer Instanz auf 0 und auf einer anderen Instanz auf 6 geändert hat. Ich möchte wissen, ob dies vom Kernel geändert wurde oder ob die einzige Möglichkeit, diesen Wert zu ändern, darin besteht, einen Benutzer zu haben oder Skript nehmen Sie die Änderung absichtlich vor.
Antworten:
Meines Wissens ändert der Linux-Kernel nichts an der Schönheit eines Prozesses, und ich verstehe nicht, warum dies der Fall ist, da die Priorität eines Prozesses nicht gesenkt werden muss. Die Freundlichkeit ist eine Information, die dem Kernel gegeben wird und ihm sagt, wie schön dieser Prozess sein will. Dem Kernel-Scheduler steht es frei, diese Informationen so zu berücksichtigen, wie er möchte, um die Priorität eines Prozesses zu ändern. Er muss seinen Wert nicht ändern.
Auf der anderen Seite gibt es im Benutzerland Dämonen wie AND, deren Aufgabe es ist, Prozesse gemäß den vom Administrator festgelegten Regeln neu zu definieren. Haben Sie einen solchen Daemon auf Ihrem Server installiert?
Der AND-Daemon erneuert jedoch keine Prozesse, die root gehören, und da Sie eine Priorität von
-1
with festlegen, gehesetpriority()
ich davon aus , dass dies hier der Fall ist. Daher ist der einzige Grund, den ich für diese Änderung der Freundlichkeit sehe, die Benutzerinteraktion.Da Sie jedoch verwenden
htop
, ist es möglich, dass der Vorgang versehentlich durch Drücken der ]Taste oder der F8Taste neu gestartet wurde .quelle