Diminuer la charge cpu d’un process avec renice


Il arrive que l’on ai a executer certains scripts sur un serveur de prod deja pas mal encombré, je prends comme exemple mon cas ou j’ai du reencoder des vidéos, le load average est monté à 6, les perfs en sont du coup devenues execrables.
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 (tres elevee) à 20 (tres bas), 0 etant la valeur par défaut. La commande est “renice priorite 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 à un nice (NI) de 15 qu’il a herité de mon script Python encode.py a qui j’ai fais un renice de 15 avec la commande “renice 15 22959”. Les process heritent automatiquement du nice des parents qui les ont lancés.

2 thoughts on “Diminuer la charge cpu d’un process avec renice

  • Sam

    A noter que la commande ionice (qu’il faut installer), permet de faire la même chose pour l’accès au disque. En utilisant les deux, on peut diminier la consommation au CPU et l’accès disque, rendant un process très léger.

Comments are closed.

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.