Nice : Prioriser un processus
Ceci peut être utile si vous voulez empêcher une tâche longue et non urgente de vous plomber votre système. Définissez une priorité inférieure à un processus pour empêcher qu’il influe sur le reste de votre système.
La valeur du nice est settée à la création du processus. La plupart du temps elle est de ‘0’ par défaut.
Elle va de -20 à +20. Plus elle est élevée, moins le processus est important à l’égard du système, et plus elle est basse (en dessous de 0 donc), plus elle sera prioritaire sur les autres process aux valeurs plus hautes.
Seul le superutilisateur root à la possibilité d’accorder une valeur négative (et donc une priorité élevée).
nice [commande] → Lancer un programme en priorité 10 (basse).
nice -n [valeur] [nom du programme] → Démarrer un programme avec une valeur précise.
Renice : Modifier la priorité d’un processus existant
Je pense qu’il n’y a pas grand chose à ajouter. Bien entendu, vous devez être propriétaire du processus ou alors être root pour modifier sa priorité. À noter qu’il est aussi possible de renicer tous les processus d’un utilisateur en particulier
renice [valeur] [PID] → Façon la plus simple de renicer un processus.
renice [valeur] -u [utilisateur] → Renicer tous les processus d’un utilisateur
Connaître les priorités de ses programmes
Il y a beaucoup de moyens d’afficher la valeur de nice de ses programmes. La plus courante est encore d’utiliser top, repérable à la colonne suivante:
(À noter qu’il est aussi possible de renicer un processus directement depuis top en appuyant sur ‘r’)
Vous avez aussi la possibilité d’utiliser la commande suivante, qui vous permet d’afficher exclusivement ce que vous avez besoin, et de rajouter ou enlever des colonnes selon votre envie (RTFM):
ps -eo “%p %c %n” → Affiche la liste de tous les programmes, avec PID, nom et nice.
Bonus: appliquer un nice à du I/O
Le I/O (Input/Output) est tout ce qui est interaction entre le système et un device externe. Ceci est la plupart du temps un disque dur. Oui oui, il est donc possible de prioriser la capacité d’un programme à écrire sur le disque. Trois classes sont donc possibles sur la majorité des systèmes, représentées par les nombres suivants :
- Real Time: Priorité haute d’accès au disque pour ce processus, ce qui peut gêner l’exécution d’autres processes. A donc utiliser avec précaution.
- Best Effort: Type par défaut. Le système se débrouille pour sustenter chacun de façon égale.
- Idle: Le processus ne pourra accéder au disque que si aucun autre programme ne le fait déjà.
Les deux premières classes peuvent après avoir des niveaux, permettant de gérer finement l’allocation. Mais je ne vais pas rentrer dans ces détails, et seulement donner la commande basique:
ionice -c [classe] [commande] → Lancer le processus avec la classe demandée.
La valeur à utiliser est donc le numéro correspondant à la classe choisie de la liste ci-dessus. À noter aussi que par défaut les classes que vous verrez à des programmes déjà existants sont souvent 0 ou 4. Ces deux classes utilisent par défaut la classe Best Effort (2).