Ubuntu22.04使用perf 6.5.3执行perf sched latency报错求助
问题原因及解决办法
核心问题
报错perf: 'sched' is not a perf-command的原因主要有两个:
- perf版本过旧:Brendan Gregg的调度分析指南依赖较新版本的perf,早期Linux发行版(如CentOS 6、老版Ubuntu)自带的perf并未包含
sched子命令,该子命令是在3.10及以后的内核版本中才被加入。 - 缺失perf扩展工具包:部分发行版会将perf的扩展子命令(包括
sched)拆分到独立软件包中,默认安装的perf仅包含基础功能。
解决步骤
检查perf版本
执行以下命令确认当前perf版本:perf --version如果版本低于3.10,基本可以确定是版本问题,需要升级perf或对应内核相关组件。
安装缺失的工具包
- Debian/Ubuntu系发行版:
sudo apt-get install linux-tools-common linux-tools-$(uname -r) - RHEL/CentOS系发行版:
sudo yum install perf # 若仍缺失,可尝试安装perf-tools相关包(部分发行版需启用额外源)
- Debian/Ubuntu系发行版:
临时替代方案
如果暂时无法升级或安装包,可以用老版本perf支持的方式捕获调度事件:# 捕获所有调度相关事件 sudo perf record -e sched:* ./Test # 分析捕获的数据 sudo perf report也可以用
pidstat -w、schedstat等工具辅助排查上下文切换问题。
内容的提问来源于stack exchange,提问作者intrigued_66
相关产品推荐
相关产品推荐

