Linux Perf工具
Linux Perf
- 介绍
Perf工具最早源于Linux内核开发者对性能分析需求的不断增长。 2009年, Ingo Molnar率先引入perf工具, 并将其合并进Linux内核2.6.31. 随着时间的推移, perf工具得到了持续改进和发展, 成为了Linux内核开发者和系统管理员日常工具的重要组成部分。
- perf事件: perf事件是perf工具的基础, 代表了一个特定的性能度量。 事件可以是内核, 硬件或用户级应用程序产生的。这些事件可以用于监控, 统计和剖析各种性能指标
- perf计数器: 计数器是用于记录perf事件发生次数的设备
- perf命令行工具: perf命令行工具是用户与perf工具进行交互的主要方式。 它提供了一系列子命令, 如stat, record, report等, 用于控制和分析性能数据。
- perf数据存储: perf工具会将收集到的性能数据存储在特定格式的文件中, 以便后续进行分析。 用户可以使用perf report命令读取这些文件, 并以多种方式展示性能数据。
- perf分析器: 分析器是perf工具的核心组件之一, 负责对收集到的性能数据进行深入分析。 它能够生成详细的报告, 揭示系统和应用程序中的性能瓶颈和优化点。
- perf的基本命令和用法
- perf list 查看系统中可用的perf事件列表。
- perf stat 用于收集和显示性能计数器统计信息。 它可以针对整个系统或特定进程收集数据, 并显示事件的发生次数, 占比等信息
- perf record命令用于收集指定事件的性能数据, 并将其保存在文件中以便后续分析。
- perf report生成性能报告
- perf annotate: 源码级别的性能分析
- perf top: 实时查看热点函数。实时显示系统中最耗费CPU资源的函数。
- perf bench: 内置基准测试, 用于评估系统的性能。 这些测试涵盖了内存, 调度, 文件系统等多个方面。
- perf trace: 系统调用跟踪与分析。帮助用户了解系统在运行时如何与内核进行交互。
perf实际应用与案例
-
- CPU 性能分析: perf工具可以分析CPU的使用情况, 如缓存命中率, 分支预测错误率
perf stat -e cycles,instructions,cache-references,cache-misses,branches,branch-misses ./my_program
-
- 内存性能分析
perf mem record ./my_program
perf mem report
-
- IO性能分析: perf可以跟踪与IO相关的事件, 如磁盘读写操作。
perf trace -e block:block_rq_issue,block:block_rq_complete ./my_program
-
- 软件性能调优
perf record -g ./my_program
perf report
-
- 系统瓶颈定位
perf top
-
- 硬件性能评估
perf bench mem memcpy