详解Arm Performix性能分析工具套件的实际使用方法
作者:Arm 战略与生态系统部开发者技术推广主任工程师 Julie Gaskin
随着 Arm 架构基础设施在云端及数据中心持续规模化部署,开发者亟需深入理解并优化 Arm Neoverse CPU 上的性能表现。与此同时,代理式人工智能 (AI) 工作流带来了全新性能挑战:能效优化不能仅局限于单个组件,而需要从整个系统角度统筹考量。
近期的一些发布,包括Arm AGI CPU在内,正是这一趋势的体现,这类平台专为高并行度、智能体驱动的工作负载设计。在此背景下,性能分析已不再局限于代码调优,而是需要理解工作负载在整个系统层面的执行效率。Arm Performix顺应这一产业变化,助力开发者在现有平台上完成工作负载优化与规模化部署,同时为新一代计算演进做好准备。
本文将结合实操案例与分步演示,详解 Arm Performix 的实际使用方法。
什么是 Arm Performix
硬件本身虽具备强大功能,但要将底层性能数据转化为可执行的优化洞察,往往需要专业知识,并且依赖分散的工具链。Arm Performix 正是为解决这一痛点而设计。该工具现已正式发布,作为一套性能分析工具套件,它依托系统化、可复现、易上手的分析工作流,帮助开发者精准定位性能瓶颈并验证优化成效。
Arm Performix 可在程序执行阶段,直接从 Arm 架构硬件中采集性能数据,以量化指标和可视化图表呈现分析结果,并配套优化洞察指导。工具可将性能开销精准归因至具体函数、调用链路与执行阶段,不仅能看清耗时分布,更能帮开发者厘清工作负载运行缓慢的根本原因。
Arm Performix 不会直接展示原始硬件计数器数据,而是以分析指南 (recipe) 为核心构建分析框架,指导分析路径,帮助快速解答开发者各类常见性能问题,从现象观测直达问题根因:
应用的 CPU 耗时主要集中在哪些环节?
性能瓶颈究竟受限于算力、内存,还是推测执行?
SIMD、SVE、SVE2 等 Arm 架构特性的实际使用情况?
哪些函数应列为优先优化对象?
代码版本迭代是否真正提升了运行能效?
通过这一方式有助于开发者专注于优化策略制定,无需耗费精力钻研工具本身的操作细节。
分析指南与运行实例
Arm Performix 有两大核心:分析指南与运行实例 (run)。
分析指南
分析指南定义了面向特定目标的性能数据采集、分析及可视化方法。每套分析指南会选定对应的性能分析功能、配置数据采集,并通过火焰图、函数列表、调用栈等视图直观展示分析结果。
此次发布,Arm Performix 内置五项标准分析指南:
代码热点:识别程序执行耗时的分布,同时支持多轮运行结果直接比对。
CPU 微架构:以结构化全景视图呈现各类性能瓶颈与热点,帮助开发者聚焦优化收益最大的部分。
指令混合:解析代码对各类指令及 Arm 架构特性的实际使用情况。
内存访问:分析软件与内存系统的交互行为,定位内存延迟瓶颈位置。该模板依托 Arm Statistical Profiling Extension (SPE,统计分析扩展),以极低性能开销对读写访存操作进行采样分析。
系统特征(预览版):通过运行 Arm System Characterization Tool (ASCT,Arm 系统特征工具),来采集系统信息与微基准测试数据,测算内存延迟与带宽表现,助力平台初始化部署、系统调优及架构对比。
这些标准分析指南提供了从宏观系统行为到精细化根因定位的完整结构化分析路径。Arm 还在持续开发新增分析指南,将在后续版本中不断扩展 Arm Performix 的分析工作流。
运行实例
运行实例包含执行某一套分析指南后生成的完整分析结果。用户可对运行实例进行保存、比对、导出和重新加载,方便对性能优化进行多轮迭代,同时可将 Arm Performix 集成至自动化工作流中。
为何 Arm Performix 独具优势
如果你熟悉 perf 这类工具,势必认可硬件性能计数器的价值,同时也深知解读原始计数数据的门槛与成本。
Arm Performix 在以下关键方面实现了差异化优势:
分析指导:Performix 采用 Arm 标准化的性能分析方法论,在呈现分析结果的同时提供上下文解读和下一步优化建议。
函数级归因:性能指标可直接归因到具体函数和调用路径,使分析结果能够立即转化为可执行的优化行动。
低开销采样:Performix 的设计目标是保留真实工作负载行为,保障分析样本具备代表性。
快速上手:只需数分钟即可完成环境部署并产出有效分析结论,无需手动拼接多款工具或工作流。
Arm Performix 能够帮助你更快理解性能表现,这一工具尤其适合于并非性能分析专家的开发者。
快速配置,指导上手
Arm Performix 支持快速完成配置和性能分析流程。工具安装简单,直观的图形界面会引导完成从连接目标系统到运行首次分析的整个过程。
安装指南:https://learn.arm.com/install-guides/performix
用户只需数分钟,即可完成安装并拿到首批有效分析结果。只需连接目标系统、选定分析指南、运行工作负载,Arm Performix 便自动完成性能数据采集与分析,以可视化图表搭配解读指导呈现结论。全程无需手动配置多款工具或自行拼接复杂工作流,让开发者能够专注于性能瓶颈分析与优化,而非耗费精力搭建性能分析环境。
将 Arm Performix
集成到开发者工作流
Arm Performix 可与现代开发环境集成。支持命令行启动运行,还可将分析结果导出为机器可解析格式。借助多轮运行实例对比,开发者能够轻松识别性能退化,持续追踪性能变动趋势。这使得 Performix 既适用于交互式性能剖析,也可接入 CI/CD 管线,实现性能问题的早期识别。
开发者可使用 Arm MCP 服务器将 Arm Performix 集成至 AI 辅助工作流。该服务器实现模型上下文协议 (Model Context Protocol, MCP),通过结构化接口,对外开放系统能力与性能工具能力。GitHub Copilot、Codex 等 AI 助手可直接调用 Performix 分析工作流,以程序化方式查询分析数据、获取性能优化洞察。开发者可以直接在编辑器中发起代码热点分析、查看自顶向下 (Topdown) 指标、查阅指令混合分析结果。通过 MCP 协议对外开放性能数据,Performix 打通了代码开发、工具链与性能分析全链路,支撑更高频次的迭代调优与自动化优化,无需人工手动操作、切换各类性能分析工具。
示例:定位简单循环中
潜藏的性能低效问题
为演示 Arm Performix 如何挖掘实际场景中的性能问题,我们选用一个极简典型工作负载 —— 向量点积作为示例。该基准测试用于计算两个大型浮点数组的点积运算:
sum += a[i] * b[i];
循环每次迭代仅执行一次乘法与一次加法运算。该运算逻辑简洁、执行规律,看似运行效率很高。而这种计算形式广泛存在于各类实际应用场景中,例如机器学习推理、信号处理、线性代数,以及数据分析管线。
请在目标机器上编译此工作负载,并禁用向量化,确保代码保持纯标量实现,不被编译器自动向量化:
g++ -O3 -g -fno-omit-frame-pointer -fno-tree-vectorize -mcpu=native -std=c++17 dot_scalar_problem.cpp -o dot_scalar
关键编译选项:
-O3:采用真实场景级优化级别
-g:生成调试符号,用于源代码级性能归因
-fno-omit-frame-pointer:保留帧指针,确保性能分析时能够获取完整调用栈
-fno-tree-vectorize:禁用编译器自动向量化
-mcpu=native:针对目标 CPU 进行优化调优
使用 Arm Performix 采集性能数据
借助 Arm Performix,开发者可运行代码热点分析指南,快速定位 CPU 耗时分布,并为性能排查提供明确切入点。
代码热点分析指南:
https://developer.arm.com/documentation/110163/2026-1-0/About-Arm-Performix/Basic-concepts/Code-Hotspots-recipe
在指定工作负载路径时,可传入参数控制程序执行行为。Arm 建议至少采集 20 秒性能分析数据,确保采样结果具备统计有效性。运行本示例时请采用 1600 万浮点数、迭代次数设为 2000 次,程序运行时长约为 30 秒。
./dot_scalar 16777216 2000
执行该分析指南时,Arm Performix 会在目标系统上启动工作负载,并在执行过程中按周期采集性能采样数据。
第一条线索:发现核心性能热点
分析运行完成后,Arm Performix 会自动展示分析结果。火焰图可直观标出 CPU 耗时的主要分布位置。
火焰图能够呈现程序在性能分析期间的耗时分布。图中每个矩形代表一个函数,其宽度表示该函数在采样中出现的频率;堆叠层级则展示函数调用链路,便于厘清各函数的调用关系。实际调优中,只需重点关注宽度最大的模块,就能快速锁定对整体运行耗时影响最大的环节,精准挖掘优化空间。
本示例中,计算密集型函数dot_scalar在火焰图中占据绝对主体宽度,说明其占用了绝大部分 CPU 周期。洞察面板数据显示,该函数的采样占比高达 99.96%。
当我们将鼠标悬停在火焰图中的该函数上时,可以看到dot_scalar函数的采样次数为 254,323 次。
使用调用栈视图,可查看该热点函数是如何被调用到的,并判断其性能开销是来自函数自身,还是源于其所调用的其他函数。
双击该热点函数即可打开源代码查看器,从而检查与高 CPU 使用率直接相关的具体代码行。首次打开源代码查看器时,需要指定源代码的根目录,这样 Arm Performix 才能将性能分析数据正确映射到对应文件。
由于该函数承担了工作负载中的大部分计算逻辑,因此它成为热点是符合预期的。接下来,我们将进一步分析 CPU 是如何处理这一工作负载的。
CPU 是否高效运行?
接下来运行 CPU 微架构分析指南,其采用自顶向下的分析方法,剖析 CPU 执行能力的实际利用情况,区分有效运算周期与因流水线停顿、执行低效造成的损耗周期。作为一套标准化性能分析方法,它将 CPU 执行流程逐层拆解为多级瓶颈层级,帮助系统化定位性能损耗的根本所在。
CPU 微架构分析指南:
https://developer.arm.com/documentation/110163/2026-1-0/About-Arm-Performix/Basic-concepts/CPU-Microarchitecture-recipe
Arm Performix 显示,该工作负载有超过 60% 的时间处于前端受限 (frontend bound) 状态。尽管执行单元已经就绪,CPU 仍然频繁在取指或指令解码阶段发生停顿。在自顶向下分析框架下,这意味着后端资源本空闲可用,但执行槽位却因前端瓶颈被白白浪费。
简言之,CPU 并不是受限于计算能力,而是在等待指令。
前端瓶颈成因分析
既然已经明确瓶颈所在,下一步就需要弄清楚原因。Arm Performix 会立即给出分析指引,包括:
指令缓存效率低下
与分支相关的影响
指令布局不合理
控制流过于复杂
但还需要结合上下文来判断。本例是一段极简且紧凑的循环代码,问题根源究竟在哪?为此,我们进一步使用指令混合分析指南深入分析。
指令混合显示,该工作负载几乎完全由标量操作构成,完全没有用到 SIMD。前端之所以承压成为瓶颈,核心原因是:完成少量计算任务,却耗用了过多指令。
即便计算工作量很小,每轮迭代仍会持续占用指令带宽。这会给前端带来持续性压力,并非取指本身速度不足,而是指令数量冗余过多造成的。
洞察面板会列出各类潜在诱因,并精准指出问题根源:当前代码未启用 SIMD 指令,错失了向量化优化的机会。向量化通过一条指令同时执行多次运算,可以显著减少每个数据元素所需的指令数量,从而直接缓解前端压力。
洞察赋能性能优化
接下来,我们将标量循环替换为 Neon 实现。
每条指令可处理 4 个元素
融合乘加 (fused multiply-add) 提升了计算效率
SIMD 管线得到充分利用
需要特别指出的是:
内存访问模式保持不变
分支结构保持不变
工作集大小保持不变
唯一的变化在于:通过 Advanced SIMD 引入了数据级并行性,使得每条指令能够同时处理多个数据元素。
当我们使用优化后的版本再次运行相同的分析指南时,最直观的改进体现在实际运行时间 (wall-clock time) 和总周期数上。这是因为 SIMD 使每次循环迭代能够处理四个元素。火焰图中仍然显示同一个主导函数,但其采样次数已显著下降,从 254,323 次降至 69,387 次。
重新运行指令混合分析指南后,可以观察到以下变化:
Advanced SIMD 指令的占比显著提升
标量浮点运算所占比例明显降低
同等计算工作量下,循环控制指令数量明显减少
通过选择之前的指令混合运行结果,即可将新的指令混合数据与标量版本进行对比。
可将多轮运行实例叠加视图,直观对比优化前后的指令使用情况。优化后程序已大量使用 SIMD 指令,标量运算占比同步下降,表明每条指令完成的实际工作量显著提升。标量版本以整数运算、浮点运算和内存加载操作为主;而 Neon 优化版本通过 Advanced SIMD 引入向量化。循环的向量化大幅降低了处理单个数据元素所需的指令总数,从根本上缓解了前端的性能瓶颈压力。
优化成效:消除前端性能瓶颈
重新运行CPU 微架构分析指南可以看到,经过向量化优化后,前端停顿占比大幅下降,性能瓶颈转为后端因素主导。优化效果十分显著:
前端瓶颈占比从约 60% 降至 11%
后端瓶颈占比升至约 63%
本次优化不仅提升了运行性能,还实现了瓶颈迁移。指令供给不再成为性能制约因素,CPU 执行效率显著提升,性能需求随之转移至执行单元与内存。
这对实际工作负载极具参考价值:当原有瓶颈被消除后,下一项瓶颈就会显现并可被量化测量。Arm Performix 支持迭代式性能排查调优:形成采集分析、代码优化、效果验证的完整闭环,全程引导开发者从瓶颈定位逐步深入,直至找到根本原因。
要点总结
该示例展示了性能优化中的一个常见规律:对流水线某一环节的优化提升,往往会给其他环节增加压力。
Arm Performix 让性能调优全过程变得体系化。只需一套工作流,即可完成耗时点位定位、根因研判以及优化效果验证。
随着工作负载不断演进,性能分析正变得愈发重要。如今的云和 AI 系统,已不再是单一应用,而是由相互协作的服务、框架以及日益自主的智能体共同构成。在这样的环境中,衡量并最大化整个系统层面的有效工作至关重要。
因此,性能工具需要回答的不仅是“CPU 周期花在了哪里”,更关键的是“系统完成有效工作的效率有多高”。
Arm Performix 正是顺应这一变化而设计,通过将硬件遥测数据与结构化的分析、对比工作流相结合,帮助开发者识别性能低效之处,并在基于 Arm 架构的平台上高效扩展工作负载。
随着计算平台向 Arm AGI CPU 等方向演进,这些原则将变得更加关键。在这类平台上,能效优化必须覆盖整个系统,并同时面向大量并发运行的智能体进行整体效率提升。
即刻使用
Arm Performix 可免费使用,适用于所有基于 Arm 架构的平台。完成安装后,你只需连接目标系统、选择一个分析指南,便可在几分钟内开始采集性能数据。
立即使用 Arm Performix 探索你自己的工作负载,看看在不增加资源的情况下,系统还能如何释放更多性能潜力!











