niceest un programme présent sur les systèmes d'exploitation Unix et similaires à Unix tels que Linux . Il est directement mappé sur un appel du noyau du même nom. est utilisé pour invoquer un utilitaire ou un script shell avec une priorité CPU particulière , donnant ainsi au processus plus ou moins de temps CPU que les autres processus. Une gentillesse de -20 est la gentillesse la plus basse, ou la priorité la plus élevée. La gentillesse par défaut des processus est héritée de son processus parent et est généralement de 0.
nice
Les systèmes ont divergé sur la priorité la plus basse. Les systèmes Linux documentent une priorité de 19 comme la plus basse, les systèmes BSD documentent une priorité de 20 comme la plus basse. Dans les deux cas, la priorité « la plus basse » est documentée comme étant exécutée uniquement lorsque rien d'autre ne le souhaite.
Étymologie
La valeur de gentillesse est un nombre attaché aux processus dans les systèmes *nix, qui est utilisé avec d'autres données (telles que la quantité d' E/S effectuées par chaque processus) par le planificateur de processus du noyau pour calculer la « vraie priorité » d'un processus, qui est utilisée pour décider de la quantité de temps CPU qui lui est alloué.
Le nom du programme, nice , est une allusion à sa tâche de modification de la valeur de gentillesse d'un processus.
Le terme de gentillesse lui-même provient de l'idée qu'un processus avec une valeur de gentillesse plus élevée est plus agréable envers les autres processus du système et envers les utilisateurs en raison de la demande de moins de puissance CPU, libérant ainsi du temps de traitement et de la puissance pour les programmes les plus exigeants, qui seraient dans ce cas moins agréables envers le système du point de vue de l'utilisation du processeur.
Utilisation et effet
nicedevient utile lorsque plusieurs processus demandent plus de ressources que ce que le processeur peut fournir. Dans cet état, un processus de priorité plus élevée obtiendra une plus grande part du temps processeur qu'un processus de priorité inférieure. Seul le superutilisateur (root) peut définir la gentillesse sur une valeur inférieure (c'est-à-dire une priorité plus élevée). Sous Linux, il est possible de modifier /etc/security/limits.confpour permettre à d'autres utilisateurs ou groupes de définir des valeurs de gentillesse inférieures.
Si un utilisateur souhaite compresser un fichier volumineux sans ralentir les autres processus, il peut exécuter la procédure suivante :
$ nice -n 19 tar cvzf archive.tgz grand fichier
L'effet mathématique exact de la définition d'une valeur de gentillesse particulière pour un processus dépend des détails de la conception du planificateur sur cette implémentation d'Unix. Le planificateur d'un système d'exploitation particulier aura également diverses heuristiques intégrées (par exemple pour favoriser les processus qui sont principalement liés aux E/S par rapport aux processus qui sont liés au processeur). À titre d'exemple simple, lorsque deux processus par ailleurs identiques liés au processeur s'exécutent simultanément sur un système Linux à un seul processeur, la part de temps CPU de chacun sera proportionnelle à 20 − p , où p est la priorité du processus. Ainsi, un processus, exécuté avec nice +15, recevra 25 % du temps CPU alloué à un processus de priorité normale : (20 − 15)/(20 − 0) = 0,25. Sur le planificateur BSD 4.x, en revanche, le rapport dans le même exemple est d'environ dix pour un.
Commandes similaires
Le programme associé renicepeut être utilisé pour modifier la priorité d'un processus déjà en cours d'exécution.
Linux dispose également d'un ioniceprogramme qui affecte la planification des E/S plutôt que le temps CPU.