Ändert Linux eine Prozessqualität automatisch?

7

Ich weiß, dass Sie eine Prozessfreundlichkeit mit setpriorityoder niceoder ändern können renice.

Passt / ändert Linux jedoch automatisch eine Prozessfreundlichkeit ohne Benutzereingabe?

Ich habe einen Prozess, für den ich setpriorityin 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.

Luis
quelle
1
Ich glaube nicht, dass der Kernel das tut, aber der CPU-Scheduler wählt aus, was priorisiert werden soll. Es gibt viele verfügbare CPU-Scheduler. Ein Werkzeug, das die Schönheit automatisch anpasst, wäre interessant.
Alexander
1
Wie Sie vermuten, ändert der Kernel ihn nicht von alleine. Ich verstehe, dass der Scheduler einen eigenen Algorithmus hat, um Prozesse zu priorisieren. Ich frage, weil ich mir einige Protokolle ansehe, die deutlich zeigen, dass sich ein bestimmter Prozess geändert hat. Ich wollte ausschließen, dass jemand es manuell ändert, indem er etwas als Renice verwendet.
Luis
1
@Leco Fügen Sie diese Informationen zur Frage hinzu und geben Sie ein kleines Beispiel aus Ihren Protokollen an, aus dem hervorgeht, dass sich der Wert für die Freundlichkeit geändert hat.
Kusalananda
@roaima Die Prozesspriorität wird im C-Code mit setpriority festgelegt. Die Prozessfreundlichkeit wird mit htop beobachtet.
Luis

Antworten:

4

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 -1with festlegen, gehe setpriority()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 .

xhienne
quelle