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.
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.
merci !