La définition d'un niveau supérieur agréable pour un processus est-elle un moyen efficace de réduire son impact sur la charge système / le temps processeur?

10

J'ai un travail crs rsync qui pousse la charge du serveur et déclenche des alertes de moniteur. Si je définissais le travail pour qu'il s'exécute avec un niveau agréable élevé, cela réduirait-il efficacement l'impact qu'il a sur les valeurs de charge du système?

Gregg Leventhal
la source
Pour rsync, il serait plus efficace d'utiliser ses commutateurs pour réduire la compression ou limiter l'utilisation de la bande passante.
Nemo

Réponses:

9

Cela ne réduira pas votre charge.

Il ne permettra aux autres processus d'utiliser le temps CPU plus souvent qu'en cas de conflit potentiel de ressources (plusieurs processus "en concurrence" pour un temps CPU disponible insuffisant).

Totor
la source
9

La modification de la valeur de Nice ne réduira pas directement la charge du système. Il peut cependant être utilisé pour laisser plus de ressources disponibles aux processus restants, ce que je soupçonne être ce que vous voulez vraiment.

Depuis http://linux.101hacks.com/monitoring-performance/hack-100-nice-command-examples/

Le noyau décide du temps processeur requis pour un processus en fonction de la bonne valeur. La plage de valeurs de Nice possible est: -20 à 20. Un processus qui a une valeur de -20 est très prioritaire. Le processus qui a une belle valeur de 20 est très peu prioritaire.

Alors oui, vous voulez exécuter la tâche cron à un niveau supérieur à celui des autres processus si vous voulez vous assurer que les autres processus ont la priorité.

Pour ce faire, vous voulez que votre script cron soit exécuté comme ceci:

/bin/nice -n 10 /path/to/cron-script

Cela exécutera le script cron à une douceur augmentée de 10. Vous voudrez probablement tester un peu pour trouver un bon équilibre (jeu de mots non prévu) entre les processus restants et le temps d'exécution du script.

Voir aussi Comment fonctionne bien? et http://www.cyberciti.biz/faq/change-the-nice-value-of-a-process/ pour plus de détails.

M_dk
la source
5

Il est peu probable que la modification du niveau agréable d'un processus affecte la valeur de charge du système. La valeur de charge système est la longueur moyenne de la file d'attente d'exécution , qui est essentiellement le nombre de processus souhaitant utiliser le CPU.

Si vous exécutez un processus lié au CPU (rsync ne l'est pas, mais juste par exemple), il voudra toujours utiliser le temps CPU chaque fois qu'il y en a de disponible. Puisqu'il veut toujours fonctionner, il contribuera une valeur de charge de 1,0 à la valeur de charge du système. Peu importe le niveau agréable du processus, car la longueur moyenne de la file d'attente d'exécution n'est pas affectée par l' ordre des processus dans la file d'attente d'exécution.

Greg Hewgill
la source
C'est important à retenir. Si vous exécutez un grand nombre de processus NICED, la charge du système regarder très haut , même si , en fait , pas de travail réel se ralentit. Dans certains cas, la charge révèle un vrai problème, c'est-à-dire que Linux n'est pas en mesure de laisser le processus niced utiliser toutes les ressources qu'il pourrait réellement utiliser sans problème (tous sont laissés la plupart du temps en attente sans gain).
Nemo
3

Vous pouvez envisager 3 façons de réduire votre impact sur la charge système / le temps processeur:

  • Utilisez la nicecommande pour réduire manuellement la priorité de la tâche.
  • Utilisez la cpulimitcommande pour suspendre à plusieurs reprises le processus afin qu'il ne dépasse pas une certaine limite.
  • Utilisez Linux built-in control groups, un mécanisme qui indique au planificateur de limiter la quantité de ressources disponibles pour le processus.

Ressources

http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups

RafaSashi
la source
Vous voulez certainement utiliser des groupes de contrôle pour équilibrer les ressources système. Cela permet de partitionner les ressources comme vous le souhaitez (CPU, mémoire, E / S disque, bande passante du disque) et dans des situations de faible charge, même les processus de «faible priorité» obtiennent des performances maximales contrairement aux astuces du mode utilisateur qui finissent souvent par ralentir le processus de faible priorité tout le temps.
Mikko Rantalainen