Chaque processus en cours d'exécution sous Unix a une priorité qui lui est assignée.
Vous pouvez modifier la priorité du processus à l'aide de l'utilitaire nice et renice. La commande Nice lancera un processus avec une priorité de planification définie par l'utilisateur. La commande Renice modifiera la priorité de planification d'un processus en cours d'exécution.
Le noyau Linux planifie le processus et alloue le temps CPU en conséquence pour chacun d'eux. Mais, lorsqu'un de vos processus nécessite une priorité plus élevée pour obtenir plus de temps CPU, vous pouvez utiliser la commande nice et renice comme expliqué dans ce tutoriel.
La plage de priorité de planification du processus est de -20 à 19. Nous appelez cela comme une belle valeur.
Une belle valeur de -20 représente la priorité la plus élevée, et une belle valeur de 19 représente la moindre priorité pour un processus.
Par défaut, lorsqu'un processus démarre, il obtient la priorité par défaut de 0.
1. Afficher la belle valeur d'un processus
La priorité actuelle d'un processus peut être affichée à l'aide de la commande ps.
La colonne "NI" dans la sortie de la commande ps indique la valeur de nice actuelle (c'est-à-dire la priorité) d'un processus.
Nous allons lancer un programme de test appelé test.pl qui sera utilisé pour démontrer la commande nice et renice. Ce programme de test effectuera certaines tâches et fonctionnera pendant un certain temps.
$ perl test.pl
Si vous exécutez la commande ps comme indiqué ci-dessous, vous pouvez remarquer que ce programme test.pl a la valeur nice par défaut de 0 (regardez la colonne NI dans la sortie suivante).
$ ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 0 R bala 6884 6424 99 80 0 - 1556 - 13:45 pts/3 00:05:54 perl test.pl
2. Lancer un programme avec moins de priorité
Au lieu de lancer le programme avec la priorité par défaut, vous pouvez utiliser la commande nice pour lancer le processus avec une priorité spécifique.
Dans cet exemple, test.pl est lancé avec une belle valeur de 10.
$ nice -10 perl test.pl
Remarque : N'oubliez pas que -10 dans la commande ci-dessus définit la priorité d'un processus sur 10. Le – dans la commande nice représente le trait d'union, que nous utilisons pour transmettre des options à la commande.
Donc, pour passer la belle valeur de 5, vous direz -5. Pour passer la belle valeur de 6, vous direz -6.
Comme vous le voyez ci-dessous, ce programme est maintenant lancé avec une belle valeur de 10, ce qui signifie qu'il s'exécutera avec une priorité inférieure par rapport aux autres programmes lancés par défaut.
$ ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 0 R bala 7044 6424 99 90 10 - 1556 - 13:58 pts/3 00:00:03 perl test.pl
3. Lancer un programme avec une priorité élevée
Vous pouvez également lancer un programme avec une priorité plus élevée. Une valeur nice négative augmentera la priorité du processus. Ainsi, la valeur doit être spécifiée avec un — (deux traits d'union) devant la commande nice comme indiqué ci-dessous.
# nice --10 perl test.pl
Ainsi, pour passer la belle valeur de -5, vous ajouterez deux traits d'union devant 5. Pour passer la belle valeur de -6, vous ajouterez deux traits d'union devant 6.
Comme vous le voyez ci-dessous, ce programme est maintenant lancé avec une belle valeur de -10, ce qui signifie qu'il fonctionnera avec une priorité plus élevée par rapport aux autres programmes lancés par défaut.
# ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 R root 3534 3234 99 70 -10 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
Remarque :les utilisateurs réguliers ne sont pas autorisés à lancer un programme avec une priorité plus élevée. Seul l'utilisateur root est autorisé à lancer un programme avec une priorité élevée.
En tant qu'utilisateur régulier, si vous augmentez la priorité, vous obtiendrez le message d'erreur suivant de la commande nice.
$ nice --10 perl test.pl nice: cannot set niceness: Permission denied
Notez qu'après avoir affiché le message d'erreur ci-dessus, le programme continuerait à s'exécuter avec la priorité par défaut (c'est-à-dire :0).
4. Changez la priorité avec l'option -n
La priorité du processus peut être ajustée à l'aide de l'option -n.
Augmentez la priorité :
# nice -n -5 perl test.pl
Diminuez la priorité :
# nice -n 5 perl test.pl
5. Modifier la priorité d'un processus en cours
La priorité d'un processus déjà en cours d'exécution peut être modifiée à l'aide de la commande renice.
Dans cet exemple, le programme test.pl est déjà en cours d'exécution avec une belle valeur de -10.
# ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 R root 3534 3234 99 70 -10 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
Nous pouvons changer la valeur de nice du programme ci-dessus en -19 comme indiqué ci-dessous. Passez l'ID de processus du programme ci-dessus à l'option -p.
# renice -n -19 -p 3534
Vérifiez que la valeur de nice a été changée en -19.
# ps -fl -C "perl test.pl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 R root 3534 3234 99 70 -19 - 1557 ? 19:06 pts/1 00:00:56 perl test.pl
6. Modifier la priorité de tous les processus appartenant à un groupe
En utilisant l'option -g, vous pouvez modifier la priorité de tous les processus appartenant à un groupe. La commande suivante changera la valeur nice de tous les processus appartenant à geekstuff à 5.
# renice -n 5 -g geekstuff
7. Modifier la priorité de tous les processus appartenant à l'utilisateur
Renice permet de modifier la priorité de tous les processus appartenant à un utilisateur spécifique, comme indiqué ci-dessous.
# renice -n 5 -u bala
La commande ci-dessus changera la priorité de tous les processus appartenant à l'utilisateur bala. Il attribuera une belle valeur de 5 à tous les processus appartenant à l'utilisateur bala.
# ps -fl -C "perl" F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 0 R bala 2720 2607 99 85 5 - 1556 - 14:34 pts/2 00:05:07 perl test.pl 0 R bala 2795 2661 99 85 5 - 1556 - 14:39 pts/3 00:00:09 perl 2.pl