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

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

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

http://www.xdnf.cn/news/1720.html

相关文章:

  • 企业办公即时通讯软件BeeWorks,私有化安全防泄密
  • 【MobaXterm】---修改 MobaXterm 终端 默认字体和大小 保真
  • 基于 C++ 的用户认证系统开发:从注册登录到Redis 缓存优化
  • 【技术派后端篇】整合WebSocket长连接实现消息实时推送
  • 《Python3网络爬虫开发实战(第二版)》配套案例 spa6
  • 数据结构——栈与队列
  • GPU热设计功耗(TDP)与计算效率的平衡艺术:动态频率调节对算法收敛速度的影响量化分析
  • 【Leetcode 每日一题】2799. 统计完全子数组的数目
  • Spring Security结构总览
  • 网络变更:APIC 节点替换
  • 使用Tauri 2.3.1+Leptos 0.7.8开发桌面小程序汇总
  • 【多智能体系统组织方式解析】五大架构赋能智能协作
  • java操作打印机直接打印及详细linux部署(只适用于机器和打印机处于同一个网段中)
  • windbg-A complete guide for Advanced Windows Debugging part1
  • 深入解析 Docker 容器进程的 cgroup 和命名空间信息
  • 机器学习 Day14 XGboost(极端梯度提升树)算法
  • window10部署MinerU
  • 电竞俱乐部护航点单小程序,和平地铁俱乐部点单系统,三角洲护航小程序,暗区突围俱乐部小程序
  • 玩转 C++ 算术运算符(五十二)
  • 拼团退款中采用分片处理降低对数据库
  • 关于Spring Boot构建项目的相关知识
  • Mysql的深度分页查询优化
  • 2194出差-节点开销Bellman-ford/图论
  • rk3588 驱动开发(三)第五章 新字符设备驱动实验
  • Android PackageManagerService(PMS)框架深度解析
  • 【4.23号更新,docker可用镜像源】2025最新 Docker 国内可用镜像源仓库地址
  • Linux 服务器运维常用命令大全
  • 性行为同意协议系统网站源码
  • JavaWeb:HtmlCss
  • 无锡SAP实施专家——哲讯智能科技助力企业数字化转型