在WSL下有什么运行性能的方法吗?
Is there any method to run perf under WSL?
当我想在 WSL 下 运行 性能时,我遇到了以下问题:
WARNING: perf not found for kernel 4.4.0-18362
You may need to install the following packages for this specific kernel:
linux-tools-4.4.0-18362-Microsoft
linux-cloud-tools-4.4.0-18362-Microsoft
You may also want to install one of the following packages to keep up to date:
linux-tools-Microsoft
linux-cloud-tools-Microsoft
但我找不到名为 linux-tools-4.4.0-18362-Microsoft
或 linux-cloud-tools-4.4.0-18362-Microsoft
的软件包。我想包名是自动生成的。
我还尝试在 docker 容器中使用 perf。但是,docker 容器使用与主机相同的内核。
在WSL下有什么方法可以运行性能吗?
听说WSL2可以用perf。但是在我升级到WSL2之后,它显示了类似的错误信息:
WARNING: perf not found for kernel 4.19.84-microsoft
You may need to install the following packages for this specific
kernel:
linux-tools-4.19.84-microsoft-standard
linux-cloud-tools-4.19.84-microsoft-standard
You may also want to install one of the following packages to keep
up to date:
linux-tools-standard
linux-cloud-tools-standard
WARNING: perf not found for kernel 4.19.84-microsoft
因为 WSL2 使用自定义 Linux 内核。它的源代码可以在这里找到
microsoft/WSL2-Linux-Kernel。我们必须从中编译 perf 工具。
程序
- 安装所需的构建包。如果你在 WSL2 中使用 Ubuntu 这是
所需命令:
sudo apt install build-essential flex bison libssl-dev libelf-dev
- 克隆 WSL2 Linux 内核存储库:
git clone --depth=1 https://github.com/microsoft/WSL2-Linux-Kernel.git
- 转到 perf 文件夹并编译它:
cd WSL2-Linux-Kernel/tools/perf
make
perf
可执行文件将在该文件夹中。
如果您遵循接受的答案,请务必阅读 make 命令在开始时打印的抱怨,因为它可能缺少一些 headers 并禁用功能。
对我来说,它禁用了 tui、gtk 和 demangling 等一些功能。
您可以安装linux-tools-generic
。
apt install linux-tools-generic
然后 运行 perf
使用安装路径 /usr/lib/linux-tools/<linux-version>-generic/perf
.
一些工具,如 flamegraph
,将使用环境变量 PERF
作为 perf
路径。
PERF=/usr/lib/linux-tools/<linux-version>-generic/perf flamegraph -- my_program
已接受的答案有效。但是,缺少某些功能。
为了获得有用的信息和 demangled 信息,我必须安装以下库,然后 运行 make
再次安装。
libbabeltrace-dev
libunwind-dev
libdw-dev
binutils-dev
libiberty-dev
我不确定是否所有这些都是必需的。但是,这些足以让 cargo-flamegraph
(我的用例)工作。
当我想在 WSL 下 运行 性能时,我遇到了以下问题:
WARNING: perf not found for kernel 4.4.0-18362
You may need to install the following packages for this specific kernel:
linux-tools-4.4.0-18362-Microsoft
linux-cloud-tools-4.4.0-18362-Microsoft
You may also want to install one of the following packages to keep up to date:
linux-tools-Microsoft
linux-cloud-tools-Microsoft
但我找不到名为 linux-tools-4.4.0-18362-Microsoft
或 linux-cloud-tools-4.4.0-18362-Microsoft
的软件包。我想包名是自动生成的。
我还尝试在 docker 容器中使用 perf。但是,docker 容器使用与主机相同的内核。
在WSL下有什么方法可以运行性能吗?
听说WSL2可以用perf。但是在我升级到WSL2之后,它显示了类似的错误信息:
WARNING: perf not found for kernel 4.19.84-microsoft
You may need to install the following packages for this specific kernel:
linux-tools-4.19.84-microsoft-standard linux-cloud-tools-4.19.84-microsoft-standard
You may also want to install one of the following packages to keep up to date:
linux-tools-standard linux-cloud-tools-standard
WARNING: perf not found for kernel 4.19.84-microsoft
因为 WSL2 使用自定义 Linux 内核。它的源代码可以在这里找到 microsoft/WSL2-Linux-Kernel。我们必须从中编译 perf 工具。
程序
- 安装所需的构建包。如果你在 WSL2 中使用 Ubuntu 这是 所需命令:
sudo apt install build-essential flex bison libssl-dev libelf-dev
- 克隆 WSL2 Linux 内核存储库:
git clone --depth=1 https://github.com/microsoft/WSL2-Linux-Kernel.git
- 转到 perf 文件夹并编译它:
cd WSL2-Linux-Kernel/tools/perf
make
perf
可执行文件将在该文件夹中。
如果您遵循接受的答案,请务必阅读 make 命令在开始时打印的抱怨,因为它可能缺少一些 headers 并禁用功能。
对我来说,它禁用了 tui、gtk 和 demangling 等一些功能。
您可以安装linux-tools-generic
。
apt install linux-tools-generic
然后 运行 perf
使用安装路径 /usr/lib/linux-tools/<linux-version>-generic/perf
.
一些工具,如 flamegraph
,将使用环境变量 PERF
作为 perf
路径。
PERF=/usr/lib/linux-tools/<linux-version>-generic/perf flamegraph -- my_program
已接受的答案有效。但是,缺少某些功能。
为了获得有用的信息和 demangled 信息,我必须安装以下库,然后 运行 make
再次安装。
libbabeltrace-dev
libunwind-dev
libdw-dev
binutils-dev
libiberty-dev
我不确定是否所有这些都是必需的。但是,这些足以让 cargo-flamegraph
(我的用例)工作。