Was bedeutet ein Nettewert von (-)?

19

Nach der Manpage und Wikipedia; nicereicht von -20 bis 20.

Bei der Ausführung des folgenden Befehls stelle ich jedoch fest, dass einige Prozesse einen nicht numerischen Wert haben, z. B. (-). Siehe die sechste Spalte von links mit dem Titel "NI".

Was bedeutet eine Nettigkeit von (-)?

 ps axl 
 F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0     1     0  20   0  19356  1548 poll_s Ss   ?          0:00 /sbin/init
1     0     2     0  20   0      0     0 kthrea S    ?          0:00 [kthreadd]
1     0     3     2 -100  -      0     0 migrat S    ?          0:03 [migration/0]
1     0     4     2  20   0      0     0 ksofti S    ?          0:51 [ksoftirqd/0]
1     0     5     2 -100  -      0     0 cpu_st S    ?          0:00 [migration/0]
5     0     6     2 -100  -      0     0 watchd S    ?          0:09 [watchdog/0]
1     0     7     2 -100  -      0     0 migrat S    ?          0:08 [migration/1]
1     0     8     2 -100  -      0     0 cpu_st S    ?          0:00 [migration/1]
1     0     9     2  20   0      0     0 ksofti S    ?          1:03 [ksoftirqd/1]
5     0    10     2 -100  -      0     0 watchd S    ?          0:09 [watchdog/1]
1     0    11     2 -100  -      0     0 migrat S    ?          0:05 [migration/2]

Ich habe 3 Server überprüft: Ubuntu 12.04 und CentOs 6.5 und Mac OsX 10.9. Nur die Maschinen Ubuntu und CentOs haben nicht-stellige Werte für die Genauigkeit.

Spuder
quelle
Zu Ihrer Information: Alle diese Prozesse, deren Namen in sind, [brackets]sind tatsächlich kthreads (Kernel-Threads).
Jonathon Reinhart

Antworten:

18

Was bedeutet eine Nettigkeit von (-)?

Beachten Sie, dass diese auch einen PRI- Wert von -100 haben. Dies zeigt an, dass der Prozess als Echtzeitprozess geplant ist. Echtzeitprozesse verwenden keine netten Scores und haben immer eine höhere Priorität als normale, unterscheiden sich jedoch in Bezug aufeinander.

Sie können Details pro Prozess mit dem chrtBefehl anzeigen (z chrt -p 3. B. ). Eine von Ihren -100 wird wahrscheinlich eine "aktuelle Planungspriorität" von 99 melden - im Gegensatz zu nicehier sind hohe Werte höher priorisiert, woraus wahrscheinlich oben die -100Nummer erstellt wurde. Nicht-Echtzeit-Prozesse zeigen immer eine "aktuelle Planungspriorität" von 0 an, chrtunabhängig von ihrem Wert, und unter Linux eine "aktuelle Planungsrichtlinie" von SCHED_OTHER.

Nur die Maschinen Ubuntu und CentOs haben nicht-stellige Werte für die Genauigkeit.

Einige Versionen von topscheinen Echtzeitprozesse mit rtunter PRI und dann 0unter NI zu melden .

Goldlöckchen
quelle
Wunderbare Antwort. Ich wusste, dass es etwas damit zu tun hatte -100, konnte es aber nicht herausfinden :)
Ramesh
6

@ Goldlilocks Antwort hat mich angewiesen, die Forschung auf dem richtigen Weg zu betreiben. Dies sind meine Forschungsdetails.

Scheduling-Algorithmen für Prozesse verfügbar

Linux unterstützt 3 Planungsrichtlinien. SCHED_FIFO, SCHED_RRUnd SCHED_OTHER. SCHED_OTHERist die Standardrichtlinie für den universellen Zeitverteilungsplaner, die von den meisten Prozessen verwendet wird. SCHED_FIFOund SCHED_RRsind für spezielle zeitkritische Anwendungen gedacht, die eine präzise Steuerung der Art und Weise benötigen, in der ausführbare Prozesse zur Ausführung ausgewählt werden.

Prioritäten zur Verfügung

Um einen auszuführenden Prozess auszuwählen, muss der Linux-Scheduler die Priorität jedes Prozesses berücksichtigen. Tatsächlich gibt es zwei Arten von Prioritäten.

Jedem Prozess wird ein statischer Prioritätswert zugewiesen, und die Planung hängt von dieser statischen Priorität ab. Geplante Prozesse SCHED_OTHERhaben statische Priorität 0; Prozesse, die unter SCHED_FIFOoder SCHED_RRmit einer statischen Priorität im Bereich 1von 99(99 ist die höchste) geplant sind.

Die sys_sched_get_priority_max( )Routine gibt die statische Priorität des Prozesses zurück, 0bei Nicht-Echtzeit-Prozessen.

Die dynamische Priorität wird für Nicht-Echtzeitanwendungen verwendet.

Alle Echtzeitprozesse haben eine höhere Priorität als normale Prozesse. Linux implementiert Echtzeitprioritäten gemäß POSIX. Das folgende Diagramm kann einen Überblick darüber geben, wie die Prozesse mit ihren Prioritäten geplant sind.

HIGH PRIORITY – - – - – > – - – - – > – - – - – > – - – - – > – - – – LEAST PRIORITY
……..real time priority (static priority)…….| …. nice value (dynamic priority) …..
99 ……………………….. 50 ……………………… 1 | -20 …….. -10 …….. 0 …….. 10 ……. 19

Jetzt können wir den folgenden Befehl ausführen, um die Echtzeitpriorität eines Prozesses zu überprüfen. Hier verwende ich Watchdog, da es einen netten Wert hatte, der als - aufgeführt wird.

ps -e -o class,rtprio,pri,nice,cmd | grep watchdog

Dies ist die Ausgabe des obigen Befehls. Wie wir sehen können, ist die Echtzeitpriorität 99, was die höchstmögliche Priorität ist.

FF      99 139   - [watchdog/0]
FF      99 139   - [watchdog/1]
TS       -  21   0 grep watchdog

Nach meinem Verständnis kann die Echtzeitpriorität also einen Maximalwert von 99 annehmen und es kann keinen netten Wert darüber geben. Aus diesem Grund erhalten wir die schöne Ausgabe als - für Watchdog und andere Systemprozesse.

Verweise

http://oreilly.com/catalog/linuxkernel/chapter/ch10.html http://atipaday.wordpress.com/2008/08/19/atad-21-linux-process-priority-range/

Ramesh
quelle