首页 > 其他分享 >perf 原理

perf 原理

时间:2022-10-29 20:57:41浏览次数:61  
标签:采样 perf 中断 内核 PMC 原理 PMI

perf 工具分内核态部分和用户态部分。   后续添加详细实验及过程截图

集成到 Linux 内核的代码,负责向硬件发出指令。
perf 用户空间实用程序,可让您使用内核代码并帮助您分析收集的数据

以监测“cycles”事件为例,perf的工作过程如下:
首先,perf 会通过系统调用sys_perf_event_open在内核中注册一个监测“cycles”事件的性能计数器。内核根据perf提供的信息在PMU(Performance Monitoring Unit)上初始化一个硬件性能计数器(PMC:Performance Monitoring Counter)
其次,PMC随着CPU周期的增加而自动累加。在PMC溢出时,PMU触发一个PMI(Performance Monitoring Interrupt)中断。内核在PMI中断的处理函数中保存PMC的计数值,触发中断时的指令地址(Register IP:Instruction Pointer),当前时间戳以及当前进程的PID,TID,comm等信息,这些信息统称为一个采样(sample)。
然后,内核会将收集到的sample放入用于跟用户空间通信的Ring Buffer。用户空间里的perf分析程序采用mmap机制从Ring Buffer中读入采样,并对其解析;perf根据pid,comm等信息可以找到对应的进程。根据IP与ELF文件中的符号表可以查到触发PMI中断的指令所在的函数。
根据上述的perf采样原理可以得知,perf假设两次采样之间,即两次相邻的PMI中断之间系统执行的是同一个进程的同一个函数。这种假设会带来一定的误差,当我们感觉perf给出的结果不准时,不妨提高采样频率,perf会给出更加精确的结果。

 

参考:

https://zhuanlan.zhihu.com/p/546658526

标签:采样,perf,中断,内核,PMC,原理,PMI
From: https://www.cnblogs.com/wanmeishenghuo/p/16839816.html

相关文章

  • 浏览器渲染原理
    原文链接http://blog.poetries.top/2018/12/22/browser-render关注公众号获取更多资讯一、浏览器如何渲染网页概述:浏览器渲染一共有五步处理HTML并构建DOM......
  • jsp 的运行原理
    jsp的本质,其实是一个Servlet程序。首先我们去找到我们Tomcat的目录下的work\Catalina\localhost目录。当我们发布day09工程。并启动Tomcat服务器后。我们发现在......
  • nginx负载均衡的原理以及过程(4)
    负载均衡的策略:  这是nginx默认最基础的策略。使用keepalive提高上游服务质量 ......
  • react-Suspense工作原理分析
    Suspense基本应用Suspense目前在react中一般配合lazy使用,当有一些组件需要动态加载(例如各种插件)时可以利用lazy方法来完成。其中lazy接受类型为Promise<()=......
  • 快读《ASP.NET Core技术内幕与项目实战》EFCore2.5:集合查询原理揭秘(IQueryable和IEnum
    本节内容,涉及4.6(P116-P130)。主要NuGet包:如前述章节 一、LINQ和EFCore的集合查询扩展方法的区别1、LINQ和EFCore中的集合查询扩展方法,虽然命名和使用完全一样,都两者定义......
  • 云小课|MRS基础原理之CarbonData入门
    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说)、深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云。更多精彩内容请单击......
  • SVM(支持向量机)原理与应用
    1.支持向量机支持向量机(SupportVectorMachine,SVM)是一类按监督学习(supervisedlearning)方式对数据进行二元分类的广义线性分类器(generalizedlinearclassifier),其......
  • Mybatis 之 插件原理
    核心代码简介MyBatis插件原理:责任链模式  + JDK动态代理 ( 接口、代理对象、代理类:实现 jdk的 InvocationHandler)Mybatis 插件核心接口:Interceptor/***......
  • 【视频】Copula算法原理和R语言股市收益率相依性可视化分析|附代码数据
    阅读全文:http://tecdat.cn/?p=6193copula是将多变量分布函数与其边缘分布函数耦合的函数,通常称为边缘。在本视频中,我们通过可视化的方式直观地介绍了Copula函数,并通过R软......
  • Chrome 浏览器运行机制原理解析 All In One
    Chrome浏览器运行机制原理解析AllInOne性能优化Insidelookatmodernwebbrowser深入了解现代网络浏览器Blog-ChromeDevelopershttps://developer.chrome.......