您的位置:首页 > 房产 > 建筑 > 国家企业官网_深圳保障性住房新政策_企业网站建设平台_微信公众号怎么创建

国家企业官网_深圳保障性住房新政策_企业网站建设平台_微信公众号怎么创建

2025/4/4 7:24:34 来源:https://blog.csdn.net/zhaominyong/article/details/146986289  浏览:    关键词:国家企业官网_深圳保障性住房新政策_企业网站建设平台_微信公众号怎么创建
国家企业官网_深圳保障性住房新政策_企业网站建设平台_微信公众号怎么创建

perf 命令详解

perf 是 Linux 系统中最强大的 ‌性能分析工具‌,基于内核的 perf_events 子系统实现,支持硬件性能计数器(PMC)、软件事件跟踪等功能,用于定位 CPU、内存、I/O 等性能瓶颈。以下是其核心用法与实战指南:

一、安装与基础配置
  1. 安装

# Debian/Ubuntu
sudo apt install linux-tools-common linux-tools-$(uname -r)# CentOS/RHEL
sudo yum install perf# 验证安装
perf --version

‌    2. 内核符号支持

  • 安装调试符号包(如 linux-image-$(uname -r)-dbgsym),以便 perf 解析内核函数名。
  • 临时允许非特权用户使用性能监控(可选):
sudo sysctl kernel.perf_event_paranoid=-1
二、核心功能与子命令
子命令功能描述
perf stat统计程序运行的硬件事件(如缓存命中率)
perf record记录性能数据(生成 .data 文件)
perf report分析 record 生成的数据
perf top实时监控系统或进程的性能热点
perf trace跟踪系统调用(类似 strace
perf probe动态添加内核或用户空间探针
三、常用场景与实战示例
1. 统计程序性能事件
# 统计命令执行期间的 CPU 周期、缓存命中等
perf stat -e cycles,cache-misses,branch-misses ./my_program

输出示例:

 Performance counter stats for './my_program':2,356,789      cycles                    # 3.801 GHz45,678      cache-misses              # 2.123 % of all cache refs12,345      branch-misses             # 0.56% of all branches0.001234567 seconds time elapsed
2. 采样 CPU 热点函数
# 记录进程的 CPU 使用(采样频率 99Hz)
perf record -F 99 -g -- ./my_program  # -g 记录调用栈
perf report --stdio                   # 文本报告
perf report --gui=gtk                 # 图形化分析(需安装 gtk 支持)

输出解读‌:

  • Overhead‌:函数占用的 CPU 时间比例。
  • Command‌:进程名。
  • Shared Object‌:所属动态库或可执行文件。
3. 生成火焰图(Flame Graph)
# 1. 记录性能数据
perf record -F 99 -g -- ./my_program
# 2. 生成折叠堆栈
perf script > out.perf
stackcollapse-perf.pl out.perf > out.folded
# 3. 生成火焰图
flamegraph.pl out.folded > flamegraph.svg

火焰图直观展示函数调用栈的 CPU 占用分布,横向宽度表示耗时比例。

4. 跟踪系统调用
# 类似 strace,但性能更高(记录所有线程)
perf trace -e 'syscalls:sys_enter_*' ./my_program

过滤特定系统调用:

perf trace -e 'syscalls:sys_enter_open,syscalls:sys_enter_read'
5. 动态添加探针
# 在内核函数 add_to_page_cache_lru 添加探针
perf probe --add add_to_page_cache_lru
# 跟踪探针事件
perf record -e probe:add_to_page_cache_lru -a
四、高级功能
  1. 硬件性能计数器
    使用 perf list 查看支持的事件(如 instructionsbranch-misses):

perf stat -e instructions,L1-dcache-load-misses ./my_program

‌    2. 用户空间静态探针
在代码中插入静态探针(需编译时支持):

#include <sys/sdt.h>
int main() {DTRACE_PROBE("myapp", "operation_start");  // 探针点// ...
}

跟踪探针:

perf buildid-cache --add ./my_program  # 注册程序
perf probe --exec=./my_program --add 'myapp:operation_start'
perf record -e 'probe_myapp:*' ./my_program
五、注意事项
  1. 权限要求
    • 部分功能(如硬件计数器)需要 root 权限或 CAP_PERFMON 能力。
  2. 性能开销
    • perf record 高频采样可能导致目标程序变慢,生产环境慎用。
  3. 符号解析
    • 若函数名显示为十六进制地址,需安装调试符号(如 -dbgsym 包)。

六、与其他工具对比
工具特点适用场景
perf内核级支持,硬件级性能分析CPU/内存瓶颈、调用链分析
strace系统调用跟踪文件/网络操作调试
gdb源码级调试程序崩溃、逻辑错误

掌握 perf 可快速定位性能问题,尤其在高并发、低延迟场景中作用显著。结合火焰图和动态探针,能实现从宏观到微观的全方位分析。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com