J'exécute des tests Debian avec le noyau 4.1 et la version 4.1 de l' perf
outil. Dans cette version, ils semblent avoir ajouté une sorte de protection pour empêcher les utilisateurs normaux de collecter des données à partir de cet outil. Donc, exécuter en perf
tant qu'utilisateur normal donnera cette erreur:
perf stat ls
Error:
You may not have permission to collect stats.
Consider tweaking /proc/sys/kernel/perf_event_paranoid:
-1 - Not paranoid at all
0 - Disallow raw tracepoint access for unpriv
1 - Disallow cpu events for unpriv
2 - Disallow kernel profiling for unpriv
perf_event_paranoid
en contient 3 dans mon installation. Malheureusement, je ne peux pas changer ce fichier même en tant que root. Comment puis-je autoriser mon propre utilisateur à utiliser perf
sans les droits sudo?
J'ai une application que je voudrais comparer qui n'a pas besoin de root et je ne veux pas l'exécuter en tant que root pour la comparer.
perf stat -e cycles:u
marche? La valeur "3" de aperf_event_paranoid
été ajoutée en 2016 lwn.net/Articles/696216 "Interdiction de perf_event_open ()" et a été activée dans "Android et Debian" (également lkml.org/lkml/2016/1/11/587 bugs.launchpad. net / bugs / 1612790 debian.org/security/2017/dsa-3791 )Réponses:
Les fichiers
/proc
inscriptibles sont généralement modifiés en y faisant écho une valeur. Tu devrais essayer:Les fichiers sous
/proc/sys/
ont également la commande sysctl pour un accès facile, vous pouvez donc faire à la place:(bien que l' écriture
-w
for semble facultative). Pour vous assurer que cela se fait au démarrage, créez votre propre fichier avec la ligne/etc/sysctl.d/99-mysettings.conf
Choisissez un nom de fichier qui ne remplacera pas les fichiers existants dans
/run/sysctl.d/
et/usr/lib/sysctl.d/
. Voir man sysctl.d .la source
sudo sh -c 'echo kernel.perf_event_paranoid=1 > /etc/sysctl.d/local.conf'
local.conf
, pas tronquer. Ou écrivez à/etc/sysctl.d/perf.conf