web-dev-qa-db-fra.com

Comment une charge moyenne de 0.00 peut-elle exister?

Je comprends que l’équilibre de charge est un moyen de mesurer l’occupation du processeur. Cependant, je ne comprends pas comment une charge moyenne de 0.00 peut exister. Le noyau ne fonctionne-t-il pas toujours? Cela ne fait-il pas partie de la charge du processeur?

12
NerdOfLinux

La charge moyenne sur une période correspond au nombre moyen de processus en concurrence pour le processeur sur cette période. Le "noyau" ne s'exécute pas s'il n'y a rien à faire; plus spécifiquement, s'il n'y a rien à faire, la CPU est assignée à un thread spécial "inactif" qui n'est pas compté (et qui peut faire des choses comme mettre la CPU est un état dans lequel elle attend une interruption).

Ainsi, par exemple, une charge moyenne de 0,6 sur 5 minutes signifie généralement qu'au cours de ces 5 minutes, le processeur a été utilisé pendant un total de 3 minutes par un ou plusieurs processus (ou par le noyau) et pendant un total de 2 minutes. était inactif. Mais, comme l'observe @UKMonkey, cela peut vouloir dire qu'après 4 minutes et demie d'inaction, 6 processus se disputent le processeur pendant les 30 dernières secondes ...

La CPU est inactive si aucun processus ne veut l'utiliser pour exécuter du code, car tous les processus attendent la fin d'une opération d'entrée ou de sortie ou sont en attente de réactivation à une heure ultérieure.

Les liens de @ Panther fournissent des discussions plus approfondies sur les moyennes de charge.

16
AlexP

Une moyenne de charge est une mesure de la surcharge d'un cœur de processeur en termes de nombre de processus souhaitant l'utiliser simultanément.

Les éléments suivants supposent un processeur à cœur unique (thread unique):

  • .

    Le processeur ne fait rien du tout. Si un processus commençait à utiliser le processeur, il serait le seul à l’utiliser.

    Un processeur inactif ne signifie pas qu'aucun processus n'est en cours d'exécution. Par exemple, les services d'arrière-plan et le noyau sont toujours en cours d'exécution et occupent toujours de la mémoire. Ils n'utilisent simplement aucun processeur, car ils ne font rien.

  • 1.

    Le processeur est au maximum de son utilisation, mais il n'y a pas de conflit entre les processus d'utilisation du processeur. Autrement dit, un seul processus est en cours d'exécution et peut donc réclamer 100% du temps CPU pour lui-même. Alternativement, plusieurs processus sont en cours d'exécution, mais aucun ne réclame 100% de CPU et leur utilisation combinée totalise jusqu'à 100%. Ils fonctionnent tous toujours aussi vite qu’ils le feraient même s’ils avaient le processeur pour eux-mêmes.

  • Supérieur à 1.

    Le processeur est au maximum de son utilisation et de nombreux processus souhaitent l’utiliser simultanément, de sorte qu’ils fonctionnent effectivement plus lentement qu’ils ne pourraient autrement l’exécuter sur un processeur inactif. Par exemple, une charge moyenne de 3,0 indique que les processus s'exécutent à un tiers de leur vitesse d'exécution. Une charge moyenne de 50,0 indique que les processus s'exécutent à une vitesse égale à 1/50, en raison de tous les autres processus en cours d'exécution. Autrement dit, les chiffres supérieurs à 1,0 indiquent que le processeur disponible est en train de s’étirer entre de plus en plus de processus.

Avoir un processeur à plusieurs cœurs ne change pas la signification des chiffres, mais peut changer leur interprétation. Par exemple, si vous avez un processeur à 4 cœurs, une charge de 1.0 équivaut toujours à un processus utilisant 100% d'UC sur un cœur, mais il existe trois autres cœurs. Ainsi, sur un processeur à 4 cœurs, l'efficacité maximale est de 4,0, et non de 1,0, et le point auquel tout fonctionne à 1/3 d'efficacité est de 12,0, et non de 3,0. Pour ajouter à la complexité, un processus unique peut avoir plus d'un thread, chacun revendiquant son propre processeur. Ainsi, un seul processus peut utiliser 100% des 4 cœurs s'il est multithread.

note importante

L'utilisation du processeur n'est qu'une des ressources pouvant limiter les performances d'un processus. I/O est un autre, et n'est pas pris en compte dans la charge du processeur. Un processus utilisant une certaine quantité de ressources processeur ne pourra pas nécessairement en utiliser davantage sur une machine chargée plus faiblement car ils risquent de rencontrer d'autres goulots d'étranglement.

Quelle est la meilleure charge moyenne

Cela dépend vraiment de ce que vous faites et de votre préférence pour la réactivité ou pour que le processeur travaille aussi dur que possible.

Pour quelque chose qui doit être fait autant que possible, la charge moyenne devrait être égale ou légèrement supérieure au nombre de cœurs. Tout dépassement de cette valeur indique que vous pourriez en faire plus, plus rapidement, en séparant les tâches sur plusieurs ordinateurs/serveurs.

Pour que quelque chose doit être aussi réactif que possible (réagir rapidement), la charge moyenne doit être une marge confortable inférieure au nombre de cœurs, par exemple un demi ou un tiers, ce qui permet une certaine variation intermittente avant que ne se produisent des ralentissements.

Pour un invité de virtualisation (par exemple, KVM), plus la charge est moyenne, mieux c'est, car vous partagez le processeur avec d'autres invités du même hôte.

13
thomasrutter

Une charge moyenne de 0,00 signifie que votre système est inactif et qu'il n'y a pas de retard, de stress ou de goulot d'étranglement pour votre CPU au cours du temps mesuré.

Cela ne signifie pas que votre processeur est inactif, cela signifie simplement que si un processus veut du temps CPU, il n'y a pas d'attente.

Il est difficile d'en dire plus sur le peu que vous avez posté, car cela dépend de la façon dont vous avez mesuré votre charge (système, par utilisateur?) Et sur quelle durée.

Pour plus de détails et une lecture intéressante, voir

https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/

http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages

http://www.brendangregg.com/blog/2017-08-08/linux-load-averages.html

2
Panther