perf是performance的简称,最常用的性能分析工具。一款随linux内核代码一同发布和维护的性能诊断工具。linux内核2.6.31加入performance Counter, 内核2.6.32改为performance Event。

跟随linux内核发布的perf是一个基于内核的子系统,它提供一个性能分析框架。其利用硬件(CPU、PMU(Performance Monitoring Unit))功能和软件(软件计数器、tracepoint)功能来进行性能统计。

Perf 可以对程序进行函数级别的采样,从而了解程序的性能瓶颈在哪里。其基本原理是:每隔一个固定时间,就是CPU上产生一个中断,看当前是哪个进程、哪个函数,然后给对应的进程和函数加一个统计值,这样就知道CPU有多少时间在某个进程或某个函数上了。使用 Perf 可以计算每个时钟周期内的指令数,称为 IPC。可以获取耗时的TOP函数等。

软件计数器

其中软件计数器能保存进程切换、tick数等数据。通过tick数,可以获取top函数,制作火焰图等。

PMU

Performance Monitor Unit,性能监视单元,其是CPU提供的一个单元,属于硬件的范畴。通过访问相关的寄存器能读取到CPU的一些性能数据,目前大部分CPU都会提供相应的PMU。PMU硬件产生的事件,比如cache命中。

tracepoints

tracepoints是散落在内核源码中的一些hook,它们可以在特定的代码被执行到时触发,这一特性可以被各种trace/debug工具所使用。比如保存内存分配的次数。perf将tracepoint产生的时间记录下来,生成报告,通过分析这些报告,调优人员便可以了解程序运行期间内核的各种细节,对性能症状做出准确的诊断。

这些tracepint的对应的sysfs节点在/sys/kernel/debug/tracing/events目录下。

perf性能分析工具相关推荐

  1. 嵌入式设备交叉编译perf性能分析工具

    嵌入式设备交叉编译perf性能分析工具 1.1 背景 最近工作一直在做嵌入式相关的开发,主要是应用方面,随着程序的业务功能越写越复杂,加上嵌入式系统上的调试工具,少之又少,主要还是靠printf的传统 ...

  2. 学会使用perf性能分析工具--这一篇就够了

    在功能上,perf很强大,可以对众多的软硬件事件采样,还能采集出跟踪点(trace points)的信息(比如系统调用.TCP/IP事件和文件系统操作.perf的代码和Linux内核代码放在一起,是内 ...

  3. (转)超全整理!Linux性能分析工具汇总合集

    原文地址:https://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇 ...

  4. Linux 性能分析工具汇总

    Linux 性能分析工具汇总 我从cnaaa.com购买了服务器. 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系 ...

  5. C++ 性能分析工具调研

    文章目录 0. 前言 1. gprof 3. valgrind 4. gperftools 5. perf 0. 前言 目标:性能分析(profile)包含的内容特别多,但目前我只关注运行时间. 详细 ...

  6. 系统级性能分析工具perf的介绍与使用

    测试环境:Ubuntu16.04 + Kernel:4.4.0-31 apt-get install linux-source cd /usr/src/tools/perf make &&am ...

  7. linux 解析pdf下载工具,Linux高级系统级性能分析工具-perf.pdf

    Linux高级系统级性能分析工具-perf Linux 的系统级性能剖析工具‐perf (二) 承刚 TAOBAO  Kernel Team chenggang.qin@ 第三章  Perf top ...

  8. 系统级性能分析工具 — Perf

    从2.6.31内核开始,linux内核自带了一个性能分析工具perf,能够进行函数级与指令级的热点查找. perf Performance analysis tools for Linux. Perf ...

  9. Linux性能分析工具perf基础使用介绍

    perf是Linux内核内置的性能分析工具.从内核版本2.6.31开始出现该工具,如果没有安装,可以使用以下命令进行安装 yum -y install perf.x86_64 这里我们主要介绍一下如何 ...

最新文章

  1. 待办事项优先级 开发_如何通过创建主题待办事项确定学习内容的优先级
  2. 独家 | 请停止使用浏览器过程中的不安全行为(附链接)
  3. apizza接口文档传二维数组
  4. 亲手完成4大企业实战项目,挑战Python全栈高薪岗位!
  5. cp命令复制目录 不覆盖
  6. 文章转载-见贤思齐焉,见不贤而内自省也
  7. iOS UITableView获取特定位置的cell
  8. mysql profiling_MySQL Profiling 的使用
  9. UnityShader26:运动模糊
  10. AWVS12-Windows
  11. 小米盒子 计算机共享,小米盒子如何通过局域网共享安装软件
  12. gaster字体转换器_哥特字体在线生成,哥特字体在线生成器,哥特字体在线转换
  13. python数学基础——单词统计
  14. linux-rm -f如何恢复
  15. case zhen语句_case when zhen else (Sql 2005)
  16. 音视频开发总结之一理论基础
  17. locust性能测试图表参数以及分析
  18. VC++通过SetWindowHookEx去实时拦截窗口消息,实现视频会议中桌面共享图像的实时拖动(附源码)
  19. 为WebApi项目添加注册功能:问题与解决的思维流程
  20. Python自然语言处理 第一章 课后习题答案

热门文章

  1. [erlang] windows下idea使用rebar3
  2. Voronoi图与路径规划
  3. win11无法输入中文解决办法
  4. 陕西省2019计算机软考试题,2019湖北襄阳计算机软考程序员考试真题及答案解析...
  5. 微信的解构与建构之二:微信的开发历程
  6. 工厂生产数据实时分析,产品质量高效管控
  7. 项目中的软件质量管理
  8. PostgreSQL生成测试数据
  9. 海贼王为什么画风突变_突变对象时控制台中会记录什么
  10. 有没有夫妻相?刷一下脸就知道!