Arm Neoverse CPU 的云上软件分析
点击上方 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 中引入新功能,可对自顶向下指标进行逐函数归因分析。
在优化此函数后,我们用 Neon 条件选择替换了不可预测的数据驱动分支,然后重新进行分析。分析结果显示,更改后实现了显著的 10% 性能提升,并且此函数的错误推测指标回落到典型的基线水平。任务圆满完成。
免费获取 Streamline CLI Tools
你可以通过阅读教程 [1] ,开始使用 Streamline CLI Tools。使用 wget 可以轻松下载工具并直接安装到 Arm 服务器上,或者也可以访问我们的网站来下载软件包 [2] 。
欢迎告诉我们你希望在未来版本中看到哪些功能,或者你在使用工具时遇到的任何问题。可以通过 Streamline GitHub 报告问题 [3] ,也可以发送电子邮件至 performancestudio@arm.com 联系产品团队。
相关链接:
[1] https://learn.arm.com/learning-paths/servers-and-cloud-computing/profiling-for-neoverse
[2] https://developer.arm.com/Tools and Software/Streamline Performance Analyzer#Software-Download
[3] https://github.com/ARM-software/Streamline
* 本文为 Arm 原创文章,转载请留言联系获得授权并注明出处。
欢迎点击阅读原文