Red Hat Training

A Red Hat training course is available for RHEL 8

第 29 章 在不停止或重启 perf 的情况下从正在运行的 perf 收集器添加或删除追踪点

通过使用控制管道接口在正在运行的 perf 收集器中启用和禁用不同的追踪点,您可以动态调整收集的数据,而无需停止或重启 perf。这样可确保您不会丢失在停止或重启过程中记录的性能数据。

29.1. 在没有停止或重启 perf 的情况下向正在运行的 perf 添加追踪点

使用控制管道接口向正在运行的 perf 收集器添加追踪点,以调整您正在记录的数据,而无需停止 perf 和丢失性能数据。

先决条件

  • 已安装 perf 用户空间工具,如安装 perf 所述。

流程

  1. 配置控制管道接口:

    # mkfifo control ack perf.pipe
  2. 使用您启用的控制文件设置和事件运行 perf 记录

    # perf record --control=fifo:control,ack -D -1 --no-buffering -e 'sched:*' -o - > perf.pipe

    在本例中,在 -e 选项后声明 'sched:*' 使用调度程序事件启动 perf record

  3. 在第二个终端中,启动控制管道的读取权限:

    # cat perf.pipe | perf --no-pager script -i -

    启动控制管道的读取侧会在第一个终端中触发以下信息:

    Events disabled
  4. 在第三个终端中,使用 control 文件启用 tracepoint:

    # echo 'enable sched:sched_process_fork' > control

    此命令触发 perf,以扫描控制文件中针对声明的事件扫描当前事件列表。如果事件存在,则会启用 tracepoint,并在第一个终端中显示以下消息:

    event sched:sched_process_fork enabled

    启用追踪点后,第二个终端会显示 perf 检测追踪点的输出:

    bash 33349 [034] 149587.674295: sched:sched_process_fork: comm=bash pid=33349 child_comm=bash child_pid=34056