Du code, du communisme

Diminuer la charge cpu d'un process avec renice

Il arrive que l’on ait à exécuter certains scripts sur un serveur de prod déjà pas mal encombré, je prends comme exemple mon cas ou j’ai du réencoder des vidéos, le load average est monté à 6, les perfs en sont du coup devenues exécrables.
Sous linux on a heureusement plein d’outils sympas, renice en fait partie.
La commande renice permet d’assigner une priorite a un process en cours qui va de -20 (très élevée) à 20 (très bas), 0 etant la valeur par défaut. La commande est « renice priorité id_process », dans mon cas:
Note: On peut connaitre l’id du process avec un top ou htop

PID USER        PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
14378 max 	35  15  129m  12m 4632 R 99.4  0.2   0:03.22 ffmpeg
22959 max       20  15  101m  79m  924 S  1.7  1.3   8:51.85 python encode.py
22958 nginx     20   0  105m  83m  924 S  1.0  1.4   8:51.44 nginx

Ici ffmpeg a un nice (NI) de 15 qu’il a hérité de mon script Python encode.py a qui j’ai fais un renice de 15 avec la commande « renice 15 22959 ». Les process héritent automatiquement du nice des parents qui les ont lancés.