Prérequis
Version noyau
perf
utilise les compteurs de performance du CPU (Performance Monitoring
Counters ou PMCs en anglais). Cette fonctionnalité est définie au niveau de
la microarchitecture CPU, donc elle peut changer d’une génération de CPU à
l’autre, et le code de perf
devra alors être adapté.
Comme la partie de perf
qui communique avec les PMCs est localisée dans le
noyau linux (module events
), il en résulte que pour éviter tout problème de
support matériel avec perf
, vous devez utiliser un noyau Linux aussi récent
que possible, et au moins aussi récent que votre CPU.
Vous pouvez vérifier votre version de noyau avec la commande uname
…
uname -r
5.14.21-150400.24.21-default
…votre modèle de CPU avec la commande lscpu
…
lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 46 bits physical, 48 bits virtual
CPU(s): 36
On-line CPU(s) list: 0-35
Thread(s) per core: 2
Core(s) per socket: 18
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz
... autres infos intéressantes dans l'absolu, mais pas ici ...
…et trouver les dates de sorties correspondantes sur :
Si votre noyau est un peu ancien par rapport à votre CPU, il est possible que
votre distribution Linux vous donne accès à un noyau plus récent. Par exemple,
les versions LTS de Ubuntu peuvent utiliser les noyaux des versions non-LTS via
le mécanisme des Hardware Enablement Stacks (kernels -hwe
). Consultez la
documentation de votre distribution pour plus de détails.
Virtualisation et conteneurs
Dans l’ensemble, pour éviter les problèmes, il est fortement recommandé de
privilégier quand c’est possible l’utilisation de perf
sur des systèmes bare
metal, sans virtualisation ni conteneurs. Néanmoins, avec un peu de travail, on
peut faire entendre raison même à des systèmes virtualisés.
Les compteurs de performance CPU permettent de faire un suivi très fin de l’activité système, et ce suivi peut être malheureusement détourné à des fins d’espionnage. Pour cette raison, de nombreux hyperviseurs de machines virtuelles désactivent l’accès aux PMCs par défaut.
Si vous rencontrez des difficultés dans l’utilisation de perf
sur un système
virtualisé, il est possible que vous soyez face à ce problème. Dans ce cas,
consultez la documentation de votre hyperviseur pour savoir comment autoriser la
machine virtuelle à accéder aux PMCs.
L’utilisation de perf
au sein de conteneurs qui s’exécutent nativement sous
Linux ne devrait pas être sujette à des problèmes de ce type. En revanche…
- La plupart des moteurs de conteneurs empêchent l’exécution de perf par défaut, il faut donner les bonnes permissions pour pouvoir utiliser perf.
- La version de
perf
installée dans le conteneur doit être proche de la version du noyau du système hôte pour éviter des problèmes de compatibilité. - L’utilisation de conteneurs sous macOS et Windows implique l’utilisation d’une machine virtuelle, et est donc concernée par l’avertissement ci-dessus.