¿Debo ejecutar la perfherramienta 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

perfherramienta (que es / puede no ser trivial).perfestá en ellinux-toolspaquete, por lo que la instalaciónperfallí es simple.Respuestas:
Lo que puede hacer
perfsin ser root depende de la configuración de sysctl .kernel.perf_event_paranoidkernel.perf_event_paranoid= 2: no puedes tomar ninguna medida. Laperfutilidad aún podría ser útil para analizar los registros existentes conperf ls,perf report,perf timechartoperf trace.kernel.perf_event_paranoid= 1: puede rastrear un comando conperf statoperf record, y obtener datos de perfil del núcleo.kernel.perf_event_paranoid= 0: puede rastrear un comando conperf statoperf 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, puedesmmapcrear el archivoperf_event_open, no sé cuáles son las implicaciones).fuente
cat /proc/sys/kernel/perf_event_paranoiddevuelve 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.anyetc.), 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?