perf工具在Docker容器中的安装方法#
一般安装方法: apt install -y linux-tools-generic linux-cloud-tools-generic
但是由于docker容器是用的宿主机的内核, 会有不匹配的情况,出现报错:
WARNING: perf not found for kernel 4.4.0-210,所以需要安装指定包
方法一:使用预编译包(推荐)#
适用于内核版本有对应预编译包的情况。
1. 检查内核版本#
2. 下载对应的perf工具包#
从Ubuntu安全仓库下载对应内核版本的perf工具包:
# 示例:内核4.4.0-210-generic
cd /tmp
wget http://security.ubuntu.com/ubuntu/pool/main/l/linux/linux-tools-4.4.0-210_4.4.0-210.242_amd64.deb
wget http://security.ubuntu.com/ubuntu/pool/main/l/linux/linux-tools-4.4.0-210-generic_4.4.0-210.242_amd64.deb
3. 安装#
sudo dpkg -i linux-tools-4.4.0-210_4.4.0-210.242_amd64.deb
sudo dpkg -i linux-tools-4.4.0-210-generic_4.4.0-210.242_amd64.deb
4. 验证#
方法二:从源码编译#
适用于需要特定版本或预编译包不可用的情况。
1. 安装编译依赖#
sudo apt-get update
sudo apt-get install -y build-essential flex bison libssl-dev libelf-dev libncurses5-dev libncursesw5-dev
2. 下载内核源码#
3. 编译perf#
4. 安装#
常用perf命令#
# 性能统计
perf stat <command>
# 记录性能数据
perf record <command>
# 查看报告
perf report
# 列出可用事件
perf list
# 实时监控
perf top
注意事项#
- Docker容器中通常缺少perf工具,需要手动安装
- 内核版本与perf版本需要匹配
- 从源码编译时,新版本GCC可能遇到兼容性问题,使用
WERROR=0可以绕过 - 某些硬件事件在容器中可能不支持(需要
<not supported>标记)