当前位置: 首页 > news >正文

Linux命令-perf

perf 命令概述
perf 是一个强大的性能分析工具,用于分析 Linux 系统和应用程序的性能。它提供了多种子命令和参数,可以用于性能数据的收集、分析和可视化。
perf 子命令
以下是 perf 常用的子命令及其功能说明:

子命令功能说明
annotate解析 生成的 文件,显示被注释的代码
archive
bench中内置的 benchmark 工具,目前包含两套针对调度器和内存管理子系统的 benchmark
buildid-cache管理 的 缓存,每个 ELF 文件都有一个独一无二的 , 用 来关联性能数据与 ELF 文件
buildid-list列出数据文件中记录的所有
diff对比两个数据文件的差异,能够给出每个符号(即函数)在热点分析上的具体差异
evlist列出数据文件 中所有性能事件
inject该工具读取 工具记录的事件流,并将其定向到标准输出,在被分析代码中的任何一点,都可以向事件流中注入其他事件
kmem针对内核内存(slab)子系统进行追踪测量的工具
kvm用来追踪运行在 KVM 虚拟机上的 guest OS
list列出当前系统支持的所有性能事件,包括硬件性能事件、软件性能事件,以及检查点
lock分析内核中的锁信息,包括锁的竞争情况、等待延迟等
mem分析内存存取情况
record收集采样信息,并将其记录在数据文件中,随后可通过其他工具对数据文件进行分析
report读取 创建的数据文件,并给出热点分析结果
sched针对调度器子系统的分析工具
script执行 或 Python 编写的功能扩展脚本、生成脚本框架、读取数据文件中的数据信息等
stat执行某个命令,收集特定进程的性能概况,包括 CPI、缓存不命中率等
test对当前软硬件平台进行健全性测试,可用此工具测试当前的软硬件平台是否能支持 的所有功能
timechart针对测试期间系统行为进行可视化的工具
top类似 Linux 中的 命令,对系统性能进行实时分析
trace关于系统调用的工具
probe用于定义动态检查点

常用参数
以下是一些常用的 perf 参数及其功能说明:

参数功能说明
-a, --all-cpus监控所有 CPU 的性能
-c, --count设置事件计数周期
-F, --freq设置采样频率
-g启用调用图记录
-p, --pid监控特定进程的性能
-e, --event指定要监控的事件
-o 指定 的输出文件名称
-i 指定 的输入文件名称
-G, --cgroup 仅在指定的控制组中监控事件
-t 监控指定线程的性能
-C 指定要监控的 CPU 核心
-D, --delay 指定在程序启动后等待多少毫秒再开始测量
-d, --detailed详细运行 - 启用许多事件
-I, --interval-print 每隔指定毫秒定期打印计数
-n, --null空运行 - 不启动任何计数器
-r, --repeat 重复命令并打印平均值 + 标准差(最大值:100,永远:0)
-s, --sync在开始运行前调用
-T, --transaction硬件事务统计
-v, --verbose更详细输出(显示计数器打开错误等)

常用示例
记录系统范围的性能数据
使用以下命令记录系统范围的性能数据:

sudo perf record -a -g sleep 10

这将记录系统 10 秒钟的性能数据,并生成一个报告供分析。
查看性能统计信息
使用 perf stat 命令查看性能统计信息:

perf stat -a

这将显示系统范围内的性能统计信息。
实时查看性能热点
使用 perf top 命令实时查看当前系统中的性能热点函数和指令:

perf top --call-graph fractal

这将帮助快速了解系统中的性能瓶颈,并定位到最耗时的函数。
生成火焰图
使用 perf script 和火焰图生成脚本生成火焰图:

perf script > output.txt
./flamegraph.pl output.txt > flame.svg

这将生成一个火焰图,用于可视化性能热点。
分析特定进程的性能
使用 perf record 和 perf report 分析特定进程的性能:

perf record -p <PID> -g sleep 10
perf report -i perf.data

这将记录指定进程 10 秒钟的性能数据,并生成一个报告供分析。
查看支持的性能事件
使用 perf list 命令查看当前系统支持的所有性能事件:

perf list

这将列出所有可用的硬件和软件性能事件。

相关文章:

  • 企业为何要求禁用缺省口令?安全风险及应对措施分析
  • 论文笔记(七十九)STOMP: Stochastic Trajectory Optimization for Motion Planning
  • 如何创建极狐GitLab 议题?
  • 论文阅读笔记——π0.5: a Vision-Language-Action Model with Open-World Generalization
  • SpringBoot 封装统一API返回格式对象 标准化开发 请求封装 统一格式处理
  • 【Yolo精读+实践+魔改系列】Yolov1论文超详细精讲(翻译+笔记)
  • 字典与集合——测试界的黑话宝典与BUG追捕术
  • 系统思考:技术与产品协同
  • SLAM常用地图对比示例
  • nextjs国际化
  • Vue3 + TypeScript,使用provide提供只读的响应式数据的详细分析与解决方法
  • #define STEUER_A_H {PWM_A_ON}
  • C#中用 OxyPlot 在 WinForms 实现波形图可视化(附源码教程)
  • 深度理解spring——BeanFactory的实现
  • 通付盾入选苏州市网络和数据安全免费体验目录,引领企业安全能力跃升
  • ubuntu20.04(ROS noetic版)安装cartographer
  • leetcode28. 找出字符串中第一个匹配项的下标_简单KMP
  • 基于Django的权限管理平台
  • Pgvector+R2R搭建RAG知识库
  • 问道数码兽 怀旧剧情回合手游源码搭建教程(反查重优化版)
  • “两高”司法解释:升档为境外非法提供商业秘密罪的量刑标准
  • 马上评丨从东方红一号到神二十,中国航天步履不停
  • 继续免费通行!五一假期全国高速公路日均流量约6200万辆
  • 限制再放宽!新版市场准入负面清单缩减到106项
  • 泽连斯基提议乌俄“立即、全面和无条件”停火
  • 湃书单|澎湃新闻编辑们在读的19本书:在工作中迷失