用户名
Email
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
帖子
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
软件与程序人生
›
云原生
›
CPU性能优化--skylake 微架构事件编码示例
CPU性能优化--skylake 微架构事件编码示例
乌市泽哥
论坛元老
|
2025-3-24 04:52:37
|
显示全部楼层
|
阅读模式
楼主
主题
1835
|
帖子
1835
|
积分
5505
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
Event 事件 编码 Umask 掩码值 事件掩码助记符 形貌
C0H 00H INST_RETIRED.ANY_P 退休的指令数量
C4H 00H BR_INST_RETIRED 退休的分支跳转指令
linux perf提供常用性能计数器的映射,可以通过映射的事件名称来访问,而不是指定Event 和Umask十六进制值。例如,branches只是BR_INST_RETIRED.ALL_BRANCHES的同义词,可以测量相同的东西,可以通过perf list查看可用的映射名称列表。
perf list
然而,linux perf 并没有为每个CPU架构的所有性能计数器提供映射,如果要找的PMC没有映射,则可以使用如下语法来收罗它。
perf stat -e cpu
此外,围绕linux perf另有一些封装工具,可以用来处理映射工作,例如oprofile和ocperf.py 下面是用法
ocperf -e uops_retired ./a.exe
性能计数器并不是在每个环境中都可以,由于访问PMC必要root权限,
5.3.3 事件多路复用和缩放
在某些情况下,我们想同事统计很多差别的事件,但是一个计数器一次只能统计一个事件。这就是为什么PMU中有多个计数器,即便云云,固定计数器和可编程技术起的数量也总是不敷用的。显然,CPU没有那么多计数器这时多路复用技术可以发挥作用了。
如果事件多余计数器,则分析工具使用时间多路复用技术使每个事件都有机会访问监控硬件。
性能事件1 第一组 PMC1 PMC2 PMC3 PMC$
性能事件2
性能事件3
性能事件4 第二组
性能事件5
性能事件6
使用多路复用技术时,一个事件不会被一直测量,只有一部分能被测量,运行竣事时,剖析工具必要根据运动时间和启动事件比来换算原始计数。
5.4 采样
接纳时最常见的分析方法,a 在调试器下运行程序 b 每10s停息一次程序 c 记录程序停止的位置。 每次捕捉新样本时,所分析程序实行都会被停止,在停止时,剖析器收集程序状态的快照,并用快照构成一个样本。针对每个样本收集的信息可能包罗在停止时实行的指令地点,寄存器状态,调用栈等,收集的样本数据存储在数据文件中,这些可以进一步用于显示调用图,程序中最耗时的部分和统计意义上重要的代码段控制流。
5.4.1 用户模式采样和基于硬件事件的采样。
即用户模式采样的基于硬件事件的采样EBS,用户模式采样是一种纯软件的方法,将代理库嵌入被分析的应用程序中。代理库为应用程序中的每个线程设置OS计时器,在计时器计时完成时,应用程序会担当到SIGPROF信号。用户模式下只能识别热点,二EBS可以用于涉及PMC的其他分析,例如对缓存未掷中的采样,TMA等。
用户模式采样的EBS产生更多的运行时开销,当使用10ms 的默认采样隔断时,用户模式采样的平均开销约为5%,采样1ms的采样隔断时,EBS的平均开销约为2%. 由于可以以更高的频率收集样本,所以通常EBS更准确。
5.4.2 寻找热点
我们可以对任何想要查看性能事件进行采样,好比想知道程序那里发生的L3缓存未掷中最多。可以对应的事件(MEM_LOAD_RETIRED.L3_MISS)进行采样。
准备工作完成后,我们开始计数并运行基准测试。必要设置统计时钟周期的PMC,计数器每个时钟周期递增一次,终极会溢出。当计数器溢出时,硬件将发起PMI,剖析工具被设置成捕捉PMI。 记录计数器溢出时CPU实行的指令,然后,将计数器重置为N并且规复基准测试实行。如今,我们会到值N,使用该值可以控制获取新终端的频率。
多次重复古城,以获取足够的样本,接下来汇总这些样本可以构成程序中热点位置的直方图,就像下面的Linux Perf record 输出所显示的那样。
用linux perf工具收集调用栈有三种可能的方法。
1 帧指针 perf record--call-graph fp 必要二进制文件在编译构建时带上 --fnoomit-frame-pointer参数。由于帧指针RBP 无须从栈中弹出所有参数就能获取调用栈,所以从前常用于调试。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
乌市泽哥
论坛元老
这个人很懒什么都没写!
楼主热帖
是什么让.NET7的Min和Max方法性能暴增 ...
@RequestParam,@PathVariable两个注解 ...
SqlServer远程连接
2019 第十届蓝桥杯大赛软件赛决赛,国 ...
售前的职场生存法则
7 行代码搞崩溃 B 站,原因令人唏嘘! ...
想入行SAP咨询,最具性价比的方式 ...
MySQL审计插件-MariaDB Audit Plugin ...
NTP网络校时服务器(北斗GPS校时器)在 ...
CentOS7 安装 Redis 7.0.2
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
分布式数据库
快速回复
返回顶部
返回列表