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!