Processus 'gentillesse' vs 'priorité'

70

En exécutant top , je peux voir cet exemple de sortie (raccourci):

  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

Deux valeurs m'intéressent: PR (Priority) et NI (Niceness).

Si j'ai bien compris ce que j'ai déjà découvert, les deux déterminent la quantité de temps processeur qu'un processus aura par rapport aux autres processus. Mais quelle est la différence entre ces valeurs alors?

Pouvez-vous également décrire comment manipuler ces valeurs d’un processus et dans quelles circonstances cela pourrait être utile?

    
posée Byte Commander 05.08.2015 - 11:17
la source

2 réponses

70

nice value est un espace utilisateur et la priorité PR est la priorité réelle du processus utilisée par le noyau Linux. Dans Linux, les priorités du système vont de 0 à 139, de 0 à 99 pour le temps réel et de 100 à 139 pour les utilisateurs. La plage de valeurs gentilles est de -20 à +19, -20 étant la plus élevée, 0 la plus faible et +19 la plus faible. la relation entre la valeur gentille et la priorité est:

PR = 20 + NI

donc, la valeur de PR = 20 + (-20 to +19) va de 0 à 39 qui mappe 100 à 139.

Selon le manuel:

  

PR - Priorité Priorité de planification de la tâche. Si tu vois   «rt» dans ce champ, cela signifie que la tâche est exécutée sous «temps réel»   priorité de planification.

NI est une belle valeur de tâche.

  

NI - Nice Value La valeur intéressante de la tâche. Un négatif sympa   valeur signifie une priorité plus élevée, alors qu'une valeur positive signifie   priority.Zero dans ce champ signifie simplement que la priorité ne sera pas ajustée   dans la détermination de la capacité de répartition d'une tâche

Modifier: Par défaut, lorsqu'un programme est lancé sous Linux, il est lancé avec la priorité "0". Cependant, vous pouvez modifier la priorité de vos programmes par l’une des méthodes suivantes.

  1. Vous pouvez lancer un programme avec la priorité requise en utilisant

    nice -n nice_value program_name
    
  2. vous pouvez également modifier la priorité d'un processus déjà en cours à l'aide de

    renice -n nice_value -p process_id
    
réponse donnée pl_rock 05.08.2015 - 11:51
la source
19

Quelle est la priorité et pourquoi devrais-je m'en préoccuper?

Lorsque vous parlez de processus, la priorité est de gérer le temps du processeur. Le processeur ou le processeur est comme un être humain jonglant avec plusieurs tâches en même temps. Parfois, nous pouvons avoir suffisamment de place pour entreprendre 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 voulons consacrer toute notre énergie à résoudre ce problème tout en mettant de côté des tâches moins importantes.

Sous Linux, nous pouvons définir des directives à suivre par le processeur lorsqu'il examine toutes les tâches à effectuer. Ces directives sont appelées gentillesse ou valeur agréable. L'échelle de gentillesse de Linux va de -20 à 19. Plus le chiffre est bas, plus la tâche est prioritaire. Si la valeur de gentillesse est élevée comme 19, la tâche sera définie sur la priorité la plus basse et le processeur le traitera chaque fois qu'il aura une chance. La valeur de la valeur par défaut est zéro.

En utilisant cette échelle, nous pouvons affecter nos ressources CPU de manière plus appropriée. Les programmes de priorité inférieure qui ne sont pas importants peuvent être réglés sur une valeur supérieure, tandis que les programmes hautement prioritaires tels que les démons et les services peuvent être configurés pour recevoir davantage le focus du processeur. Vous pouvez même donner à un utilisateur spécifique une valeur inférieure pour tous ses processus afin de limiter sa capacité à ralentir les services de base de l'ordinateur.

Source

Définissez la priorité pour les nouveaux processus avec nice , par exemple

nice -n 10 firefox

pour les processus existants

renice 10 -p $(pgrep firefox)

Pour définir la priorité <0 , vous avez besoin de sudo , par exemple:

renice -1 -p $(pgrep firefox)
renice: failed to set priority for 2769 (process ID): Permission denied

mais pas pour une priorité >=0

Exemple

% ps -o pid,comm,pri,nice -p $(pgrep firefox)
  PID COMMAND         PRI  NI
 2769 firefox          19   0

% renice 10 -p 2769     # note, we don't need sudo here
2769 (process ID) old priority 0, new priority 10

% ps -o pid,comm,pri,nice -p $(pgrep firefox)
  PID COMMAND         PRI  NI
 2769 firefox           9  10

% sudo renice -19 -p 2769                    
 2769 (process ID) old priority 10, new priority -19

% ps -o pid,comm,pri,nice -p $(pgrep firefox)
  PID COMMAND         PRI  NI
 2769 firefox          38 -19

Autre exemple

Renommer tous les processus en cours pour un utilisateur spécifique

renice 20 -u user_name
    
réponse donnée A.B. 05.08.2015 - 13:06
la source

Lire d'autres questions sur les étiquettes