¿Debo ejecutar la perf
herramienta de espacio de usuario como administrador del sistema (root), o puedo ejecutarla (o al menos algunos subcomandos) como usuario normal?
linux
kernel
not-root-user
perf-event
Jakub Narębski
fuente
fuente
perf
herramienta (que es / puede no ser trivial).perf
está en ellinux-tools
paquete, por lo que la instalaciónperf
allí es simple.Respuestas:
Lo que puede hacer
perf
sin ser root depende de la configuración de sysctl .kernel.perf_event_paranoid
kernel.perf_event_paranoid
= 2: no puedes tomar ninguna medida. Laperf
utilidad aún podría ser útil para analizar los registros existentes conperf ls
,perf report
,perf timechart
operf trace
.kernel.perf_event_paranoid
= 1: puede rastrear un comando conperf stat
operf record
, y obtener datos de perfil del núcleo.kernel.perf_event_paranoid
= 0: puede rastrear un comando conperf stat
operf record
, y obtener datos de eventos de CPU.kernel.perf_event_paranoid
= -1: obtienes acceso sin procesar a los puntos de rastreo del kernel (específicamente, puedesmmap
crear el archivoperf_event_open
, no sé cuáles son las implicaciones).fuente
cat /proc/sys/kernel/perf_event_paranoid
devuelve 1, por lo que parece que podría tomar al menos algunas mediciones (BTW. ¿Cuál es la diferencia entre "datos de perfil de kernel" y "datos de eventos de CPU"? La referencia es suficiente)perf stat awk 'BEGIN{for(i=0;i<10000000;i++){}}'
, mostrará recuentos precisos de ciclo de espacio de usuario e instrucciones, e incluso puede obtener recuentos,uops_issued.any
etc.), pero no obtiene recuentos para el código que se ejecutó durante las llamadas / interrupciones del sistema. Por lo tanto, la frecuencia de la CPU informada (ciclos / tiempo) es al menos un poco más baja que la real debido al tiempo que pasa en el núcleo. Vea también ¿Qué restricción es perf_event_paranoid == 1 realmente poniendo en x86 perf?