Cuando quería ejecutar perf bajo WSL, me encontré con la siguiente pregunta:
ADVERTENCIA: rendimiento no encontrado para kernel 4.4.0-18362
Es posible que deba instalar los siguientes paquetes para este kernel específico:
herramientas-linux-4.4.0-18362-Microsoft
linux-nube-herramientas-4.4.0-18362-Microsoft
También puede instalar uno de los siguientes paquetes para mantenerse actualizado:
linux-herramientas-Microsoft
linux-nube-herramientas-Microsoft
Pero no puedo encontrar paquetes llamados linux-tools-4.4.0-18362-Microsoft o linux-cloud-tools-4.4.0-18362-Microsoft . Supongo que los nombres de los paquetes se generan automáticamente.
También traté de usar perf en el contenedor docker. Sin embargo, el contenedor docker usa el mismo kernel que los hosts.
¿Hay algún método para ejecutar perf bajo WSL?
Escuché que perf se puede usar en WSL2. Pero después de actualizar a WSL2, muestra un mensaje de error similar:
ADVERTENCIA: rendimiento no encontrado para kernel 4.19.84-microsoft
Es posible que deba instalar los siguientes paquetes para este kernel específico:
linux-tools-4.19.84-microsoft-standard linux-cloud-tools-4.19.84-microsoft-standardTambién puede instalar uno de los siguientes paquetes para mantenerse actualizado:
linux-tools-standard linux-cloud-tools-standard
ADVERTENCIA: rendimiento no encontrado para kernel 4.19.84-microsoft
Porque WSL2 usa un kernel de Linux personalizado. Su código fuente se puede encontrar aquí microsoft/WSL2-Linux-Kernel . Tenemos que compilar herramientas de rendimiento a partir de él.
sudo apt install build-essential flex bison libssl-dev libelf-dev git clone --depth=1 https://github.com/microsoft/WSL2-Linux-Kernel.git cd WSL2-Linux-Kernel/tools/perf make El archivo ejecutable perf estará en esa carpeta.
Si sigue la respuesta aceptada, asegúrese de leer las quejas que imprime el comando make al principio, ya que es posible que falten algunos encabezados y deshabilite la funcionalidad.
Para mí, deshabilitó tui, gtk y desmangling, por nombrar algunas características.
Puede instalar linux-tools-generic .
apt install linux-tools-generic Luego ejecute perf usando la ruta de instalación /usr/lib/linux-tools/<linux-version>-generic/perf .
Algunas herramientas, como flamegraph , usarán la variable de entorno PERF como la ruta de perf .
PERF=/usr/lib/linux-tools/<linux-version>-generic/perf flamegraph -- my_programLa respuesta aceptada funciona. Sin embargo, faltan algunas funciones.
Para obtener información útil y detallada, tuve que instalar las siguientes bibliotecas y luego ejecutar make nuevamente.
libbabeltrace-devlibunwind-devlibdw-devbinutils-devlibiberty-dev No estoy seguro de si todos ellos son necesarios. Sin embargo, esos son adecuados para cargo-flamegraph (mi caso de uso).