perf:“sched”不是 Ubuntu 22.04 上 perf 6.5.3 的 perf 命令

问题描述 投票:0回答:1

我正在尝试查找哪些进程导致我的应用程序中发生上下文切换。谷歌返回了本指南:

https://www.brendangregg.com/perf.html#SchedulerAnalysis

很棒吗?我运行了它,但它不起作用:

sudo perf record ./Test
[ perf record: Captured and wrote 1.438 MB perf.data (37217 samples) ]
perf sched latency
perf: 'sched' is not a perf-command. See 'perf --help'.

出了什么问题?

linux performance optimization perf ubuntu-22.04
1个回答
0
投票

我认为 Ubuntu 并没有构建包含许多依赖项的

perf
。例如,
perf sched
perf record -e [software tracepoint]
需要
libtraceevent
。 Ubuntu 选择禁用这些功能而不是采用依赖项。

我也在 Ubuntu 22.04 上,

perf sched
不起作用,我之前的建议也不起作用
perf record -e sched:sched_switch

话虽如此,您可以下载内核源代码并自行构建

perf
。我必须安装
libelf-dev
libtraceevent-dev
才能让
perf
能够提供以上两个功能

  1. 安装内核源码
    $ /usr/bin/sudo apt install linux-source
    
    源代码显示为
    /usr/src/
    中的 tarball。
  2. 在某处解压内核源代码
    $ cd [some-working-directory]
    $ tar -xf /usr/src/linux-source*
    $ cd linux-source-*
    
  3. 复制当前内核配置文件
    $ cp /boot/config-$(uname -r) ./.config
    
  4. 根据 Linux 源代码树验证配置文件
    $ make oldconfig
    
  5. 构建 perf 并将其安装到本地目录
    $ cd tools/perf
    $ make prefix=[some-working-directory]/install install
    

之后,您应该在

perf
中有一个新的
[some-working-directory]/install/bin
二进制文件。关于如何从该位置正确使用它可能有一些注意事项,但仅运行它似乎就可以满足基本用途。

© www.soinside.com 2019 - 2024. All rights reserved.