readimage pcl operator missing konica imprimir illegalattributevalue illegal extradata error data attribute kernel perf

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 )