您的位置 : 资讯 > 软件资讯 > 初入源码-perf设计文档

初入源码-perf设计文档

来源:菜鸟下载 | 更新时间:2025-04-26

大家好,我是程栩,一个专注于性能的大厂程序员,分享包括但不限于计算机体系结构、性能优化、云

大家好,我是程栩,一个专注于性能的大厂程序员,分享包括但不限于计算机体系结构、性能优化、云原生的知识。

本文是perf系列的第五篇文章,后续会继续介绍perf,包括用法、原理和相关的经典文章。

今天我们继续探讨perf,尝试在阅读源码的同时理解其工作原理。perf的用户态源码位于tools/perf目录下,通过调用perf_event_open系统调用来获取内核的支持,从而获取数据。

本文主要基于内核文档翻译而成,目录为:tools/perf/design.txt。该文档介绍了perf的部分设计,但关于perf_event_open的部分内容较为陈旧,请参考最新文档。

现代CPU中的性能计数器(performance counters)是特殊的硬件寄存器。这些寄存器在不影响内核或应用性能的情况下统计诸如指令执行、cache miss、分支预取失败等硬件事件。如果我们给它们传递具体的周期数,这些性能计数器也可以在计数到达该周期时触发中断,从而对此时CPU上运行的应用进行采样剖析(Profiling)。

Linux性能计数器子系统(Linux Performance Counter subsystem)提供了这些硬件能力的抽象(接口),可以帮助我们获取CPU、进程等维度的数据,并且在这些能力之上,提供了事件能力。同时,其提供了虚拟的64位计数器,无论底层硬件的位宽是多少,其都可以兼容。

性能计数器可以通过特殊的文件描述符(file descriptors)来进行访问,我们可以通过sys_perf_event_open系统调用来获取该文件描述符:

int sys_perf_event_open(struct perf_event_attr *hw_event_uptr, pid_t pid, int cpu, int group_fd, unsigned long flags);
登录后复制

菜鸟下载发布此文仅为传递信息,不代表菜鸟下载认同其观点或证实其描述。

展开
重新装修
重新装修
类型:模拟养成 运营状态:公测 语言:简体中文
创意 生活
前往下载

相关文章

更多>>

热门游戏

更多>>

手机扫描此二维码,

在手机上查看此页面

关于本站 下载帮助 版权声明 网站地图

版权投诉请发邮件到 cn486com#outlook.com (把#改成@),我们会尽快处理

Copyright © 2019-2020 菜鸟下载(www.cn486.com).All Reserved | 备案号:湘ICP备2022003375号-1

本站资源均收集整理于互联网,其著作权归原作者所有,如有侵犯你的版权,请来信告知,我们将及时下架删除相应资源