Arm Neoverse CPU 的云上软件分析

时间:2024-08-28来源:Arm

作者:Arm 开发者平台部技术产品总监 Peter Harris

Arm Neoverse CPU 为云端的工作负载提供了兼具高性能与高能效的计算平台。通过针对底层硬件进行软件调优,能够大幅提高应用性能。因此,来自硬件的高质量性能数据,以及用于采集和解析数据的性能分析工具必不可少。

Streamline CLI Tools 是一套全新的免费命令行工具,可以在运行 Linux 的 Arm Neoverse 服务器上直接对工作负载进行分析。这些工具采用 Arm CPU 自顶向下 (top-down) 的分析方法,仅需很少的用户配置,即可提供清晰、可操作的性能数据。开发者可以利用这些数据,来优化应用软件中频繁使用的功能代码。

软件性能

为了便于理解软件应用的性能,可以使用这样一个简单的公式:交付性能 = 利用率 × 效率。在这个公式中:

“利用率”衡量的是处理器的执行能力中有多少比例用于处理指令。

“效率”衡量的是所使用的处理器执行能力中有多少比例用于处理有用指令,而非浪费在丢弃的推测执行指令上。

为了获得理想的软件性能,必须构建高效的软件算法,然后在运行时让处理器的利用率和执行效率均达到较高的水平。

自顶向下的 CPU 分析

在自顶向下的分析方法中,现代 Arm CPU 的处理核心被表示为一个包含三个主要阶段的抽象模型。

自顶向下的方法定义了最大可用处理能力,即微操作 (micro-op) 发射槽位的总数乘以测量窗口中的时钟周期数。这些工具使用 Arm CPU 性能计数器来计算一些指标从而可将槽容量对应于核心中特定行为。

前端绑定:因指令获取瓶颈而未使用以致损失的槽容量百分比。

错误推测:由于错误分支预测或错误的推测执行而损失的槽容量百分比。其中 错误的推测执行会使 CPU 取消在错误的控制路径上发出的微操作。

后端绑定:由于后端处理或数据提取延时而未使用以致损失的槽容量百分比。

执行完成:为成功完成指令而用到的槽容量百分比。

这四个基本指标是自顶向下分支树的根节点,显示了对高性能软件非常重要的“利用率”和“效率”的基本指标。每个基本节点下方还有进一步的指标层级,提供了更详细的细分,以便进行因果分析。

这种分层方法具有清晰的因果指标,便于直观地发现和理解软件中对微架构敏感的性能问题。通过这些信息,我们可以根据具体问题采取特定纠正措施来提高性能。

使用 Streamline CLI Tools 进行分析


Streamline CLI Tools 是一套 Arm 原生命令行工具,可完全在服务器上进行性能分析。这个工作流程生成的总结性电子表格可以从服务器下载,以获得可视化结果,但批量分析数据只能留存在云环境上。

自顶向下指标提供了一种识别软件性能问题的系统化方法,但只有当指标与所运行程序中的特定位置相关联时,才能提供可操作的反馈。我们将在 Streamline CLI Tools 中引入新功能,可对自顶向下指标进行逐函数归因分析。

在下面的示例中,我们分析了在 Arm Neoverse V1 上运行的 Arm ASTC 纹理压缩器。分析结果显示 compute_avgs_and_dirs_3_comp_rgb () 函数是压缩器中主要的热点。该函数的指令执行完成率较低,错误推测水平较高。关于错误推测的二级指标表明,有很大比例的分支预测错误,并且每千条指令中存在大量分支未命中 (MPKI)。这份易于理解的性能分析报告,为我们清楚地指明了需要优化的环节和需要改进的地方。

在优化此函数后,我们用 Neon 条件选择替换了不可预测的数据驱动分支,然后重新进行分析。分析结果显示,更改后实现了显著的 10% 性能提升,并且此函数的错误推测指标回落到典型的基线水平。任务圆满完成。

免费获取 Streamline CLI Tools

你可以通过阅读教程 [1] ,开始使用 Streamline CLI Tools。使用 wget 可以轻松下载工具并直接安装到 Arm 服务器上,或者也可以访问我们的网站来下载软件包 [2] 

欢迎告诉我们你希望在未来版本中看到哪些功能,或者你在使用工具时遇到的任何问题。可以通过 Streamline GitHub 报告问题 [3] ,也可以发送电子邮件至 performancestudio@arm.com 联系产品团队。

关键词: Arm Neoverse CPU

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版