Analyse du graphe de flamme GaussDB

Description du problème

L'utilisation du processeur est l'un des indicateurs importants pour mesurer la charge et la santé du système, et l'utilisation du processeur se produit souvent pendant le fonctionnement du système. Lors de l'analyse des problèmes de performances, vous pouvez afficher la consommation de temps CPU via le graphique de flamme pour comprendre où se trouve le goulot d'étranglement.

phénomène problématique

La vitesse d'exécution de certains SQL ne répond pas aux attentes.

alarme

  • Avertissement sql lent.
  • Alarme d'utilisation élevée du processeur.
  • La base de données dans son ensemble est lente.

impact sur les entreprises

Mauvaises performances commerciales.

Analyse des causes

La fonction a des problèmes de performances.

Approche

Outils requis : stackcollapse-perf.pl, flamegraph.pl. Faites attention à la modification des autorisations.

  1. Connectez-vous au nœud DN principal, vérifiez les processus à forte consommation de CPU et vérifiez l'ID de processus.

    top
    

    insérez la description de l'image ici
    Description du paramètre :

    • %us (usr/user) : pourcentage de CPU occupé par l'espace utilisateur.
    • %sy (système) : pourcentage de CPU occupé par l'espace du noyau.
    • %ni (nice) : pourcentage de CPU occupé par des processus dont les priorités ont été modifiées.
    • %id (idle) : pourcentage de CPU inactif.
    • %wa (iowait) : Le pourcentage de CPU occupé par IO en attente (le CPU réel ne fonctionne pas).
    • %hi (interruptions matérielles) : Le pourcentage de CPU occupé par des interruptions matérielles (Hardware IRQ).
    • %si (interruptions logicielles) : Le pourcentage de CPU occupé par des interruptions logicielles.
    • %st (steal) : pourcentage de CPU volé par l'hyperviseur.
  2. Exécutez la commande perf (abréviation de performance), qui est un outil d'analyse de performance fourni nativement par le système Linux, et renverra le nom de la fonction en cours d'exécution par le CPU et la pile d'appels (stack).
    Habituellement, sa fréquence d'exécution est de 99 Hz (99 fois par seconde). Si le même nom de fonction est renvoyé 99 fois, cela signifie que le processeur exécute la même fonction pendant cette seconde et qu'il peut y avoir des problèmes de performances.

    perf record -e cpu-clock -g -p 28591 <主DN进程号> -- sleep 60<持续60s>
    

    Une fois l'exécution de Ctrl+c terminée, les données d'échantillonnage perf.data seront générées dans le répertoire courant (le temps d'exécution n'est que de 1 minute).

  3. Utilisez l'outil de script perf pour analyser perf.data :

    perf script -i perf.data &> perf.unfold
    
  4. Pliez les symboles dans perf.unfold :

    ./stackcollapse-perf.pl perf.unfold &> perf.folded
    
  5. Générez enfin le graphique svg :

    ./flamegraph.pl perf.folded > cn.svg
    

    insérez la description de l'image ici
    L'axe y représente la pile d'appels et chaque couche est une fonction. Plus la pile d'appels est profonde, plus la flamme est haute, avec la fonction d'exécution en haut et ses fonctions parentes en dessous.
    L'axe des abscisses représente le nombre d'échantillons. Si une fonction occupe une largeur plus large sur l'axe des abscisses, cela signifie qu'elle a été échantillonnée plus de fois, c'est-à-dire que le temps d'exécution est plus long. Notez que l'axe des x ne représente pas le temps, mais toutes les piles d'appels sont fusionnées et classées par ordre alphabétique.
    Le graphique de la flamme sert à voir quelle fonction au niveau supérieur occupe la plus grande largeur. Tant qu'il y a un "plateau", cela indique que la fonction peut avoir des problèmes de performance.
    La couleur n'a pas de signification particulière, car le graphique de la flamme indique à quel point le processeur est occupé, les couleurs chaudes sont donc généralement sélectionnées.

Guess you like

Origin blog.csdn.net/GaussDB/article/details/131715790