Beim Laufen top
sehe ich diese (verkürzte) Beispielausgabe:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4586 ipc-adm+ 20 0 1303900 605152 92844 S 30,6 29,3 3:52.88 firefox
3985 ipc-adm+ 20 0 258588 124508 63072 S 12,2 6,0 0:40.04 compiz
3092 root 20 0 172392 56164 25980 S 6,1 2,7 0:30.13 Xorg
Es gibt zwei Werte, die mich interessieren: PR
(Priorität) und NI
(Feinheit).
Wenn ich verstanden habe, was ich bereits richtig herausgefunden habe, bestimmen beide, wie viel CPU-Zeit ein Prozess im Gegensatz zu anderen Prozessen erhält. Aber was ist dann der Unterschied zwischen diesen Werten?
Könnten Sie bitte auch beschreiben, wie diese Werte eines Prozesses manipuliert werden und unter welchen Umständen dies nützlich sein könnte?
quelle
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?pr
20, also gleich, Aufgabe eins hat eineni
0 und Aufgabe zwei hat eineni
20, das würde bedeuten, dass Aufgabe zwei Ressourcen für Aufgabe eins aufgibt, weil es istnicer
Was hat Priorität und warum sollte es mich interessieren?
Wenn es um Prozesse geht, dreht sich alles um die Verwaltung der Prozessorzeit. Der Prozessor oder die CPU ist wie ein Mensch, der mehrere Aufgaben gleichzeitig erledigt. Manchmal können wir genug Platz für mehrere Projekte haben. Manchmal können wir uns immer nur auf eine Sache konzentrieren. In anderen Fällen taucht etwas Wichtiges auf und wir möchten unsere ganze Energie darauf verwenden, dieses Problem zu lösen und gleichzeitig weniger wichtige Aufgaben in den Hintergrund zu rücken.
Unter Linux können wir Richtlinien festlegen, denen die CPU folgen soll, wenn sie alle zu erledigenden Aufgaben betrachtet. Diese Richtlinien werden als Nettigkeit oder guter Wert bezeichnet. Die Linux-Nizza-Skala reicht von -20 bis 19. Je niedriger die Zahl, desto mehr Priorität erhält die Aufgabe. Wenn der Wert für die Genauigkeit eine hohe Zahl wie 19 ist, wird die Task auf die niedrigste Priorität gesetzt und die CPU verarbeitet sie, wann immer sie eine Chance hat. Der Standardwert für nice ist null.
Mit dieser Skala können wir unsere CPU-Ressourcen angemessener zuweisen. Programme mit niedrigerer Priorität, die nicht wichtig sind, können auf einen höheren Nizza-Wert eingestellt werden, während Programme mit hoher Priorität, wie Daemons und Dienste, so eingestellt werden können, dass sie den Fokus der CPU stärker erhalten. Sie können einem bestimmten Benutzer sogar einen niedrigeren Wert für alle seine Prozesse zuweisen, damit Sie dessen Fähigkeit einschränken können, die Kerndienste des Computers zu verlangsamen.
Quelle
Legen Sie die Priorität für neue Prozesse fest
nice
, zfür bestehende Prozesse
Um die Priorität einzustellen, die
<0
Sie benötigensudo
, zB:aber nicht für eine Priorität
>=0
Beispiel
Anderes Beispiel
Alle laufenden Prozesse für einen bestimmten Benutzer erneut starten
quelle
renice 10
würde das auch ohne funktionierensudo
, oder? Und könnten Sie bitte ein Beispiel hinzufügen, um alle Prozesse eines bestimmten Benutzers angenehmer zu gestalten? Das wäre eigentlich ziemlich nützlich, wenn jemand anderes gleichzeitig angemeldet ist und einige unnötige, aber ressourcenintensive Prozesse ablaufen (wie ein pausiertes Flash-Spiel in Firefox, machen kleine Brüder solche Dinge ...: - /)0
oder ... da ist das Problem;)ps
ist:PRI: 38, NI: -19
aber mittop
ihm ist ,PR:1, NI -19
warum das so ist?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:
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:
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:
Welches wird die folgende Liste zeigen:
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):
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:
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.
quelle