Définir un meilleur niveau pour un process est-il un moyen efficace de réduire son impact sur la charge système / le time CPU?

J'ai un travail rsync cron qui pousse la charge du server et triggers les alertes du moniteur. Si je mets le travail à un niveau élevé, cela réduirait-il efficacement l'impact sur les valeurs de charge du système?

Cela ne réduira pas votre charge.

Il laissera plus souvent les autres process utiliser le time CPU s'il y a une contention possible des ressources (plusieurs process «concurrencynt» pour manque de time CPU disponible).

Changer la bonne valeur ne réduira pas directement la charge du système. Il peut cependant être utilisé pour laisser plus de ressources disponibles pour les process restants, ce que je soupçonne est ce que vous voulez vraiment.

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

Kernel décide combien de time processeur est requirejs pour un process basé sur la valeur intéressante. La plage de valeurs possibles est de -20 à 20. Un process qui a une bonne valeur de -20 est une priorité très élevée. Le process qui a une belle valeur de 20 est une priorité très faible.

Donc oui, vous voulez exécuter le travail cron à un niveau plus élevé que les autres process si vous voulez vous assurer que les autres process ont la priorité.

Pour cela, 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 à la gentillesse augmenté de 10. Vous voulez probablement tester un peu pour find un bon équilibre entre les process restants et le time d'exécution du script.

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

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

Si vous exécutez un process lié au processeur (rsync ne l'est pas, mais seulement par exemple), il voudra toujours utiliser le time CPU chaque fois qu'il en existe. Comme il veut toujours s'exécuter, il apportera une valeur de charge de 1,0 à la valeur de charge du système. Peu importe le niveau du process, car la longueur moyenne de la file d'exécution n'est pas affectée par l' ordre des process dans la file d'exécution.

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

  • Utilisez la command nice pour réduire manuellement la priorité de la tâche.
  • Utilisez la command cpulimit pour suspendre le process de manière répétée afin qu'il ne dépasse pas une certaine limite.
  • Utilisez les built-in control groups de Linux, un mécanisme qui indique au planificateur de limiter la quantité de ressources disponibles pour le process.

Ressources

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