comprendre la charge du processeur Linux-quand devriez-vous être inquiet?

Andre Lewis le 28 juillet 2019

vous connaissez peut-être déjà les moyennes de charge Linux. Les moyennes de charge sont les trois nombres affichés avec les commandesuptime Ettop – elles ressemblent à ceci:

moyenne de charge: 0.09, 0.05, 0.,01

La plupart des gens ont une idée de ce que signifient les moyennes de charge: les trois nombres représentent des moyennes sur des périodes de temps progressivement plus longues (moyennes d’une, Cinq et quinze minutes), et que les nombres inférieurs sont meilleurs. Les nombres plus élevés représentent un problème ou une machine surchargée. Mais, quel est le seuil? Qu’est-ce qui constitue les « bonnes » et les « mauvaises » valeurs moyennes de charge? Quand devriez-vous être préoccupé par une valeur moyenne de charge, et quand devriez-vous vous démener pour la réparer dès que possible?

Tout d’abord, un peu d’arrière-plan sur ce que signifient les valeurs moyennes de charge., Nous commencerons par le cas le plus simple: une machine avec un processeur monocœur.

l’analogie du trafic

Un processeur monocœur est comme une seule voie de circulation. Imaginez que vous êtes un opérateur de pont … parfois, votre pont est si occupé qu’il y a des voitures alignées pour traverser. Vous voulez faire savoir aux gens comment le trafic se déplace sur votre pont. Une métrique décente serait le nombre de voitures qui attendent à un moment donné. Si aucune voiture n’attend, les conducteurs entrants savent qu’ils peuvent traverser tout de suite. Si les voitures sont sauvegardées, les conducteurs savent qu’ils sont en retard.,

alors, opérateur de Pont, quel système de numérotation allez-vous utiliser? Que diriez-vous:

  • 0.00 signifie qu’il n’y a pas de trafic sur le pont du tout. En fait, entre 0.00 et 1.00 signifie qu’il n’y a pas de sauvegarde, et une voiture arrivant ira juste sur.
  • 1,00 signifie que le pont est exactement à la capacité. Tout est encore bon, mais si le trafic est un peu plus lourd, les choses vont ralentir.
  • plus de 1,00 signifie qu’il y a une sauvegarde. Combien? Eh bien, 2.00 signifie qu’il y a deux voies de voitures au total one une voie vaut sur le pont, et une voie vaut la peine d’attendre. 3.,00 signifie qu’il y a trois voies d’une valeur totale one une voie sur le pont, et deux voies d’attente. Etc.

C’est en gros ce que la charge CPU est. Les « voitures »sont des processus utilisant une tranche de temps CPU (« traverser le pont ») ou mis en file d’attente pour utiliser le CPU. Unix, il s’agit de l’exécution de longueur de file d’attente: la somme du nombre de processus en cours d’exécution et le nombre qui sont en attente (attente) pour fonctionner.

comme l’opérateur du pont, vous souhaitez que vos voitures/processus n’attendent jamais. Ainsi, votre charge CPU devrait idéalement rester en dessous de 1.00., En outre, comme l’opérateur de pont, vous êtes toujours ok si vous obtenez des pointes temporaires au-dessus de 1.00 … mais lorsque vous êtes constamment au-dessus de 1.00, vous devez vous inquiéter.

donc vous dites que la charge idéale est 1.00?

eh Bien, pas exactement. Le problème avec une charge de 1,00 est que vous n’avez pas de marge. En pratique, de nombreux administrateurs système traceront une ligne à 0,70:

  • La règle empirique « besoin de S’y intéresser »: 0,70 si votre moyenne de charge reste supérieure à > 0,70, il est temps d’enquêter avant que les choses ne s’aggravent.

  • Le « Corriger cela » Règle du Pouce: 1.00., Si votre moyenne de charge reste supérieure à 1,00, trouvez le problème et corrigez-le maintenant. Sinon, vous allez vous réveiller au milieu de la nuit, et ce ne sera pas amusant.

  • Le « Arrgh, il est 3 AM WTF? »La règle de base: 5.0. Si votre moyenne de charge est supérieure à 5,00, vous pourriez avoir de sérieux problèmes, votre boîte est suspendue ou ralentie, et cela se produira (inexplicablement) au pire moment possible, comme au milieu de la nuit ou lorsque vous présentez à une conférence. Ne le laissez pas s’y rendre.

Qu’en est-il des multi-processeurs? Ma charge dit 3.,00, mais les choses vont bien!

Vous avez un système quad-processeur? C’est toujours sain avec une charge de 3.00.

même chose avec les processeurs: une charge de 1,00 correspond à 100% d’utilisation du processeur sur un boîtier monocœur. Sur un boîtier dual-core, une charge de 2.00 correspond à 100% d’utilisation du processeur.

multicœur contre multiprocesseur

pendant que nous sommes sur le sujet, parlons de multicœur contre multiprocesseur. Pour des raisons de performances, une machine avec un seul processeur dual-core est-elle fondamentalement équivalente à une machine avec deux processeurs avec un cœur chacun? Oui. Environ., Il y a beaucoup de subtilités ici concernant la quantité de cache, la fréquence des transferts de processus entre les processeurs, etc. Malgré ces points plus fins, dans le but de dimensionner la valeur de charge du processeur, le nombre total de cœurs est ce qui compte, quel que soit le nombre de processeurs physiques sur lesquels ces cœurs sont répartis.

ce qui nous amène à deux nouvelles règles empiriques:

  • La règle empirique « nombre de cœurs = Charge Maximale »: sur un système multicœur, votre charge ne doit pas dépasser le nombre de cœurs disponibles.,

  • La règle empirique « cores is cores »: la façon dont les cœurs sont répartis sur les processeurs n’a pas d’importance. Deux quad-cores == quatre double-cœurs == huit unique-cœurs. Ce sont les huit cœurs à ces fins.

le ramener à la maison

jetons un coup d’œil aux moyennes de charge sorties deuptime:

~ up uptime
23:05 up 14 jours, 6:08, 7 utilisateurs, moyennes de charge: 0.65 0.42 0.36

ceci est sur un processeur dual-core nous avons donc beaucoup d’espace libre. Je n’y penserai même pas jusqu’à ce que la charge atteigne et reste au-dessus de 1,7 ou plus.

maintenant, qu’en est-il de ces trois chiffres? 0.,65 est la moyenne de la dernière minute, 0,42 est la moyenne des cinq dernières minutes et 0,36 est la moyenne des 15 dernières minutes. Ce qui nous amène à la question:

quelle moyenne devrais-je observer? Une, cinq ou 15 minutes?

pour les chiffres dont nous avons parlé (1.00 = corrigez-le maintenant, etc.), vous devriez regarder les moyennes de cinq ou 15 minutes. Franchement, si votre boîte dépasse 1,0 en moyenne d’une minute, tout va bien. C’est lorsque la moyenne de 15 minutes va au nord de 1.0 et y reste que vous devez vous accrocher., (évidemment, comme nous l’avons appris, ajustez ces chiffres au nombre de cœurs de processeur de votre système).

le nombre de cœurs est donc important pour interpréter les moyennes de charge … Comment puis-je savoir combien de cœurs mon système a?

cat /proc/cpuinfo pour obtenir des informations sur chaque processeur de votre système. Remarque: non disponible sur OSX, Google pour les alternatives. Pour obtenir juste un nombre, le lancer à travers grep et word count: grep 'model name' /proc/cpuinfo | wc -l

Plus de serveurs? Ou un code plus rapide?

L’ajout de serveurs peut être un pansement pour le code lent., Scout APM vous aide à trouver et à corriger votre code inefficace et coûteux. Nous identifions automatiquement les appels SQL n + 1, le gonflement de la mémoire et d’autres problèmes liés au code afin que vous puissiez passer moins de temps à déboguer et plus de temps à programmer.

Prêt à optimiser votre site? S’inscrire pour un essai gratuit.

plus de lecture

  • Wikipedia – une bonne explication brève de la moyenne de charge; il va un peu plus loin dans les mathématiques
  • Linux Journal – article très bien écrit, va plus loin que ce post ou l’entrée wikipedia.,

en savoir plus sur les performances Linux

  • comprendre les E/S de disque – quand devriez-vous être inquiet?
  • détermination de la mémoire libre sous Linux

abonnez-vous à notre flux RSS ou suivez-nous sur Twitter pour en savoir plus sur les performances de Linux.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *