Kurze Antwort
PR ist die Prioritätsstufe. Je niedriger die PR, desto höher ist die Priorität des Prozesses.
PR wird wie folgt berechnet:
- für normale Prozesse: PR = 20 + NI (NI ist nett und reicht von -20 bis 19)
- für Echtzeitprozesse: PR = - 1 - real_time_priority
(real_time_priority reicht von 1 bis 99)
Lange Antwort
Es gibt zwei Arten von Prozessen, die normalen und die Echtzeitprozesse.
Für die normalen (und nur für diese) wird nice wie folgt angewendet:
nett
Die "Nizza" -Skala reicht von -20 bis 19, wobei -20 die höchste und 19 die niedrigste Priorität hat. Die Prioritätsstufe wird wie folgt berechnet:
PR = 20 + NI
Wobei NI das nette Level und PR das Prioritätslevel ist. Wie wir sehen können, entspricht die -20 tatsächlich 0, während die 19 39 entspricht.
Standardmäßig ist ein Programm-Nizza-Wert 0, aber der Root-Benutzer kann mit dem folgenden Befehl Programme mit einem bestimmten Nizza-Wert starten:
nice -n <nice_value> ./myProgram
Echtzeit
Wir könnten noch weiter gehen. Die nette Priorität wird eigentlich für Anwenderprogramme verwendet. Während die UNIX / LINUX-Gesamtpriorität einen Bereich von 140 Werten aufweist, ermöglicht nice value die Zuordnung zum letzten Teil des Bereichs (von 100 bis 139). Diese Gleichung lässt die Werte von 0 bis 99 unerreichbar, was einem negativen PR-Wert (von -100 bis -1) entspricht. Um auf diese Werte zugreifen zu können, sollte der Prozess als "Echtzeit" angegeben werden.
In einer LINUX-Umgebung gibt es 5 Planungsrichtlinien, die mit dem folgenden Befehl angezeigt werden können:
chrt -m
Welches wird die folgende Liste zeigen:
1. SCHED_OTHER the standard round-robin time-sharing policy
2. SCHED_BATCH for "batch" style execution of processes
3. SCHED_IDLE for running very low priority background jobs.
4. SCHED_FIFO a first-in, first-out policy
5. SCHED_RR a round-robin policy
Die Planungsprozesse könnten in zwei Gruppen unterteilt werden, die normalen Planungsrichtlinien (1 bis 3) und die Echtzeitplanungsrichtlinien (4 und 5). Die Echtzeitprozesse haben immer Vorrang vor normalen Prozessen. Ein Echtzeitprozess kann mit dem folgenden Befehl aufgerufen werden (Beispiel: Deklaration einer SCHED_RR-Richtlinie):
chrt --rr <priority between 1-99> ./myProgram
Um den PR-Wert für einen Echtzeitprozess zu erhalten, wird die folgende Gleichung angewendet:
PR = -1 - rt_prior
Wobei rt_prior der Priorität zwischen 1 und 99 entspricht. Aus diesem Grund wird der Prozess mit der Nummer 99 aufgerufen, der die höhere Priorität gegenüber anderen Prozessen hat.
Es ist wichtig zu beachten, dass für Echtzeitprozesse der Wert nice nicht verwendet wird.
Um den aktuellen "Nizza" - und PR-Wert eines Prozesses zu sehen, kann der folgende Befehl ausgeführt werden:
top
Welches zeigt die folgende Ausgabe:
In der Abbildung werden die PR- und NI-Werte angezeigt. Es ist gut, den Prozess mit dem PR-Wert -51 zu notieren, der einem Echtzeitwert entspricht. Es gibt auch einige Prozesse, deren PR-Wert als "rt" angegeben wird. Dieser Wert entspricht tatsächlich einem PR-Wert von -100.
niceness
können Sie eine negative Priorität vergeben, damit die Aufgabe mit derniceness
hohen Priorität aus dem Weg geht? (dh es ist zu seinnice
und andere Zugangsressourcen zu lassen? Oder hat mich das nur verwirrt?