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

Linux系统中的Perf总结

Linux系统中的Perf总结

Perf 是一个集成在 Linux 内核中的强大性能分析工具,在 Ubuntu 系统上尤为实用。它可以帮助用户监控和分析 CPU、内存、I/O 等性能指标。本文将一步步详解 Perf 在 Ubuntu 系统中的安装、使用方法及进阶技巧,带你从入门走向精通。


第一步:认识 Perf

Perf(Performance Counters for Linux)是一个基于内核的性能分析工具,支持硬件事件(如 CPU 周期、缓存命中)和软件事件(如系统调用、上下文切换)的监控。它适用于:

  • 性能瓶颈定位
  • 系统优化
  • 实时和离线分析

在 Ubuntu 上,Perf 是开发者和系统管理员的必备工具。


第二步:安装 Perf

在 Ubuntu 上安装 Perf 非常简单,以下是详细步骤:

使用 APT 安装(推荐)

  1. 更新软件包索引
    sudo apt update
    
  2. 安装 Perf
    sudo apt install linux-tools-common linux-tools-$(uname -r)
    
    • linux-tools-common 提供 Perf 核心工具。
    • linux-tools-$(uname -r) 确保与当前内核版本匹配。
  3. 验证安装
    perf --version
    
    输出示例:perf version 5.15.0

从源码安装(可选)

若需最新版本:

  1. 安装依赖:
    sudo apt install build-essential flex bison libelf-dev libdw-dev libnewt-dev libssl-dev libunwind-dev
    
  2. 下载并编译:
    git clone https://github.com/torvalds/linux.git
    cd linux/tools/perf
    make
    sudo make install
    

第三步:掌握基本用法

Perf 提供多个子命令,以下是核心功能介绍:

1. perf stat - 统计性能

统计程序运行时的性能数据。

  • 示例:
    perf stat ./myprogram
    
    输出 CPU 周期、指令数等。

2. perf record - 记录数据

记录性能数据到 perf.data 文件。

  • 示例:
    perf record ./myprogram
    

3. perf report - 分析数据

分析 perf record 记录的数据。

  • 示例:
    perf report
    

4. perf top - 实时监控

实时显示性能热点。

  • 示例:
    sudo perf top
    

5. perf list - 查看事件

列出支持的性能事件。

  • 示例:
    perf list
    

第四步:深入核心子命令

以下是具体用法和示例:

perf stat

  • 监控特定程序
    perf stat ./myprogram
    
  • 监控系统整体
    sudo perf stat -a sleep 10
    

perf record

  • 记录调用栈
    perf record -g ./myprogram
    
  • 指定事件
    perf record -e cpu-clock ./myprogram
    

perf report

  • 查看分析结果
    perf report
    
    显示函数占用比例。

perf top

  • 实时监控缓存未命中
    sudo perf top -e cache-misses
    

第五步:进阶应用

掌握以下技巧,提升 Perf 使用水平:

1. 监控多线程

  • 监控特定进程
    perf record -p 1234
    

2. 硬件事件分析

  • 监控 L1 缓存未命中
    perf stat -e L1-dcache-load-misses ./myprogram
    

3. 系统调用跟踪

  • 跟踪 open 调用
    perf trace -e open ./myprogram
    

4. 生成火焰图

  1. 安装工具:
    sudo apt install flamegraph
    
  2. 生成:
    perf record -F 99 -g ./myprogram
    perf script | flamegraph > flame.svg
    

第六步:实战案例

问题:程序 CPU 使用率高

  1. 记录数据
    perf record -g ./myprogram
    
  2. 分析
    perf report
    
    发现 compute 函数占用 60%。
  3. 优化:修改代码,减少循环。
  4. 验证
    perf stat ./myprogram
    
    CPU 使用率降低。

第七步:学习路径

  • 入门:安装 Perf,掌握 perf statperf list
  • 进阶:使用 perf recordreporttop 分析程序。
  • 精通:结合火焰图、系统调用跟踪优化性能。

总结

通过以上步骤,你可以在 Ubuntu 上从零开始掌握 Perf。从安装到实战,Perf 能帮助你深入理解系统性能并优化应用。继续探索高级功能(如 eBPF 集成),你将更熟练地应对复杂场景!


文章转载自:
http://biobibliography.apjjykv.cn
http://bombload.apjjykv.cn
http://antithetical.apjjykv.cn
http://bosque.apjjykv.cn
http://addenda.apjjykv.cn
http://avidity.apjjykv.cn
http://chordophone.apjjykv.cn
http://cataleptoid.apjjykv.cn
http://carbamidine.apjjykv.cn
http://anaemia.apjjykv.cn
http://brachiate.apjjykv.cn
http://cadetcy.apjjykv.cn
http://calorification.apjjykv.cn
http://brushwork.apjjykv.cn
http://campion.apjjykv.cn
http://aoudad.apjjykv.cn
http://certified.apjjykv.cn
http://bombardier.apjjykv.cn
http://avenge.apjjykv.cn
http://cacodylic.apjjykv.cn
http://aterian.apjjykv.cn
http://anticlastic.apjjykv.cn
http://aicpa.apjjykv.cn
http://checkerboard.apjjykv.cn
http://amygdaline.apjjykv.cn
http://bindle.apjjykv.cn
http://archangel.apjjykv.cn
http://bioclimatology.apjjykv.cn
http://bootlace.apjjykv.cn
http://bacat.apjjykv.cn
http://www.dtcms.com/a/138586.html

相关文章:

  • LabVIEW 开发:永不落幕的求知之旅​
  • 【C++初阶】--- list容器功能模拟实现
  • 【AI】以Llama模型为例学习如何进行LLM模型微调
  • HttpSessionBindingListener 的用法笔记250417
  • 【LLM Prompt】CoT vs.ToT
  • Unity编辑器扩展之项目资源查找工具
  • std::unordered_map(C++)
  • 量子计算:开启未来科技之门的钥匙
  • 【网络】IP层的重要知识
  • C++笔记-list
  • yolov8复现
  • Redis List 的详细介绍
  • Socket通信的基本概述
  • 视线估计的相关研究
  • PHP 文件上传
  • prism
  • MahApps.Metro:专为 WPF 应用程序设计的 UI 框架
  • jmeter提取返回值到文件
  • Python高级爬虫之JS逆向+安卓逆向1.5节: 控制结构
  • 【问题】一招解决vscode输出和终端不一致的困扰
  • 三菱FX5U设置修改删除口令
  • dispaly: inline-flex 和 display: flex 的区别
  • vscode stm32 variable uint32_t is not a type name 问题修复
  • 代码随想录刷题|Day20(组合总数,组合总数2、分割回文串)
  • Python内置函数---all()
  • 「ollama」安装包
  • 开源语音合成模型SparkTTS使用
  • 深入理解 React 组件的生命周期:从创建到销毁的全过程
  • Java性能剖析工具箱
  • dbc文件解析CAN报文注意项