GNU/Linux >> Tutoriels Linux >  >> Linux

Présentation de la surveillance et du réglage des performances Linux

Ceci est le 1er article de notre nouvelle série sur la surveillance et le réglage des performances Linux.

Les administrateurs système Linux doivent être compétents dans la surveillance et le réglage des performances Linux. Cet article donne un aperçu de haut niveau de la manière dont nous devrions aborder la surveillance et le réglage des performances sous Linux, ainsi que les différents sous-systèmes (et mesures de performances) qui doivent être surveillés.

Pour identifier les goulots d'étranglement du système et proposer des solutions pour y remédier, vous devez comprendre le fonctionnement des différents composants de Linux. Par exemple, comment le noyau donne la préférence à un processus Linux par rapport aux autres en utilisant de belles valeurs, comment les interruptions d'E/S sont gérées, comment fonctionne la gestion de la mémoire, comment fonctionne le système de fichiers Linux, comment la couche réseau est implémentée sous Linux, etc. ,

Veuillez noter que comprendre le fonctionnement de divers composants (ou sous-systèmes) n'est pas la même chose que savoir quelle commande exécuter pour obtenir certaines sorties. Par exemple, vous savez peut-être que la commande "uptime" ou "top" donne la "charge moyenne". Mais, si vous ne savez pas ce que cela signifie et comment fonctionne le sous-système CPU (ou processus), vous ne pourrez peut-être pas le comprendre correctement. Comprendre les sous-systèmes est une tâche continue, que vous apprendrez constamment tout le temps.

À un niveau très élevé, voici les quatre sous-systèmes qui doivent être surveillés.

  • Processeur
  • Mémoire
  • E/S
  • Réseau

1. Processeur

Vous devez comprendre les quatre métriques de performances critiques pour le processeur :changement de contexte, file d'attente d'exécution, utilisation du processeur et charge moyenne.

Changement de contexte

  • Lorsque le processeur passe d'un processus (ou d'un thread) à un autre, il s'agit d'un changement de contexte.
  • Lorsqu'un changement de processus se produit, le noyau stocke l'état actuel du processeur (d'un processus ou d'un thread) dans la mémoire.
  • Le noyau récupère également l'état précédemment stocké (d'un processus ou d'un thread) dans la mémoire et le place dans le CPU.
  • La commutation de contexte est essentielle pour le multitâche du processeur.
  • Cependant, un niveau élevé de changement de contexte peut entraîner des problèmes de performances.

Exécuter la file d'attente

  • La file d'attente d'exécution indique le nombre total de processus actifs dans la file d'attente actuelle pour le processeur.
  • Lorsque le processeur est prêt à exécuter un processus, il le récupère dans la file d'attente d'exécution en fonction de la priorité du processus.
  • Veuillez noter que les processus en état de veille ou en attente d'E/S ne sont pas dans la file d'attente d'exécution.
  • Ainsi, un nombre élevé de processus dans la file d'attente d'exécution peut entraîner des problèmes de performances.

Utilisation du processeur

  • Cela indique la quantité de CPU actuellement utilisée.
  • C'est assez simple, et vous pouvez afficher l'utilisation du processeur à partir de la commande supérieure.
  • L'utilisation du processeur à 100 % signifie que le système est entièrement chargé.
  • Ainsi, un pourcentage plus élevé d'utilisation du processeur entraînera des problèmes de performances.

Moyenne de charge

  • Cela indique la charge moyenne du processeur sur une période spécifique.
  • Sous Linux, la charge moyenne est affichée pour les 1 dernières minutes, 5 minutes et 15 minutes. Cela est utile pour voir si la charge globale du système augmente ou diminue.
  • Par exemple, une charge moyenne de "0,75 1,70 2,10" indique que la charge du système diminue. 0,75 est la charge moyenne au cours de la dernière minute. 1,70 est la charge moyenne au cours des 5 dernières minutes. 2,10 correspond à la charge moyenne au cours des 15 dernières minutes.
  • Veuillez noter que cette charge moyenne est calculée en combinant à la fois le nombre total de processus dans la file d'attente et le nombre total de processus dans l'état de la tâche sans interruption.

2. Réseau

  • Une bonne compréhension des concepts TCP/IP est utile lors de l'analyse des problèmes de réseau. Nous en reparlerons dans de prochains articles.
  • Pour les interfaces réseau, vous devez surveiller le nombre total de paquets (et d'octets) reçus/envoyés via l'interface, le nombre de paquets abandonnés, etc.,

3. E/S

  • L'attente d'E/S correspond à la durée pendant laquelle le processeur attend les E/S. Si vous constatez une attente constante d'E/S élevées sur votre système, cela indique un problème dans le sous-système de disque.
  • Vous devez également surveiller les lectures/seconde et les écritures/seconde. Ceci est mesuré en blocs. c'est-à-dire le nombre de blocs lus/écrits par seconde. Ceux-ci sont également appelés bi et bo (bloquer et bloquer).
  • tps indique le nombre total de transactions par seconde, qui est la somme de rtps (transactions de lecture par seconde) et wtps (transactions d'écriture par seconde).

4. Mémoire

  • Comme vous le savez, la RAM est votre mémoire physique. Si vous avez 4 Go de RAM installés sur votre système, vous disposez de 4 Go de mémoire physique.
  • Mémoire virtuelle =espace de swap disponible sur le disque + mémoire physique. La mémoire virtuelle contient à la fois l'espace utilisateur et l'espace noyau.
  • L'utilisation d'un système 32 bits ou 64 bits fait une grande différence pour déterminer la quantité de mémoire qu'un processus peut utiliser.
  • Sur un système 32 bits, un processus ne peut accéder qu'à un maximum de 4 Go de mémoire virtuelle. Sur un système 64 bits, cette limitation n'existe pas.
  • La RAM inutilisée sera utilisée comme cache du système de fichiers par le noyau.
  • Le système Linux permutera lorsqu'il aura besoin de plus de mémoire. c'est-à-dire lorsqu'il a besoin de plus de mémoire que la mémoire physique. Lorsqu'il échange, il écrit les pages de mémoire les moins utilisées de la mémoire physique vers l'espace d'échange sur le disque.
  • De nombreux échanges peuvent entraîner des problèmes de performances, car le disque est beaucoup plus lent que la mémoire physique et il faut du temps pour échanger les pages de mémoire de la RAM vers le disque.

Tous les 4 sous-systèmes ci-dessus sont interdépendants. Ce n'est pas parce que vous voyez un nombre élevé de lectures/seconde, d'écritures/seconde ou d'attente d'E/S que le problème existe avec le sous-système d'E/S. Cela dépend aussi de ce que fait l'application. Dans la plupart des cas, le problème de performances peut être causé par l'application qui s'exécute sur le système Linux.

N'oubliez pas la règle 80/20 :80 % de l'amélioration des performances provient du réglage de l'application, et les 20 % restants proviennent du réglage des composants de l'infrastructure.

Il existe divers outils disponibles pour surveiller les performances du système Linux. Par exemple :top, free, ps, iostat, vmstat, mpstat, sar, tcpump, netstat, iozone, etc. Nous discuterons plus en détail de ces outils et de leur utilisation dans les prochains articles de cette série.

Voici l'approche en 4 étapes pour identifier et résoudre un problème de performances.

  • Étape 1 :Comprendre (et reproduire) le problème : La moitié du problème est résolue lorsque vous comprenez clairement quel est le problème. Avant d'essayer de résoudre le problème de performances, commencez par définir clairement le problème. Plus vous passerez de temps à comprendre et à définir le problème, plus vous aurez suffisamment de détails pour chercher les réponses au bon endroit. Si possible, essayez de reproduire le problème, ou au moins simulez une situation qui, selon vous, ressemble étroitement au problème. Cela vous aidera plus tard à valider la solution que vous proposez pour résoudre le problème de performances.
  • Étape 2 – Surveiller et collecter des données : Après avoir clairement défini le problème, surveillez le système et essayez de collecter autant de données que possible sur les différents sous-systèmes. Sur la base de ces données, dressez une liste des problèmes potentiels.
  • Étape 3 – Éliminer et limiter les problèmes : Après avoir dressé une liste des problèmes potentiels, plongez dans chacun d'eux et éliminez tous les problèmes. Affinez-le davantage pour voir s'il s'agit d'un problème d'application ou d'un problème d'infrastructure. Explorez davantage et réduisez-le à un composant spécifique. Par exemple, s'il s'agit d'un problème d'infrastructure, réduisez-le et identifiez le sous-système à l'origine du problème. S'il s'agit d'un problème de sous-système d'E/S, limitez-le à une partition, un groupe de raid, un LUN ou un disque spécifique. En gros, continuez à explorer jusqu'à ce que vous mettiez le doigt sur la cause première du problème.
  • Étape 4 – Une modification à la fois : Une fois que vous vous êtes limité à une petite liste de problèmes potentiels, n'essayez pas d'apporter plusieurs modifications à la fois. Si vous apportez plusieurs modifications, vous ne saurez pas laquelle a résolu le problème d'origine. Plusieurs modifications à la fois peuvent également entraîner de nouveaux problèmes, que vous poursuivez au lieu de résoudre le problème d'origine. Effectuez donc une modification à la fois et voyez si cela résout le problème d'origine.

Dans les prochains articles de la série sur les performances, nous discuterons davantage de la façon de surveiller et de résoudre les problèmes de performances sur le sous-système CPU, mémoire, E/S et réseau à l'aide de divers outils de surveillance des performances Linux.


Linux
  1. MySQL - Réglage et optimisation des performances

  2. Une introduction à la surveillance des comptes utilisateur Linux

  3. 24 Exemples iostat, vmstat et mpstat pour la surveillance des performances Linux

  4. Top 25 des meilleurs outils de surveillance et de débogage des performances Linux

  5. Comprendre la charge moyenne du système d'exploitation et la file d'attente d'exécution/bloquée en termes d'utilisation du processeur sous Linux

Une collection d'utilitaires pour simplifier le dépannage du réseau Linux et le réglage des performances

Installer l'outil de surveillance des performances NetData sous Linux

Une introduction aux métriques Prometheus et à la surveillance des performances

Une introduction au hachage et aux sommes de contrôle sous Linux

3 astuces pour améliorer les performances des processus Linux avec priorité et affinité

Comment créer une charge CPU à 100 % sur un système Linux