Dois-je avoir à exécuter l' perf
outil d'espace utilisateur en tant qu'administrateur système (root), ou puis-je l'exécuter (ou au moins certaines sous-commandes) en tant qu'utilisateur ordinaire?
linux
kernel
not-root-user
perf-event
Jakub Narębski
la source
la source
perf
outil (qui est / peut être non triviale).perf
est enlinux-tools
package, donc l'installationperf
est simple.Réponses:
Ce que vous pouvez faire
perf
sans être root dépend du paramètre sysctl .kernel.perf_event_paranoid
kernel.perf_event_paranoid
= 2: vous ne pouvez prendre aucune mesure. L'perf
utilitaire pourrait encore être utile d'analyser les enregistrements existants avecperf ls
,perf report
,perf timechart
ouperf trace
.kernel.perf_event_paranoid
= 1: vous pouvez tracer une commande avecperf stat
ouperf record
, et obtenir des données de profilage du noyau.kernel.perf_event_paranoid
= 0: vous pouvez tracer une commande avecperf stat
ouperf record
, et obtenir des données d'événement CPU.kernel.perf_event_paranoid
= -1: vous obtenez un accès brut aux points de trace du noyau (en particulier, vous pouvezmmap
le fichier créé parperf_event_open
, je ne sais pas quelles sont les implications).la source
cat /proc/sys/kernel/perf_event_paranoid
renvoie 1, il semble donc que je serais en mesure de prendre au moins quelques mesures (BTW. quelle est la différence entre "données de profilage du noyau" et "données d'événement CPU"? La référence suffit)perf stat awk 'BEGIN{for(i=0;i<10000000;i++){}}'
, affichera le nombre précis de cycles et d'instructions de l'espace utilisateur, et vous pouvez même obtenir des décomptes pouruops_issued.any
etc.), mais vous n'obtenez pas de décomptes pour le code qui a fonctionné pendant les appels / interruptions système. La fréquence CPU (cycles / temps) signalée est donc au moins légèrement inférieure à la fréquence réelle en raison du temps passé dans le noyau. Voir aussi Quelle restriction perf_event_paranoid == 1 applique-t-elle réellement à x86 perf?