Quand un processus est créé, il passe dans une file d’attente de priorité. Ce processus hérite de la valeur nice
de son parent et quand il est lancé depuis un terminal, il hérite du nice
du processus du shell.
De façon générale, lorsqu’un nouveau processus est crée, sa valeur nice
par défaut est 0.
Les priorités sous Linux
Gestion de la priorité sous linux :
- de -1 à -20 : priorités HAUTES (-20 étant la plus haute)
- de 0 à 19 : priorités BASSES (19 étant la plus basse)
Higher Priority Lower Priority |
Afficher les priorités
La commande top
permet d’afficher les priorités des processus, il s’agit de la colonne NI
:
Tasks: 666 total, 42 running, 624 sleeping, 0 stopped, 0 zombie |
Avec la commande ps
il est possible d’afficher des champs spécifiques et de ranger les processus par ordre de priorité :
# ps axo pid,comm,nice,cls --sort=-nice |
Les champs pid
, comm
, nice
, cls
signifient :
pid
: PIDcomm
: COMMANDnice
: NICEcls
: Scheduling CLass of the process (child process inherits the scheduling class and attributes of the parent process through fork)
Commandes nice et renice
Les commandes nice
et renice
permettemt de gérer la file d’attente des processus.
Commande nice
Il est possible de choisir la priorité d’un processus lors de son exécution avec la commande nice
:
# nice -n 10 sleep 120 & |
Commande renice
Il est possible de changer la priorité d’un processus avec la commande renice
avec son PID :
# renice -n 5 1337 |
/!\ Résumé des commandes
Commandes :
# nice -n <priority> <command> // specifie la priorité d'un processus |
Cas pratiques
Consommation de ressources
Deux processus (sha1sum
et md5sum
) consomment trop de temps processeur :
[aline@SERVER02 ~]$ ps aux --sort=pcpu |
Leur niveau de priorité :
[aline@SERVER02 ~]$ ps -o pid,pcpu,nice,comm $(pgrep sha1sum;pgrep md5sum) |
Ajustement du niveau de priorité à 10 :
[aline@SERVER02 ~]$ sudo renice -n 10 2310 2337 |
Vérification de la priorité :
[aline@SERVER02 ~]$ ps -o pid,pcpu,nice,comm $(pgrep sha1sum;pgrep md5sum) |
Ordonnancement des processus
Voir le nombre de processeur sur SERVER01 :
[aline@SERVER01 ~]$ grep -c '^processor' /proc/cpuinfo |
Lancer une boucle pour démarrer 4 instances de sha1sum /dev/zero &
:
[aline@SERVER01 ~]$ for i in {1..4}; do sha1sum /dev/zero & done |
Voir les tâches en arrière-plan :
[aline@SERVER01 ~]$ jobs |
Affichage du pourcentage d’utilisation du processeur pour les 3 processus :
[aline@SERVER01 ~]$ ps u $(pgrep sha1sum) |
Tuez les tous avec pkill
:
[aline@SERVER01 ~]$ pkill sha1sum |
Vérification
[aline@SERVER01 ~]$ jobs |
Lancer une boucle pour démarrer 3 instances de sha1sum /dev/zero
:
[aline@SERVER01 ~]$ for i in {1..3}; do sha1sum /dev/zero & done |
Lancement d’une autre instance avec une priorité de 10 :
[aline@SERVER01 ~]$ nice -n 10 sha1sum /dev/zero & |
Affichage du pourcentage d’utilisation du processeur pour les 4 processus :
[aline@SERVER01 ~]$ ps -o pid,pcpu,nice,comm $(pgrep sha1sum) |
Rechangement de priorité pour le processus num 1120 :
[aline@SERVER01 ~]$ sudo renice -n 5 1120 |
Affichage du pourcentage d’utilisation du processeur pour les 4 processus :
[aline@SERVER01 ~]$ ps -o pid,pcpu,nice,comm $(pgrep sha1sum) |
tuez les tous avec pkill
:
[aline@SERVER01 ~]$ pkill sha1sum |
Optimisation des performances du système
Vérification de l’installation, de l’activation et de l’exécution du paquet tuned
:
[aline@SERVER01 ~]$ dnf list tuned |
Listing des tunning disponibles. Le profil actif est virtual-guest
:
[aline@SERVER02 ~]$ sudo tuned-adm list |
Changement du profil en balanced
:
[aline@SERVER02 ~]$ sudo tuned-adm profile balanced |
Vérifier que le profil balanced
est celui par défaut :
[aline@SERVER02 ~]$ sudo tuned-adm profile_info |
Lister les processus par ordre de consommation processeur :
[aline@SERVER02 ~]$ ps aux --sort=pcpu |
Niveau de priorité des deux principaux consommateurs de processeur :
[aline@SERVER02 ~]$ ps -o pid,pcpu,nice,comm $(pgrep sha1sum;pgrep md5sum) |
Changement de la priorité :
[aline@SERVER02 ~]$ sudo renice -n 10 2310 2337 |
Vérification :
[aline@SERVER02 ~]$ ps -o pid,pcpu,nice,comm $(pgrep sha1sum;pgrep md5sum) |
Documentation
MAN nice(1)
MAN renice(1)
MAN top(1)
MAN ps
https://docs.oracle.com/cd/E19455-01/806-4750/chap7rt-20/index.html
https://doc.ubuntu-fr.org/tutoriel/changer_priorite_processus