Ich habe einige Scheduling-Konzepte gelernt. Derzeit ist mein Verständnis soweit wie unten.
- Es gibt Echtzeitprozesse und Nicht-Echtzeitprozesse.
- Nicht-Echtzeit-Prozesse können
nice
Werte für ihre Priorität im Bereich von -20 bis +20 haben . Der höhere positive Wert zeigt an, dass der Prozess eine niedrigere Priorität hat. - Die Echtzeit - Prozesse wird eine Nettigkeit Wert aufgelistet haben ,
-
wie in dieser Antwort erklärt hier . Dies liegt hauptsächlich daran, dass die Echtzeitprozesse höhere Prioritäten haben als die Nicht-Echtzeitprozesse, und dass der Wert der Freundlichkeit für sie nicht gilt. - Jetzt kann ich
chrt
die Echtzeitattribute eines Prozesses anzeigen.
Für einen Echtzeitprozess chrt
gibt die Ausgabe wie folgt aus:
chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99
Wie wir für Prozess 5 sehen können , ist die Priorität 99, was die höchste ist. Die Planungsrichtlinie lautet auchSCHED_FIFO
Für einen Prozess, der nicht in Echtzeit ausgeführt wird, chrt
gibt das folgende Ergebnis aus:
chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0
Wie wir für Prozess 22383 sehen können , ist die Priorität 0 und die Planungsrichtlinie ist SCHED_OTHER
.
Fragen
- Kann ich einen Prozess in Echtzeit ausführen?
- Kann ich einen anderen Scheduling-Algorithmus als
SCHED_OTHER
für einen Nicht-Echtzeit-Prozess festlegen ? Von hier aus sehe ich auch, dass ich das Attribut für einen laufenden Prozess wie folgt ändern könnte:
chrt -p prio pid
Ich sehe auch,
chrt -m
gibt mir die Liste der Scheduling-Algorithmen. Der Befehl gibt mir die Ausgabe als,SCHED_OTHER min/max priority : 0/0 SCHED_FIFO min/max priority : 1/99 SCHED_RR min/max priority : 1/99 SCHED_BATCH min/max priority : 0/0 SCHED_IDLE min/max priority : 0/0
Nun, wie oben vorgeschlagen, wenn ich festlegen,
chrt -p 55 22383
welcher Algorithmus verwendet wird?