operator - pcl xl error subsystem kernel error illegal attribute
perf: no se pudo grabar el sÃmbolo de reubicación de referencia del kernel (2)
¡Este tutorial funcionó perfectamente para mí!
http://lost-and-found-narihiro.blogspot.com/2012/06/how-to-install-perf-kernel-performance.html
Copiado del tutorial:
$ cat /proc/sys/kernel/kptr_restrict
1
$ echo 0 > /proc/sys/kernel/kptr_restrict
$ cat /proc/sys/kernel/kptr_restrict
0
He compilado perf
para mi kernel (3.11.10). Durante la compilación, faltaban algunas bibliotecas, así que las he instalado.
Pero ahora cuando ejecuto perf
, recibo el siguiente mensaje:
Couldn''t record kernel reference relocation symbol
Symbol resolution may be skewed if relocation was used (e.g. kexec).
Check /proc/kallsyms permission or run as root.
Kernel address maps (/proc/{kallsyms,modules}) were restricted.
Check /proc/sys/kernel/kptr_restrict before running ''perf record''
If some relocation was applied (e.g. kexec) symbols may be misresolved.
Samples in kernel modules can''t be resolved as well.
Como uso un kernel de compilación personalizado, la explicación más obvia para mí es que falta alguna opción en mi kernel. Si es así, ¿cómo puedo averiguar qué es lo que falta?
No estoy seguro de qué se está quejando exactamente el perf
. ¿Cómo puedo arreglar esto?
EDITAR:
/proc/kallsyms
no existe y /proc/sys/kernel/kptr_restrict
contiene 0
:
$ cat /proc/sys/kernel/kptr_restrict
0
Yo mismo he compilado el kernel y es posible que le falte alguna opción. ¿Qué es esto /proc/kallsyms
? ¿Cómo puedo habilitarlo en mi kernel?
¿Cuál es tu núcleo? ¿Es de Linux distributivo que usa o es compilado por usted (cómo lo instaló)?
La primera parte de la advertencia dice acerca de / proc / kallsyms: ¿puede mostrar el resultado del comando (iniciado desde el mismo usuario que usó para ejecutar perf)?
ls -l /proc/kallsyms
cat /proc/kallsyms | head
La segunda parte del mensaje de perf
dice acerca de la configuración de sysctl kptr_restrict. Puedes hacer
cat /proc/sys/kernel/kptr_restrict
para comprobar el ajuste. Básicamente, para crear un perfil de los símbolos del kernel, debe desactivar kptr_restrict configurándolo en cero (como se describe en https://lwn.net/Articles/420403/ o https://code.google.com/p/dart/wiki/Profiling ):
# Run as root user - e.g. after doing "sudo bash"
echo 0 > /proc/sys/kernel/kptr_restrict
o ( https://.com/a/20391360/196561 )
sudo sh -c " echo 0 > /proc/sys/kernel/kptr_restrict"
o
echo 0 | sudo tee /proc/sys/kernel/kptr_restrict
o siempre puedes ejecutar el perf
desde el usuario root.
Después de configurar kptr_restrict en cero o al ejecutar perf desde la raíz, no debería aparecer ninguna advertencia sobre kallsyms y podrá hacer un perfil de las funciones del kernel.
Actualización: parece que el perf record
siempre quiere acceder a kallsyms / restringido kptrs, incluso con eventos de solo espacio de usuario ( -e cycles:u
)