Réponse courte
PR est le niveau de priorité. Plus le PR est bas, plus la priorité du processus sera élevée.
Le PR est calculé comme suit:
- pour les processus normaux: PR = 20 + NI (NI est gentil et va de -20 à 19)
- pour les processus en temps réel: PR = - 1 - real_time_priority
(real_time_priority va de 1 à 99)
Longue réponse
Il existe 2 types de processus, les processus normaux et le temps réel.
Pour les processus normaux (et uniquement pour ceux-ci), nice s’applique comme suit:
Agréable
L'échelle de "gentillesse" va de -20 à 19, alors que -20 est la priorité la plus élevée et 19 la priorité la plus basse. Le niveau de priorité est calculé comme suit:
PR = 20 + NI
Où NI est le niveau de satisfaction et PR, le niveau de priorité. Comme nous pouvons le constater, le -20 correspond en fait à 0, tandis que le 19 en correspond à 39.
Par défaut, une valeur de programme est égale à 0, mais l'utilisateur root peut lancer des programmes avec une valeur de jeu spécifiée à l'aide de la commande suivante:
nice -n <nice_value> ./myProgram
Temps réel
Nous pourrions aller encore plus loin. La priorité nice est en réalité utilisée pour les programmes utilisateur. Alors que la priorité globale UNIX / LINUX a une plage de 140 valeurs, la valeur sympa permet au processus de mapper à la dernière partie de la plage (de 100 à 139). Cette équation laisse les valeurs de 0 à 99 inaccessibles, ce qui correspond à un niveau de PR négatif (de -100 à -1). Pour pouvoir accéder à ces valeurs, le processus doit être défini en "temps réel".
Il existe 5 politiques de planification dans un environnement LINUX qui peuvent être affichées à l'aide de la commande suivante:
chrt -m
Ce qui montrera la liste suivante:
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
Les processus de planification peuvent être divisés en 2 groupes, les stratégies de planification normales (1 à 3) et les stratégies de planification en temps réel (4 et 5). Les processus en temps réel auront toujours la priorité sur les processus normaux. Un processus en temps réel peut être appelé à l'aide de la commande suivante (voici comment déclarer une règle SCHED_RR):
chrt --rr <priority between 1-99> ./myProgram
Pour obtenir la valeur PR d'un processus en temps réel, l'équation suivante est appliquée:
PR = -1 - rt_prior
Où rt_prior correspond à la priorité entre 1 et 99. Pour cette raison, le processus qui aura la priorité la plus élevée par rapport aux autres processus sera celui appelé avec le numéro 99.
Il est important de noter que pour les processus en temps réel, la valeur de courtoisie n'est pas utilisée.
Pour voir la "gentillesse" actuelle et la valeur PR d'un processus, la commande suivante peut être exécutée:
top
Ce qui montre la sortie suivante:
Dans la figure, les valeurs PR et NI sont affichées. Il est bon de noter le processus avec la valeur PR -51 qui correspond à une valeur temps réel. Il existe également des processus dont la valeur PR est indiquée par "rt". Cette valeur correspond en fait à une valeur PR de -100.
niceness
peuvent être utilisés pour donner une priorité négative de sorte que cette tâcheniceness
se démarque des tâches hautement prioritaires? (c’est-à-dire que nous sommes en train denice
laisser d’autres ressources d’accès? Ou est-ce que cela m’a simplement dérouté?