ZBLOG

perf script 的功能?

perf script 是 Linux 性能分析工具 perf 的一个子命令,主要用于将 perf record 采集的性能数据(通常保存在 perf.data 文件中)转换为可读的文本格式或脚本可处理的流式数据。以下是它的核心功能详解:


1. 核心功能

(1) 原始事件数据转文本

  • 作用:将二进制格式的 perf.data 转换为人类可读的文本输出。
  • 示例
    
     perf script
    
    输出样例:
    
     mysqld  1234 [001] 456789.012345: cpu-clock:      7f8b2d3cf0 _start+0x0 (/lib/x86_64-linux-gnu/ld-2.31.so)
    

(2) 支持多种输出格式

  • 默认格式:时间戳、进程名、PID、CPU、事件类型、调用栈等。
  • 自定义字段:通过 -F 指定输出的字段(如 pid,tid,time,event,sym)。
    
     perf script -F pid,time,event,sym
    

(3) 脚本化处理

  • 与外部工具集成:输出可通过管道传递给其他工具(如 grep/awk/Python)进行自动化分析。
  • 示例:统计最频繁的函数调用
    
     perf script | awk '{print $NF}' | sort | uniq -c | sort -nr | head -10
    

2. 高级用法

(1) 生成火焰图输入数据

   perf script > out.perf         # 生成中间文件
   stackcollapse-perf.pl out.perf > out.folded
   flamegraph.pl out.folded > out.svg

(2) 过滤特定事件或进程

   perf script --pid <PID>               # 仅显示指定进程的数据
   perf script --event cpu-clock         # 仅显示特定事件

(3) DWARF调试信息支持

若编译时添加了 -g,可显示更详细的符号和源码位置:

   perf script --call-trace              # 显示完整调用链和行号(需调试符号)

3. Perf Script vs Other Perf Commands

Command Purpose
perf record 采集性能数据到 perf.data
perf report 交互式查看分析结果(类似top-down)
perf annotate 反汇编代码并关联热点
perf script 原始数据导出,适合脚本化/定制化分析

4. FAQ常见问题

  • Q: addr2line无法解析地址?
    A:

    1. 确认二进制文件未剥离符号表(编译时加 -g,运行时未执行strip)。
    2. `.text段地址偏移计算正确。
  • Q:如何捕获完整调用栈?

# x86需启用帧指针或DWARF回溯 
perf record --call-graph dwarf/fp ...

通过灵活使用这些功能,你可以实现从基础性能诊断到复杂自动化分析的各类任务。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23155

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?