自学内容网 自学内容网

CPU性能优化--基于处理器事件的采样

基于处理器事件的采样processor event based sampling PEBS 是CPU的另一种非常有用的特性,PEBS被用来在每个采样点获取更多的补充数据。在Intel处理器中,PEBS是在NetBrust微架构开始i引入的,在AMD处理器中,类似的特性叫基于指令的采样IBS。

这些补充数据有定义好的格式,为PEBS配置性能计数器之后,处理器会保存PEBS缓冲区的内容,并将之转存到内存中。记录的信息包括处理器的架构状态,例如,通用的寄存器,EAX, EBX, ESP等,指令指针寄存器EIP和标志寄存器EFLAGS 等的状态,

用户可以通过dmesg命令来检查PEBS是否启用。

字节偏移 字段 字节偏移 字段

EFLAGS R11

EIP R12

RAX R13

EBX R14

ECX R15

EDX

ESI

EDI

EBP

ESP

linux perf工具没像处理LBR那样原始PEBS内容导出来基于具体需要处理PEBS记录导出部分数据所以不可能通过linux perf工具导出原始PEBS数据linux perf工具提供一些原始采样数据处理后PEBS数据可以通过命令perf report -D获得获得原始PEBS记录可以使用pebs-grabber 工具

6.3.1 精准事件

出现溢出导致中断处理器需要一定时间停止执行标记触发溢出指令这对现代复杂乱序执行CPU架构来说实现起来非常困难

引入滑动概念被定义触发性能事件IP标记事件IPPEBS记录IP字段距离滑动使得寻找导致性能问题指令变得困难实际上造成性能问题想象一个缓存命中次数很多程序热点汇编代码如下load1,load2,load3 性能剖析工具load3识别导致缓存未命中指令然而实际load1才是通常这会新手带来很多困惑感兴趣读者可以intel Developer Zone website找到这类问题潜在原因更多信息

滑动问题通过处理器自身记录PEBS记录指令地址得到缓解PEBS记录中EventingIP字段表示就是导致性能事件指令需要硬件支持并且通过支持一部分性能事件这样事件称为精准事件具体微架构精准事件详见下面列出了Skylake 微架构精确事件

INST_RETIRED

OTHER_ASSISTS

BR_INST_RETIRED

BR_MISP_RETIRED

FRONTEND_RETIRED

HLE_RETIRED

RTM_RETIRED

MEM_INST_RETIRED

MEM_LOAD_RETIRED

MEM_LOAD_L3_HIT_RETIRED

TMA分析方法严重依赖精准事件定位效率执行代码具体位置

easyperf 博客一篇文章介绍使用精准事件缓解滑动例子linux perf工具用户需要事件后面增加ppp后缀启动精准标注

perf record -e cpu/event=0xd1

6.3.2 降低采样开销

频繁产生中断分析工具采集中断服务过程程序状态都需要操作系统交互这会消化非常多系统资源这也是为何有些硬件允许无中断自动特定缓冲区采样多次只有特定缓冲区满了处理器才会发起中断缓冲区内容刷新内存中这种方式开销相比传统基于中断采样开销要低

PEBS配置性能计数器计数器溢出条件支撑PEBS机制溢出处理器生成PEBS事件PEBS事件中处理器会把PEBS记录存储PEBS缓冲区然后清理计数器溢出状态恢复初始值如果缓冲区CPU发起一次中断

注意PEBS缓冲区位于主存大小可以设置性能分析工具工作分配配置内存区域CPU导出PEBS记录

6.3.3 分析内存访问

内存访问很多应用程序性能关键因素有了PEBS就有可能收集程序内存访问相关详细信息数据地址剖析可以实现这个功能为了提供采样加载存储指令更多信息利用了PEBS特性如下字段

数据线性地址0x98

数据源编码0xa0

时延 0xA8

如果性能事件支持数据线性地址功能并且启用了功能CPU导出采样内存访问地址时延请注意这个功能不会记录所有存储加载指令否则开销非常大所以只是内存访问进行采样例如大概只会分析1000访问中一次你可以根据需要设置每秒采样次数

PEBS扩展重要使用场景之一就是检测真伪共享linux perf 工具严重依赖DLA数据寻找争议可能导致真伪共享内存访问

此外有了数据地址剖析工具帮助用户可以获得程序中内存访问一般统计信息

从上面输出我们可以看到程序加载指令8%通过L1缓存实现15%通过 DRAM实现


原文地址:https://blog.csdn.net/fantasy_ARM9/article/details/144417623

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!