Maison  >  Article  >  Opération et maintenance  >  Qu'est-ce que les performances Linux ? Comment l'utiliser ? (Résumé d'utilisation)

Qu'est-ce que les performances Linux ? Comment l'utiliser ? (Résumé d'utilisation)

藏色散人
藏色散人avant
2021-11-05 17:50:457257parcourir

La colonne suivante présentera et résumera l'utilisation de Linux Perf de la colonne Tutoriel du système Linux J'espère qu'elle sera utile aux amis qui en ont besoin !

Introduction

perf est un outil d'analyse des performances fourni dans les systèmes Linux. Il est implémenté sur la base d'un sous-système du noyau appelé "Compteurs de performances" et prend en charge à la fois le matériel (CPU, PMU (Performance Monitoring Unit)) et le logiciel (compteurs logiciels). ) , tracepoint) analyse des performances au niveau.

Events in perf

perf, comme d'autres outils de réglage des performances, échantillonne les objets de surveillance et déduit le comportement de l'ensemble du programme en fonction de la distribution des points d'échantillonnage. Grâce à la commande perf list, nous pouvons voir que perf prend en charge de nombreux événements d'échantillonnage, tels que les branchements manqués, l'horloge CPU, etc. Les événements prédéfinis dans perf appartiennent à différents types, tels que les événements générés par le matériel (accès au cache/manque de branche) et les événements générés par le logiciel (changement de contexte/erreur de page), etc.

tracepoint

tracepoint sont des hooks définis dans le noyau Linux. S'ils sont activés, ils seront déclenchés lorsqu'une logique spécifique est exécutée, ce qui permet à d'autres outils d'obtenir des informations telles que l'état de fonctionnement interne du système. , il enregistrera et comptera divers événements de points de trace et générera des rapports d'analyse.

Utilisation

L'utilisation spécifique de l'outil perf est la suivante :

perf [--version] [--help] COMMAND [ARGS]

La liste des COMMANDES peut être consultée en exécutant perf --help Voici quelques commandes couramment utilisées.

perf stat

perf stat est utilisé pour exécuter une commande et collecter diverses données pendant son fonctionnement. Il peut fournir un aperçu global de l'état d'exécution d'un programme. Par exemple :

user@localhost:~$ perf stat hostname
localhost
 Performance counter stats for 'hostname':
          0.313464      task-clock (msec)         #    0.481 CPUs utilized          
                 2      context-switches          #    0.006 M/sec                  
                 0      cpu-migrations            #    0.000 K/sec                  
               153      page-faults               #    0.488 M/sec                  
           896,723      cycles                    #    2.861 GHz                    
           620,709      instructions              #    0.69  insn per cycle         
           121,143      branches                  #  386.465 M/sec                  
             6,247      branch-misses             #    5.16% of all branches        
       0.000651441 seconds time elapsed

Dans l'exemple ci-dessus, la commande hostname a été exécutée via perf stat, et certains indicateurs lors de son fonctionnement ont été résumés et affichés, tels que l'horloge des tâches, les changements de contexte, etc. Par défaut, perf stat affichera les statistiques de plusieurs événements couramment utilisés, tels que :

task-clock-msecs:cpu 使用率
context-switches:进程切换次数
page-faults:发生缺页的次数
cpu-migrations:表示进程运行过程中发生了多少次CPU迁移,即被调度器从一个CPU转移到另外一个CPU上运行
cycles:处理器时钟,一条机器指令可能需要多个cycles
instructions: 机器指令数目
branches:遇到的分支指令数
branch-misses是预测错误的分支指令数

De plus, nous pouvons utiliser le paramètre -e pour spécifier les événements qui nous intéressent, tels que :

user@localhost:~$ perf stat -e cache-misses hostname
localhost
 Performance counter stats for 'hostname':
          682      cache-misses                                                
       0.000646676 seconds time elapsed

perf top

perf top est utilisé pour afficher les statistiques de performances actuelles du système en temps réel. La statistique de performances précédente est utilisée pour analyser un programme spécifique, et parfois nous ne savons pas quel programme affecte les performances du système. À ce stade, nous pouvons utiliser perf top pour rechercher des programmes suspects. Par exemple :

Samples: 775  of event 'cpu-clock', Event count (approx.): 92931021
Overhead  Shared Object       Symbol
   8.93%  [kernel]            [k] vsnprintf
   7.73%  perf                [.] rb_next
   5.92%  [kernel]            [k] kallsyms_expand_symbol.clone.0
   5.07%  [kernel]            [k] format_decode
   4.59%  [kernel]            [k] number
   3.40%  perf                [.] symbols__insert
   3.03%  libslang.so.2.2.1   [.] SLtt_smart_puts

L'exemple ci-dessus montre que perf compte les données des événements d'horloge processeur et les trie selon leurs proportions. Comme perf stat, nous pouvons spécifier les statistiques d'autres événements via le paramètre -e. Par exemple, perf top -e context-switches peut afficher les N principaux processus avec le plus de changements de processus.

perf record & perf report

perf record est similaire à perf stat Il peut exécuter une commande et générer des informations statistiques, mais perf record n'affichera pas les résultats, mais les affichera dans un fichier. Les fichiers générés par l'enregistrement de performances peuvent être analysés avec le rapport de performances.

perf record peut également utiliser le paramètre -g pour générer un graphique d'appel pendant l'analyse afin d'aider à localiser la distribution logique de niveau supérieur.

Autres

Grâce à l'exemple, nous pouvons constater que la colonne Symbole dans les résultats de l'analyse des performances affiche les noms des fonctions du langage C. Pour Java, les fonctions générées par la compilation JIT seront directement affichées dans le symbole au lieu du nom de la fonction Java. Pour le moment, il n'est pas si facile de localiser le problème. Nous devons utiliser des moyens supplémentaires pour combiner le symbole avec le symbole. table du programme Java La correspondance sera discutée en détail plus tard.

Apprentissage recommandé : "Tutoriel vidéo Linux"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer