CPU性能优化-CPU特性

现代CPU持续的添加新特性,使用这些特性可以大大简化找到底层问题的方法。

1 自顶向下微架构分析TMA,是一种识别应用程序低效使用CPU微架构的强大技术,识别负载的瓶颈,定位出现问题的代码具体位置,封装了CPU微架构中复杂的技术点。

2 最后分支记录(last branch record)LBR是在执行过程中连续记录最新分支结果的机制,通常用来采集调用栈,热点分支,计算每个分支的错误预测概率等等。

3 基于处理器事件的采样是一种增强的采样技术,主要优势有降低采样开销和提供,精确事件的能力。精确事件可以定位导致特定性能事件的具体指令。

4 Intel 处理器追踪,是一种基于每条指令的时间戳记录和重建程序执行过程的工具,主要用途是对性能故障进行事后分析和根因定位。

6.1 自顶向下微架构分析技术

TMA是识别程序CPU性能瓶颈的一种非常强大的技术,不需要开发者对CPu的微架构和PMC有深入理解,就能有效的找到CPU的性能瓶颈,

TMA能识别程序中每个热点停滞执行的原因,导致停滞瓶颈可能跟前端绑定,后端绑定,退休,错误投机有关。图28描述了TMA性能瓶颈分类的概念,我们知道CPU中有内存缓冲区,它们持续跟踪正在执行的指令的信息。只要信的指令被取地址或者译码,都在回在这些缓冲区中记录新的条目。如果在指定执行周期中指令对应的微操作没有被分配,可能有两种原因,不能对它进行取地址和译码。后端负载过重导致无法为新的微操作分配资源。被分配和调度执行但是没有退休的微操作跟错误投机相关。

TMA通过采集特定指标来观察程序的执行情况,基于这些指标,通过将应用程序关联到某个分类来表征其类型。每个分类中都嵌套更细的分类。可以更好的细分程序中CPU性能瓶颈,我们多次运行被测试程序,每次都关注特定的指标并往下钻。直到找到更详细的性能瓶颈分类。

TMA 槽位,

非停滞 停滞

退休 错误投机 前端绑定 后端绑定

基础轻量 微码序列器 分支预测错误 机器清理 读取延迟 读取带宽 核绑定 内存绑定

浮点算数运算 其他 辅助, ITLB未命中 指令缓冲未命中 分支重定向 读取源1,读取源2, 除法器 执行端口利用率, 存储绑定,L1缓存绑定 L2缓存绑定 Ln缓存绑定 外存绑定。

标量运算,向量运算 3+ 号端口,1或2号端口 0号端口,内存带宽,内存延迟。

在真实的应用场景中,性能可能受限于多种因素,TMA需要同时向下钻多个类别,确定每个类别瓶颈对程序性能的影响,分析工具Intel Vtune Profiler AMD uprof 可以在一次基准测试运行中计算所有相关的指标。

前两层的TMA指标都是通过所有流水线槽位利用率来表示的。

6.1.1 Intel Vtune Profiler中的TMA

TMA在最新的Intel Vtune Profiler的微架构搜索分析中有体现,图30展示了7.zip基准测试的分析总结,从图可以看到,CPU错误投机导致了显著的执行时间浪费。

该工具的精妙之处就是可以单击自己感兴趣的指标,可以展示与该指标相关的函数,例如。 单击错误投机指标,你将会看到图31展示的内容。

如果双击Lzma_DecodeReal2函数,Intel Vtune Profiler会展示代码视图,如图32所示,高亮显示的代码对LzmaDec_DecodeReal2函数的分支预测错误贡献最大。

最图32 微架构搜索,源代码和汇编指令视图

6.1.2 linux perf中的TMA

linux内核从4.8开始,perf增加了一个 --topdown参数,可以在perf stat命令中,打印TMA第一层指标,该层只有4个类别。

retiring bad speculat FE bound BE bound

为了获得高层TMA指标的值,linux perf需要剖析整个系统-a, 所以我们可以看到所有的CPU核指标。但是,通过taskset -c 0可以将基准测试绑定到core 0, 所以可以看到第一行,也就是s0-c0对应的这一行。

可以使用toplev工具获得TMA 的第2,3及其他层指标。

相关推荐
修电脑的猫6 小时前
Performance Monitoring on Production Systems in SAP ERP(ABAP性能优化)
性能优化·abap
星辰离彬6 小时前
Java 与 MySQL 性能优化:Java应用中MySQL慢SQL诊断与优化实战
java·后端·sql·mysql·性能优化
Edingbrugh.南空11 小时前
操作系统级TCP性能优化:高并发场景下的内核参数调优实践
网络协议·tcp/ip·性能优化
Edingbrugh.南空11 小时前
ClickHouse 全生命周期性能优化
clickhouse·性能优化
运维小贺14 小时前
各服务器厂商调整BIOS睿频教程
linux·运维·服务器·性能优化
Thomas_YXQ16 小时前
Unity3D游戏内存优化指南
游戏·unity·职场和发展·性能优化·蓝桥杯·游戏引擎·unity3d
合作小小程序员小小店19 小时前
web网页开发,在线%ctf管理%系统,基于html,css,webform,asp.net mvc, sqlserver, mysql
mysql·sqlserver·性能优化·asp.net·mvc
Thomas_YXQ2 天前
Unity URP法线贴图实现教程
开发语言·unity·性能优化·游戏引擎·unity3d·贴图·单一职责原则
熊猫钓鱼>_>2 天前
Django全栈开发:架构解析与性能优化实战
性能优化·架构·django
天若有情6732 天前
03_性能优化:让软件呼吸更顺畅
计算机·性能优化·软件·发展