La performance est l'une des parties les plus compliquées de l'administration système. Chaque fois que vous essayez d'enquêter sur la source des mauvaises performances ou la raison de la charge de travail élevée, vous avez besoin des bons outils pour le faire.
Perf est l'un de ces outils. C'est un compteur de performances pour Linux que vous pouvez utiliser pour collecter des données sur les performances de votre système.
Nous verrons comment l'installer sur Ubuntu et Centos et ferons une petite présentation de l'utilisation de la commande de base.
Installer Perf sur Ubuntu
Perf fait partie du paquet "linux-tools" dans Ubuntu et il est installé comme n'importe quel autre paquet utilisant apt. Assurez-vous simplement que vos sources sont mises à jour.
sudo apt update
Tout d'abord, installez le package linux-tools-common :
sudo apt install linux-tools-common
Ensuite, vous devez créer un package spécifique pour votre noyau en cours d'exécution. Pour obtenir la version exacte de votre noyau, utilisez la commande suivante :
uname -r
Vous obtiendrez la version exacte du noyau.
Vous pouvez installer le package linux-tools spécifique ou s'il n'existe pas de version spécifique du package pour votre noyau, vous pouvez utiliser le package linux-tools-generic. Mais cela pourrait ne pas fonctionner comme prévu. En règle générale, perf ne fonctionnera pas ou ne fonctionnera pas comme prévu, si le paquet linux-tools ne correspond pas à l'exécution (très important ! l'exécution, pas la version installée) du noyau Linux.
Installer Perf sur CentOS
Comme d'habitude, les noms de packages varient de CentOS à Ubuntu, mais la procédure est fondamentalement la même, commencez par mettre à jour les informations du package :
yum update
Il existe un package direct qui déclenchera toutes les dépendances dans CentOS.
yum install perf
Utilisation de base de la commande Perf
Voyons quelques commandes de base sur la façon d'utiliser perf. L'utilisation la plus basique de perf est, bien sûr, la page d'aide, avec le drapeau "-help" pour voir le résumé de la commande
Selon la configuration de votre système, certaines commandes de perf peuvent être limitées par des politiques de sécurité. Pour désactiver ces politiques, utilisez simplement :
echo 0 > /proc/sys/kernel/perf_event_paranoid
Il existe deux grands groupes de commandes :les commandes exécutées sur le système en direct et les commandes exécutées sur un enregistrement de performances.
Commandes sur un système en direct
perf list [category]
La commande ci-dessus répertorie tous les types d'événements disponibles dans le système. C'est une longue liste et selon la configuration du système, elle sera enveloppée par moins/plus. Si vous fournissez une valeur de catégorie, seuls les événements de cette catégorie seront affichés.
Les catégories disponibles sont :hw|sw|cache|tracepoint|pmu|event_glob
perf bench <category> <benchmark>
La commande ci-dessus fait plusieurs benchmarks sur le système. Ils sont répartis en différentes catégories (sched, mem, numa, futex, all) et chaque catégorie a une liste différente de repères.
Si vous souhaitez vérifier tous les tests de vitesse de la mémoire, utilisez la commande ci-dessous :
perf bench mem all
perf stat <command>
La commande ci-dessus renverra les statistiques de performances. Il affichera quelque chose comme ça
perf top
Cela affichera une analyse en direct du profil du système, comme top, mais plus affinée.
Ici commence le deuxième groupe de commandes.
Commandes sur un enregistrement de performances
Vous pouvez enregistrer un profil de performances de toute commande que vous exécutez à l'aide de la ligne de commande suivante :
perf record [options]
Cela produira un enregistrement brut des registres de performance. La profondeur de cet enregistrement dépendra de l'installation de votre système. Vous aurez peut-être besoin de packages de débogage ou de développement pour obtenir toutes les données de profilage que vous pourriez obtenir. Il existe également de nombreux indicateurs qui nous permettront de contrôler ce qui sera profilé, comment il sera enregistré et à quelle fréquence il sera profilé.
Une fois que nous avons le record de performances, il existe plusieurs commandes pour agir avec ces données, la plus simple est la suivante :
perf report -i <perf file> [options]
Cela générera un rapport du fichier de performances. Nous pouvons sélectionner comment diviser ou trier les données ou quelles données nous voulons dans le rapport.
perf diff <datafile 1> <datafile 2> …
Cela nous permettra de comparer deux exécutions, par exemple, si nous voulons savoir comment le programme s'exécute après avoir changé les paramètres par rapport à l'exécution de base.
perf lock -I <perf file>
Cela analysera tous les événements de verrouillage dans un fichier de performances précédemment enregistré.
perf mem -t <Type> [ record <command> | report ]
Cela enregistrera ou rapportera à partir d'un enregistrement, profilant sur l'accès à la mémoire du type sélectionné.
perf timechart
Cela fera un chronogramme de l'exécution du profilage précédemment enregistré.
Avec tous ces outils en main, vous pouvez commencer à vérifier ce qui se passe sur votre serveur, vous pouvez commencer à faire des profils d'exécutions pour tester différentes configurations et vous serez armé d'un vaste ensemble d'outils pour contrôler les performances de votre système .