perf性能分析工具
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性能分析工具相关推荐
- 嵌入式设备交叉编译perf性能分析工具
嵌入式设备交叉编译perf性能分析工具 1.1 背景 最近工作一直在做嵌入式相关的开发,主要是应用方面,随着程序的业务功能越写越复杂,加上嵌入式系统上的调试工具,少之又少,主要还是靠printf的传统 ...
- 学会使用perf性能分析工具--这一篇就够了
在功能上,perf很强大,可以对众多的软硬件事件采样,还能采集出跟踪点(trace points)的信息(比如系统调用.TCP/IP事件和文件系统操作.perf的代码和Linux内核代码放在一起,是内 ...
- (转)超全整理!Linux性能分析工具汇总合集
原文地址:https://rdc.hundsun.com/portal/article/731.html?ref=myread 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇 ...
- Linux 性能分析工具汇总
Linux 性能分析工具汇总 我从cnaaa.com购买了服务器. 出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系 ...
- C++ 性能分析工具调研
文章目录 0. 前言 1. gprof 3. valgrind 4. gperftools 5. perf 0. 前言 目标:性能分析(profile)包含的内容特别多,但目前我只关注运行时间. 详细 ...
- 系统级性能分析工具perf的介绍与使用
测试环境:Ubuntu16.04 + Kernel:4.4.0-31 apt-get install linux-source cd /usr/src/tools/perf make &&am ...
- linux 解析pdf下载工具,Linux高级系统级性能分析工具-perf.pdf
Linux高级系统级性能分析工具-perf Linux 的系统级性能剖析工具‐perf (二) 承刚 TAOBAO Kernel Team chenggang.qin@ 第三章 Perf top ...
- 系统级性能分析工具 — Perf
从2.6.31内核开始,linux内核自带了一个性能分析工具perf,能够进行函数级与指令级的热点查找. perf Performance analysis tools for Linux. Perf ...
- Linux性能分析工具perf基础使用介绍
perf是Linux内核内置的性能分析工具.从内核版本2.6.31开始出现该工具,如果没有安装,可以使用以下命令进行安装 yum -y install perf.x86_64 这里我们主要介绍一下如何 ...
最新文章
- 待办事项优先级 开发_如何通过创建主题待办事项确定学习内容的优先级
- 独家 | 请停止使用浏览器过程中的不安全行为(附链接)
- apizza接口文档传二维数组
- 亲手完成4大企业实战项目,挑战Python全栈高薪岗位!
- cp命令复制目录 不覆盖
- 文章转载-见贤思齐焉,见不贤而内自省也
- iOS UITableView获取特定位置的cell
- mysql profiling_MySQL Profiling 的使用
- UnityShader26:运动模糊
- AWVS12-Windows
- 小米盒子 计算机共享,小米盒子如何通过局域网共享安装软件
- gaster字体转换器_哥特字体在线生成,哥特字体在线生成器,哥特字体在线转换
- python数学基础——单词统计
- linux-rm -f如何恢复
- case zhen语句_case when zhen else (Sql 2005)
- 音视频开发总结之一理论基础
- locust性能测试图表参数以及分析
- VC++通过SetWindowHookEx去实时拦截窗口消息,实现视频会议中桌面共享图像的实时拖动(附源码)
- 为WebApi项目添加注册功能:问题与解决的思维流程
- Python自然语言处理 第一章 课后习题答案