Selon la page de manuel et wikipedia; nice
varie de -20 à 20.
Pourtant, lorsque j'exécute la commande suivante, je trouve que certains processus ont une valeur non numérique telle que (-). Voir la sixième colonne de gauche avec le titre «NI».
Qu'est-ce qu'une gentillesse de (-) indique?
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]
J'ai vérifié 3 serveurs en cours d'exécution: Ubuntu 12.04 et CentOs 6.5 et Mac OsX 10.9. Seules les machines Ubuntu et CentOs ont des valeurs de gentillesse non numériques.
[brackets]
sont en faitkthread
s (threads du noyau).Réponses:
Notez que ceux-ci ont également un score PRI de -100; cela indique que le processus est planifié en tant que processus en temps réel . Les processus en temps réel n'utilisent pas de bons scores et ont toujours une priorité plus élevée que les scores normaux, mais diffèrent toujours les uns par rapport aux autres.
Vous pouvez afficher les détails par processus avec la
chrt
commande (par exemplechrt -p 3
). L'un de vos -100 rapportera probablement une "priorité de planification actuelle" de 99 - contrairement ànice
ici, les valeurs élevées ont une priorité plus élevée, qui est probablement l'endroit où le-100
numéro le plus élevé a été créé . Les processus non en temps réel afficheront toujours une "priorité de planification actuelle" de 0,chrt
quelle que soit la valeur, et sous linux une "politique de planification actuelle" deSCHED_OTHER
.Certaines versions de
top
semblent signaler des processus en temps réel avecrt
sous PRI puis0
sous NI .la source
-100
mais je ne pouvais pas le comprendre :)@ La réponse de Goldlilock m'a incité à faire des recherches dans la bonne direction. Voici mes détails de recherche.
Algorithmes de planification disponibles pour les processus
Linux prend en charge 3 politiques de planification.
SCHED_FIFO
,,SCHED_RR
etSCHED_OTHER
.SCHED_OTHER
est la stratégie d'ordonnanceur universel à temps partagé par défaut utilisée par la plupart des processus;SCHED_FIFO
etSCHED_RR
sont destinés aux applications spéciales à temps critique qui nécessitent un contrôle précis de la manière dont les processus exécutables sont sélectionnés pour exécution.Priorités disponibles
Afin de sélectionner un processus à exécuter, le planificateur Linux doit considérer la priorité de chaque processus. En fait, il existe deux types de priorité.
Une valeur de priorité statique est affectée à chaque processus et la planification dépend de cette priorité statique. Les processus planifiés avec
SCHED_OTHER
ont la priorité statique 0; les processus planifiés sousSCHED_FIFO
ouSCHED_RR
peuvent avoir une priorité statique dans la plage1
de99
(99 est le plus élevé).La
sys_sched_get_priority_max( )
routine renvoie la priorité statique du processus, elle renvoie0
pour les processus non temps réel.La priorité dynamique est utilisée pour les applications en temps non réel.
Tous les processus en temps réel ont une priorité plus élevée que les processus normaux. Linux implémente les priorités en temps réel conformément à POSIX. Le graphique ci-dessous peut donner un aperçu de la façon dont les processus sont planifiés avec leurs priorités.
Maintenant, nous pouvons émettre la commande ci-dessous pour vérifier la priorité en temps réel d'un processus. Ici, j'utilise watchdog car il avait une belle valeur répertoriée comme -.
Il s'agit de la sortie de la commande ci-dessus. Comme nous pouvons le voir, la priorité en temps réel est 99, ce qui est la priorité la plus élevée possible.
Donc, selon ma compréhension, la priorité en temps réel peut prendre une valeur maximale de 99 et il ne peut donc y avoir aucune valeur intéressante par-dessus. C'est la raison pour laquelle nous obtenons la bonne sortie en tant que - pour le chien de garde et d'autres processus système.
Les références
http://oreilly.com/catalog/linuxkernel/chapter/ch10.html http://atipaday.wordpress.com/2008/08/19/atad-21-linux-process-priority-range/
la source