Linux Perf工具

Linux Perf 

  • 介绍

  Perf工具最早源于Linux内核开发者对性能分析需求的不断增长。 2009年, Ingo Molnar率先引入perf工具, 并将其合并进Linux内核2.6.31. 随着时间的推移, perf工具得到了持续改进和发展, 成为了Linux内核开发者和系统管理员日常工具的重要组成部分。 

  1. perf事件: perf事件是perf工具的基础, 代表了一个特定的性能度量。 事件可以是内核, 硬件或用户级应用程序产生的。这些事件可以用于监控, 统计和剖析各种性能指标
  2. perf计数器: 计数器是用于记录perf事件发生次数的设备
  3. perf命令行工具: perf命令行工具是用户与perf工具进行交互的主要方式。 它提供了一系列子命令, 如stat, record, report等, 用于控制和分析性能数据。 
  4. perf数据存储: perf工具会将收集到的性能数据存储在特定格式的文件中, 以便后续进行分析。 用户可以使用perf report命令读取这些文件, 并以多种方式展示性能数据。 
  5. 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

      

 

posted @ 2023-09-19 16:23  球球小世界  阅读(108)  评论(0编辑  收藏  举报