Estoy ejecutando las pruebas de Debian con el kernel 4.1 y la versión 4.1 de la perf
herramienta. En esta versión, parecen haber agregado algún tipo de protección para evitar que los usuarios normales recopilen datos de esa herramienta. Entonces, correr perf
como usuario normal dará este error:
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
contiene 3 en mi instalación. Lamentablemente, no puedo cambiar ese archivo ni siquiera como root. ¿Cómo puedo permitir que mi propio usuario use perf
sin derechos de sudo?
Tengo una aplicación que me gustaría comparar que no necesita root y no quiero ejecutarla como root para compararla.
perf stat -e cycles:u
? El valor "3" deperf_event_paranoid
se agregó en 2016 lwn.net/Articles/696216 "No permitir perf_event_open ()" y se habilitó en "Android y Debian" (también lkml.org/lkml/2016/1/11/587 bugs.launchpad. net / bugs / 1612790 debian.org/security/2017/dsa-3791 )Respuestas:
Los archivos
/proc
que se pueden escribir generalmente se cambian haciendo eco de un valor en ellos. Deberías intentarlo:Los archivos debajo
/proc/sys/
también tienen el comando sysctl para facilitar el acceso, por lo que puedes hacer lo siguiente:(aunque el
-w
for write parece ser opcional). Para asegurarse de que esto se haga en el momento del arranque, cree su propio/etc/sysctl.d/99-mysettings.conf
archivo con la líneaElija un nombre de archivo que no anule los archivos existentes en
/run/sysctl.d/
y/usr/lib/sysctl.d/
. Ver man sysctl.d .fuente
sudo sh -c 'echo kernel.perf_event_paranoid=1 > /etc/sysctl.d/local.conf'
local.conf
, no truncar. O escriba a/etc/sysctl.d/perf.conf