第 29 章 在不停止或重启 perf 的情况下从正在运行的 perf 收集器添加或删除追踪点
			通过使用控制管道接口在正在运行的 perf 收集器中启用和禁用不同的追踪点,您可以动态调整收集的数据,而无需停止或重启 perf。这样可确保您不会丢失在停止或重启过程中记录的性能数据。
		
29.1. 在没有停止或重启 perf 的情况下向正在运行的 perf 添加追踪点
复制链接链接已复制到粘贴板!
				使用控制管道接口向正在运行的 perf 收集器添加追踪点,以调整您正在记录的数据,而无需停止 perf 和丢失性能数据。
			
先决条件
- 
						已安装 perf用户空间工具,如安装 perf 所述。
流程
- 配置控制管道接口: - mkfifo control ack perf.pipe - # mkfifo control ack perf.pipe- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用您启用的控制文件设置和事件运行 - perf 记录:- perf record --control=fifo:control,ack -D -1 --no-buffering -e 'sched:*' -o - > perf.pipe - # perf record --control=fifo:control,ack -D -1 --no-buffering -e 'sched:*' -o - > perf.pipe- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 在本例中,在 - -e选项后声明- 'sched:*'使用调度程序事件启动- perf record。
- 在第二个终端中,启动控制管道的读取权限: - cat perf.pipe | perf --no-pager script -i - - # cat perf.pipe | perf --no-pager script -i -- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 启动控制管道的读取侧会在第一个终端中触发以下信息: - Events disabled - Events disabled- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在第三个终端中,使用 control 文件启用 tracepoint: - echo 'enable sched:sched_process_fork' > control - # echo 'enable sched:sched_process_fork' > control- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 此命令触发 - perf,以扫描控制文件中针对声明的事件扫描当前事件列表。如果事件存在,则会启用 tracepoint,并在第一个终端中显示以下消息:- event sched:sched_process_fork enabled - event sched:sched_process_fork enabled- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 启用追踪点后,第二个终端会显示 - perf检测追踪点的输出:- bash 33349 [034] 149587.674295: sched:sched_process_fork: comm=bash pid=33349 child_comm=bash child_pid=34056 - bash 33349 [034] 149587.674295: sched:sched_process_fork: comm=bash pid=33349 child_comm=bash child_pid=34056- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow