En cours d'exécution top
, je peux voir cet exemple de sortie (abrégé):
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
Je suis intéressé par deux valeurs: PR
(priorité) et NI
(gentillesse).
Si j'ai bien compris ce que j'ai déjà découvert, les deux déterminent le temps de traitement d'un processus par rapport à d'autres processus. Mais quelle est la différence entre ces valeurs alors?
Pourriez-vous également décrire comment manipuler ces valeurs d'un processus et dans quelles circonstances cela pourrait être utile?
la source
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é?pr
20, donc égales, la tâche un a unni
de 0 et la tâche deux ani
de 20, donc, cela signifierait que la tâche deux céderait des ressources pour la tâche un, car elle estnicer
Quelle est la priorité et pourquoi devrais-je m'en soucier?
En matière de processus, la priorité est la gestion du temps processeur. Le processeur ou le processeur est comme un être humain jonglant avec plusieurs tâches en même temps. Parfois, nous pouvons avoir assez de place pour prendre en charge plusieurs projets. Parfois, nous ne pouvons nous concentrer que sur une chose à la fois. D'autres fois, quelque chose d'important apparaît et nous souhaitons consacrer toute notre énergie à la résolution de ce problème tout en mettant en veilleuse les tâches moins importantes.
Sous Linux, nous pouvons définir des directives à suivre par le processeur lorsqu'il examine toutes les tâches qu'il doit effectuer. Ces directives sont appelées gentillesse ou valeur agréable. L'échelle de gentillesse de Linux va de -20 à 19. Plus le nombre est bas, plus la tâche reçoit de priorité. Si la valeur de gentillesse est un nombre élevé, tel que 19, la tâche sera réglée sur la priorité la plus basse et le CPU la traitera chaque fois que cela sera possible. La valeur de courtoisie par défaut est zéro.
En utilisant cette échelle, nous pouvons allouer nos ressources en CPU de manière plus appropriée. Les programmes moins prioritaires qui ne sont pas importants peuvent être définis sur une valeur plus élevée, tandis que les programmes hautement prioritaires tels que les démons et les services peuvent être configurés pour recevoir davantage d’attention du processeur. Vous pouvez même attribuer à un utilisateur spécifique une valeur de transaction inférieure pour tous ses processus, ce qui vous permet de limiter leur capacité à ralentir les services de base de l'ordinateur.
La source
Définir la priorité pour les nouveaux processus avec
nice
, par exemplepour les processus existants
Pour définir la priorité dont
<0
vous avez besoinsudo
, par exemple:mais pas pour une priorité
>=0
Exemple
Autre exemple
Pour renommer tous les processus en cours pour un utilisateur spécifique
la source
renice 10
fonctionnerait également sanssudo
, non? Et pourriez-vous ajouter un exemple pour rendre tous les processus d'un utilisateur spécifique plus agréables? Ce serait en fait très utile si quelqu'un d'autre est connecté en même temps et a quelques processus inutiles mais gourmands en ressources (comme un jeu flash en pause dans Firefox, les petits frères font ce genre de choses ...: - /)0
ou… il y a le problème;)ps
est:PRI: 38, NI: -19
cependant, avectop
il estPR:1, NI -19
pourquoi?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:
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:
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:
Ce qui montrera la liste suivante:
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):
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:
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.
la source