Red Hat Training

A Red Hat training course is available for RHEL 8

第 26 章 从正在运行的 perf 收集器添加和删除追踪点,而不停止或重启 perf

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

26.1. 在运行的 perf 收集器中添加追踪点,而不停止或重启 perf

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

先决条件

流程

  1. 配置控制管道接口:

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

    # 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. 在第三个终端中,使用控制文件启用追踪点:

    # echo 'enable sched:sched_process_fork' > control

    这个命令会触发 perf 扫描控制文件中声明的事件列表。如果存在该事件,则会启用追踪点,并在第一个终端中显示以下信息:

    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

26.2. 从正在运行的 perf 收集器中删除追踪点,而不停止或重启 perf

使用控制管道接口从正在运行的 perf 收集器中删除追踪点,以减少您收集的数据范围,而无需停止 perf 并丢失性能数据。

先决条件

流程

  • 删除追踪点:

    # echo 'disable sched:sched_process_fork' > control
    注意

    这个示例假设您之前已将调度程序事件加载到控制文件中并启用了追踪点 sched:sched_process_fork

    这个命令会触发 perf 扫描控制文件中声明的事件列表。如果存在该事件,则禁用追踪点,并在用来配置控制管道的终端中显示以下消息:

    event sched:sched_process_fork disabled