作者:Arm 戰(zhàn)略與生態(tài)系統(tǒng)部開發(fā)者技術(shù)推廣主任工程師 Julie Gaskin
隨著 Arm 架構(gòu)基礎(chǔ)設(shè)施在云端及數(shù)據(jù)中心持續(xù)規(guī)模化部署,開發(fā)者亟需深入理解并優(yōu)化 Arm Neoverse CPU 上的性能表現(xiàn)。與此同時(shí),代理式人工智能 (AI) 工作流帶來了全新性能挑戰(zhàn):能效優(yōu)化不能僅局限于單個(gè)組件,而需要從整個(gè)系統(tǒng)角度統(tǒng)籌考量。
近期的一些發(fā)布,包括Arm AGI CPU在內(nèi),正是這一趨勢的體現(xiàn),這類平臺專為高并行度、智能體驅(qū)動的工作負(fù)載設(shè)計(jì)。在此背景下,性能分析已不再局限于代碼調(diào)優(yōu),而是需要理解工作負(fù)載在整個(gè)系統(tǒng)層面的執(zhí)行效率。Arm Performix順應(yīng)這一產(chǎn)業(yè)變化,助力開發(fā)者在現(xiàn)有平臺上完成工作負(fù)載優(yōu)化與規(guī)模化部署,同時(shí)為新一代計(jì)算演進(jìn)做好準(zhǔn)備。
本文將結(jié)合實(shí)操案例與分步演示,詳解 Arm Performix 的實(shí)際使用方法。

什么是 Arm Performix
硬件本身雖具備強(qiáng)大功能,但要將底層性能數(shù)據(jù)轉(zhuǎn)化為可執(zhí)行的優(yōu)化洞察,往往需要專業(yè)知識,并且依賴分散的工具鏈。Arm Performix 正是為解決這一痛點(diǎn)而設(shè)計(jì)。該工具現(xiàn)已正式發(fā)布,作為一套性能分析工具套件,它依托系統(tǒng)化、可復(fù)現(xiàn)、易上手的分析工作流,幫助開發(fā)者精準(zhǔn)定位性能瓶頸并驗(yàn)證優(yōu)化成效。
Arm Performix 可在程序執(zhí)行階段,直接從 Arm 架構(gòu)硬件中采集性能數(shù)據(jù),以量化指標(biāo)和可視化圖表呈現(xiàn)分析結(jié)果,并配套優(yōu)化洞察指導(dǎo)。工具可將性能開銷精準(zhǔn)歸因至具體函數(shù)、調(diào)用鏈路與執(zhí)行階段,不僅能看清耗時(shí)分布,更能幫開發(fā)者厘清工作負(fù)載運(yùn)行緩慢的根本原因。
Arm Performix 不會直接展示原始硬件計(jì)數(shù)器數(shù)據(jù),而是以分析指南 (recipe) 為核心構(gòu)建分析框架,指導(dǎo)分析路徑,幫助快速解答開發(fā)者各類常見性能問題,從現(xiàn)象觀測直達(dá)問題根因:
應(yīng)用的 CPU 耗時(shí)主要集中在哪些環(huán)節(jié)?
性能瓶頸究竟受限于算力、內(nèi)存,還是推測執(zhí)行?
SIMD、SVE、SVE2 等 Arm 架構(gòu)特性的實(shí)際使用情況?
哪些函數(shù)應(yīng)列為優(yōu)先優(yōu)化對象?
代碼版本迭代是否真正提升了運(yùn)行能效?
通過這一方式有助于開發(fā)者專注于優(yōu)化策略制定,無需耗費(fèi)精力鉆研工具本身的操作細(xì)節(jié)。
分析指南與運(yùn)行實(shí)例
Arm Performix 有兩大核心:分析指南與運(yùn)行實(shí)例 (run)。
分析指南
分析指南定義了面向特定目標(biāo)的性能數(shù)據(jù)采集、分析及可視化方法。每套分析指南會選定對應(yīng)的性能分析功能、配置數(shù)據(jù)采集,并通過火焰圖、函數(shù)列表、調(diào)用棧等視圖直觀展示分析結(jié)果。
此次發(fā)布,Arm Performix 內(nèi)置五項(xiàng)標(biāo)準(zhǔn)分析指南:
代碼熱點(diǎn):識別程序執(zhí)行耗時(shí)的分布,同時(shí)支持多輪運(yùn)行結(jié)果直接比對。
CPU 微架構(gòu):以結(jié)構(gòu)化全景視圖呈現(xiàn)各類性能瓶頸與熱點(diǎn),幫助開發(fā)者聚焦優(yōu)化收益最大的部分。
指令混合:解析代碼對各類指令及 Arm 架構(gòu)特性的實(shí)際使用情況。
內(nèi)存訪問:分析軟件與內(nèi)存系統(tǒng)的交互行為,定位內(nèi)存延遲瓶頸位置。該模板依托 Arm Statistical Profiling Extension (SPE,統(tǒng)計(jì)分析擴(kuò)展),以極低性能開銷對讀寫訪存操作進(jìn)行采樣分析。
系統(tǒng)特征(預(yù)覽版):通過運(yùn)行 Arm System Characterization Tool (ASCT,Arm 系統(tǒng)特征工具),來采集系統(tǒng)信息與微基準(zhǔn)測試數(shù)據(jù),測算內(nèi)存延遲與帶寬表現(xiàn),助力平臺初始化部署、系統(tǒng)調(diào)優(yōu)及架構(gòu)對比。
這些標(biāo)準(zhǔn)分析指南提供了從宏觀系統(tǒng)行為到精細(xì)化根因定位的完整結(jié)構(gòu)化分析路徑。Arm 還在持續(xù)開發(fā)新增分析指南,將在后續(xù)版本中不斷擴(kuò)展 Arm Performix 的分析工作流。
運(yùn)行實(shí)例
運(yùn)行實(shí)例包含執(zhí)行某一套分析指南后生成的完整分析結(jié)果。用戶可對運(yùn)行實(shí)例進(jìn)行保存、比對、導(dǎo)出和重新加載,方便對性能優(yōu)化進(jìn)行多輪迭代,同時(shí)可將 Arm Performix 集成至自動化工作流中。
為何 Arm Performix 獨(dú)具優(yōu)勢
如果你熟悉 perf 這類工具,勢必認(rèn)可硬件性能計(jì)數(shù)器的價(jià)值,同時(shí)也深知解讀原始計(jì)數(shù)數(shù)據(jù)的門檻與成本。
Arm Performix 在以下關(guān)鍵方面實(shí)現(xiàn)了差異化優(yōu)勢:
分析指導(dǎo):Performix 采用 Arm 標(biāo)準(zhǔn)化的性能分析方法論,在呈現(xiàn)分析結(jié)果的同時(shí)提供上下文解讀和下一步優(yōu)化建議。
函數(shù)級歸因:性能指標(biāo)可直接歸因到具體函數(shù)和調(diào)用路徑,使分析結(jié)果能夠立即轉(zhuǎn)化為可執(zhí)行的優(yōu)化行動。
低開銷采樣:Performix 的設(shè)計(jì)目標(biāo)是保留真實(shí)工作負(fù)載行為,保障分析樣本具備代表性。
快速上手:只需數(shù)分鐘即可完成環(huán)境部署并產(chǎn)出有效分析結(jié)論,無需手動拼接多款工具或工作流。
Arm Performix 能夠幫助你更快理解性能表現(xiàn),這一工具尤其適合于并非性能分析專家的開發(fā)者。
快速配置,指導(dǎo)上手
Arm Performix 支持快速完成配置和性能分析流程。工具安裝簡單,直觀的圖形界面會引導(dǎo)完成從連接目標(biāo)系統(tǒng)到運(yùn)行首次分析的整個(gè)過程。
安裝指南:https://learn.arm.com/install-guides/performix

用戶只需數(shù)分鐘,即可完成安裝并拿到首批有效分析結(jié)果。只需連接目標(biāo)系統(tǒng)、選定分析指南、運(yùn)行工作負(fù)載,Arm Performix 便自動完成性能數(shù)據(jù)采集與分析,以可視化圖表搭配解讀指導(dǎo)呈現(xiàn)結(jié)論。全程無需手動配置多款工具或自行拼接復(fù)雜工作流,讓開發(fā)者能夠?qū)W⒂谛阅芷款i分析與優(yōu)化,而非耗費(fèi)精力搭建性能分析環(huán)境。
將 Arm Performix
集成到開發(fā)者工作流
Arm Performix 可與現(xiàn)代開發(fā)環(huán)境集成。支持命令行啟動運(yùn)行,還可將分析結(jié)果導(dǎo)出為機(jī)器可解析格式。借助多輪運(yùn)行實(shí)例對比,開發(fā)者能夠輕松識別性能退化,持續(xù)追蹤性能變動趨勢。這使得 Performix 既適用于交互式性能剖析,也可接入 CI/CD 管線,實(shí)現(xiàn)性能問題的早期識別。
開發(fā)者可使用 Arm MCP 服務(wù)器將 Arm Performix 集成至 AI 輔助工作流。該服務(wù)器實(shí)現(xiàn)模型上下文協(xié)議 (Model Context Protocol, MCP),通過結(jié)構(gòu)化接口,對外開放系統(tǒng)能力與性能工具能力。GitHub Copilot、Codex 等 AI 助手可直接調(diào)用 Performix 分析工作流,以程序化方式查詢分析數(shù)據(jù)、獲取性能優(yōu)化洞察。開發(fā)者可以直接在編輯器中發(fā)起代碼熱點(diǎn)分析、查看自頂向下 (Topdown) 指標(biāo)、查閱指令混合分析結(jié)果。通過 MCP 協(xié)議對外開放性能數(shù)據(jù),Performix 打通了代碼開發(fā)、工具鏈與性能分析全鏈路,支撐更高頻次的迭代調(diào)優(yōu)與自動化優(yōu)化,無需人工手動操作、切換各類性能分析工具。
示例:定位簡單循環(huán)中
潛藏的性能低效問題
為演示 Arm Performix 如何挖掘?qū)嶋H場景中的性能問題,我們選用一個(gè)極簡典型工作負(fù)載 —— 向量點(diǎn)積作為示例。該基準(zhǔn)測試用于計(jì)算兩個(gè)大型浮點(diǎn)數(shù)組的點(diǎn)積運(yùn)算:
sum += a[i] * b[i];
循環(huán)每次迭代僅執(zhí)行一次乘法與一次加法運(yùn)算。該運(yùn)算邏輯簡潔、執(zhí)行規(guī)律,看似運(yùn)行效率很高。而這種計(jì)算形式廣泛存在于各類實(shí)際應(yīng)用場景中,例如機(jī)器學(xué)習(xí)推理、信號處理、線性代數(shù),以及數(shù)據(jù)分析管線。
請?jiān)谀繕?biāo)機(jī)器上編譯此工作負(fù)載,并禁用向量化,確保代碼保持純標(biāo)量實(shí)現(xiàn),不被編譯器自動向量化:
g++ -O3 -g -fno-omit-frame-pointer -fno-tree-vectorize -mcpu=native -std=c++17 dot_scalar_problem.cpp -o dot_scalar
關(guān)鍵編譯選項(xiàng):
-O3:采用真實(shí)場景級優(yōu)化級別
-g:生成調(diào)試符號,用于源代碼級性能歸因
-fno-omit-frame-pointer:保留幀指針,確保性能分析時(shí)能夠獲取完整調(diào)用棧
-fno-tree-vectorize:禁用編譯器自動向量化
-mcpu=native:針對目標(biāo) CPU 進(jìn)行優(yōu)化調(diào)優(yōu)
使用 Arm Performix 采集性能數(shù)據(jù)
借助 Arm Performix,開發(fā)者可運(yùn)行代碼熱點(diǎn)分析指南,快速定位 CPU 耗時(shí)分布,并為性能排查提供明確切入點(diǎn)。
代碼熱點(diǎn)分析指南:
https://developer.arm.com/documentation/110163/2026-1-0/About-Arm-Performix/Basic-concepts/Code-Hotspots-recipe
在指定工作負(fù)載路徑時(shí),可傳入?yún)?a href="http://m.sdkjxy.cn/v/tag/949/" target="_blank">數(shù)控制程序執(zhí)行行為。Arm 建議至少采集 20 秒性能分析數(shù)據(jù),確保采樣結(jié)果具備統(tǒng)計(jì)有效性。運(yùn)行本示例時(shí)請采用 1600 萬浮點(diǎn)數(shù)、迭代次數(shù)設(shè)為 2000 次,程序運(yùn)行時(shí)長約為 30 秒。
./dot_scalar 16777216 2000

執(zhí)行該分析指南時(shí),Arm Performix 會在目標(biāo)系統(tǒng)上啟動工作負(fù)載,并在執(zhí)行過程中按周期采集性能采樣數(shù)據(jù)。
第一條線索:發(fā)現(xiàn)核心性能熱點(diǎn)
分析運(yùn)行完成后,Arm Performix 會自動展示分析結(jié)果?;鹧鎴D可直觀標(biāo)出 CPU 耗時(shí)的主要分布位置。
火焰圖能夠呈現(xiàn)程序在性能分析期間的耗時(shí)分布。圖中每個(gè)矩形代表一個(gè)函數(shù),其寬度表示該函數(shù)在采樣中出現(xiàn)的頻率;堆疊層級則展示函數(shù)調(diào)用鏈路,便于厘清各函數(shù)的調(diào)用關(guān)系。實(shí)際調(diào)優(yōu)中,只需重點(diǎn)關(guān)注寬度最大的模塊,就能快速鎖定對整體運(yùn)行耗時(shí)影響最大的環(huán)節(jié),精準(zhǔn)挖掘優(yōu)化空間。
本示例中,計(jì)算密集型函數(shù)dot_scalar在火焰圖中占據(jù)絕對主體寬度,說明其占用了絕大部分 CPU 周期。洞察面板數(shù)據(jù)顯示,該函數(shù)的采樣占比高達(dá) 99.96%。

當(dāng)我們將鼠標(biāo)懸停在火焰圖中的該函數(shù)上時(shí),可以看到dot_scalar函數(shù)的采樣次數(shù)為 254,323 次。

使用調(diào)用棧視圖,可查看該熱點(diǎn)函數(shù)是如何被調(diào)用到的,并判斷其性能開銷是來自函數(shù)自身,還是源于其所調(diào)用的其他函數(shù)。

雙擊該熱點(diǎn)函數(shù)即可打開源代碼查看器,從而檢查與高 CPU 使用率直接相關(guān)的具體代碼行。首次打開源代碼查看器時(shí),需要指定源代碼的根目錄,這樣 Arm Performix 才能將性能分析數(shù)據(jù)正確映射到對應(yīng)文件。

由于該函數(shù)承擔(dān)了工作負(fù)載中的大部分計(jì)算邏輯,因此它成為熱點(diǎn)是符合預(yù)期的。接下來,我們將進(jìn)一步分析 CPU 是如何處理這一工作負(fù)載的。
CPU 是否高效運(yùn)行?
接下來運(yùn)行 CPU 微架構(gòu)分析指南,其采用自頂向下的分析方法,剖析 CPU 執(zhí)行能力的實(shí)際利用情況,區(qū)分有效運(yùn)算周期與因流水線停頓、執(zhí)行低效造成的損耗周期。作為一套標(biāo)準(zhǔn)化性能分析方法,它將 CPU 執(zhí)行流程逐層拆解為多級瓶頸層級,幫助系統(tǒng)化定位性能損耗的根本所在。
CPU 微架構(gòu)分析指南:
https://developer.arm.com/documentation/110163/2026-1-0/About-Arm-Performix/Basic-concepts/CPU-Microarchitecture-recipe

Arm Performix 顯示,該工作負(fù)載有超過 60% 的時(shí)間處于前端受限 (frontend bound) 狀態(tài)。盡管執(zhí)行單元已經(jīng)就緒,CPU 仍然頻繁在取指或指令解碼階段發(fā)生停頓。在自頂向下分析框架下,這意味著后端資源本空閑可用,但執(zhí)行槽位卻因前端瓶頸被白白浪費(fèi)。
簡言之,CPU 并不是受限于計(jì)算能力,而是在等待指令。
前端瓶頸成因分析
既然已經(jīng)明確瓶頸所在,下一步就需要弄清楚原因。Arm Performix 會立即給出分析指引,包括:
指令緩存效率低下
與分支相關(guān)的影響
指令布局不合理
控制流過于復(fù)雜
但還需要結(jié)合上下文來判斷。本例是一段極簡且緊湊的循環(huán)代碼,問題根源究竟在哪?為此,我們進(jìn)一步使用指令混合分析指南深入分析。

指令混合顯示,該工作負(fù)載幾乎完全由標(biāo)量操作構(gòu)成,完全沒有用到 SIMD。前端之所以承壓成為瓶頸,核心原因是:完成少量計(jì)算任務(wù),卻耗用了過多指令。
即便計(jì)算工作量很小,每輪迭代仍會持續(xù)占用指令帶寬。這會給前端帶來持續(xù)性壓力,并非取指本身速度不足,而是指令數(shù)量冗余過多造成的。
洞察面板會列出各類潛在誘因,并精準(zhǔn)指出問題根源:當(dāng)前代碼未啟用 SIMD 指令,錯(cuò)失了向量化優(yōu)化的機(jī)會。向量化通過一條指令同時(shí)執(zhí)行多次運(yùn)算,可以顯著減少每個(gè)數(shù)據(jù)元素所需的指令數(shù)量,從而直接緩解前端壓力。
洞察賦能性能優(yōu)化
接下來,我們將標(biāo)量循環(huán)替換為 Neon 實(shí)現(xiàn)。
每條指令可處理 4 個(gè)元素
融合乘加 (fused multiply-add) 提升了計(jì)算效率
SIMD 管線得到充分利用
需要特別指出的是:
內(nèi)存訪問模式保持不變
分支結(jié)構(gòu)保持不變
工作集大小保持不變
唯一的變化在于:通過 Advanced SIMD 引入了數(shù)據(jù)級并行性,使得每條指令能夠同時(shí)處理多個(gè)數(shù)據(jù)元素。
當(dāng)我們使用優(yōu)化后的版本再次運(yùn)行相同的分析指南時(shí),最直觀的改進(jìn)體現(xiàn)在實(shí)際運(yùn)行時(shí)間 (wall-clock time) 和總周期數(shù)上。這是因?yàn)?SIMD 使每次循環(huán)迭代能夠處理四個(gè)元素?;鹧鎴D中仍然顯示同一個(gè)主導(dǎo)函數(shù),但其采樣次數(shù)已顯著下降,從 254,323 次降至 69,387 次。

重新運(yùn)行指令混合分析指南后,可以觀察到以下變化:
Advanced SIMD 指令的占比顯著提升
標(biāo)量浮點(diǎn)運(yùn)算所占比例明顯降低
同等計(jì)算工作量下,循環(huán)控制指令數(shù)量明顯減少
通過選擇之前的指令混合運(yùn)行結(jié)果,即可將新的指令混合數(shù)據(jù)與標(biāo)量版本進(jìn)行對比。

可將多輪運(yùn)行實(shí)例疊加視圖,直觀對比優(yōu)化前后的指令使用情況。優(yōu)化后程序已大量使用 SIMD 指令,標(biāo)量運(yùn)算占比同步下降,表明每條指令完成的實(shí)際工作量顯著提升。標(biāo)量版本以整數(shù)運(yùn)算、浮點(diǎn)運(yùn)算和內(nèi)存加載操作為主;而 Neon 優(yōu)化版本通過 Advanced SIMD 引入向量化。循環(huán)的向量化大幅降低了處理單個(gè)數(shù)據(jù)元素所需的指令總數(shù),從根本上緩解了前端的性能瓶頸壓力。

優(yōu)化成效:消除前端性能瓶頸
重新運(yùn)行CPU 微架構(gòu)分析指南可以看到,經(jīng)過向量化優(yōu)化后,前端停頓占比大幅下降,性能瓶頸轉(zhuǎn)為后端因素主導(dǎo)。優(yōu)化效果十分顯著:
前端瓶頸占比從約 60% 降至 11%
后端瓶頸占比升至約 63%

本次優(yōu)化不僅提升了運(yùn)行性能,還實(shí)現(xiàn)了瓶頸遷移。指令供給不再成為性能制約因素,CPU 執(zhí)行效率顯著提升,性能需求隨之轉(zhuǎn)移至執(zhí)行單元與內(nèi)存。
這對實(shí)際工作負(fù)載極具參考價(jià)值:當(dāng)原有瓶頸被消除后,下一項(xiàng)瓶頸就會顯現(xiàn)并可被量化測量。Arm Performix 支持迭代式性能排查調(diào)優(yōu):形成采集分析、代碼優(yōu)化、效果驗(yàn)證的完整閉環(huán),全程引導(dǎo)開發(fā)者從瓶頸定位逐步深入,直至找到根本原因。
要點(diǎn)總結(jié)
該示例展示了性能優(yōu)化中的一個(gè)常見規(guī)律:對流水線某一環(huán)節(jié)的優(yōu)化提升,往往會給其他環(huán)節(jié)增加壓力。
Arm Performix 讓性能調(diào)優(yōu)全過程變得體系化。只需一套工作流,即可完成耗時(shí)點(diǎn)位定位、根因研判以及優(yōu)化效果驗(yàn)證。
隨著工作負(fù)載不斷演進(jìn),性能分析正變得愈發(fā)重要。如今的云和 AI 系統(tǒng),已不再是單一應(yīng)用,而是由相互協(xié)作的服務(wù)、框架以及日益自主的智能體共同構(gòu)成。在這樣的環(huán)境中,衡量并最大化整個(gè)系統(tǒng)層面的有效工作至關(guān)重要。
因此,性能工具需要回答的不僅是“CPU 周期花在了哪里”,更關(guān)鍵的是“系統(tǒng)完成有效工作的效率有多高”。
Arm Performix 正是順應(yīng)這一變化而設(shè)計(jì),通過將硬件遙測數(shù)據(jù)與結(jié)構(gòu)化的分析、對比工作流相結(jié)合,幫助開發(fā)者識別性能低效之處,并在基于 Arm 架構(gòu)的平臺上高效擴(kuò)展工作負(fù)載。
隨著計(jì)算平臺向 Arm AGI CPU 等方向演進(jìn),這些原則將變得更加關(guān)鍵。在這類平臺上,能效優(yōu)化必須覆蓋整個(gè)系統(tǒng),并同時(shí)面向大量并發(fā)運(yùn)行的智能體進(jìn)行整體效率提升。
即刻使用
Arm Performix 可免費(fèi)使用,適用于所有基于 Arm 架構(gòu)的平臺。完成安裝后,你只需連接目標(biāo)系統(tǒng)、選擇一個(gè)分析指南,便可在幾分鐘內(nèi)開始采集性能數(shù)據(jù)。
立即使用 Arm Performix 探索你自己的工作負(fù)載,看看在不增加資源的情況下,系統(tǒng)還能如何釋放更多性能潛力!
-
ARM
+關(guān)注
關(guān)注
135文章
9608瀏覽量
394139 -
服務(wù)器
+關(guān)注
關(guān)注
14文章
10426瀏覽量
91835 -
工作負(fù)載
+關(guān)注
關(guān)注
0文章
17瀏覽量
2131
原文標(biāo)題:Arm Performix 使用詳解!面向 Arm 架構(gòu)服務(wù)器的實(shí)用性能分析工具
文章出處:【微信號:Arm社區(qū),微信公眾號:Arm社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Labview 下建立dll及其使用方法詳解
智能語音套件VBS7100 試用體驗(yàn)+使用方法
放大電路的實(shí)際使用
assessPort工具的使用方法
Arm高性能計(jì)算工具試用分析
fdisk使用方法詳解
常用手機(jī)焊接工具使用方法
示波器的使用方法(三):示波器的使用方法詳解
Arm 推出Performix:開創(chuàng)AI智能體性能優(yōu)化新紀(jì)元
Arm宣布推出Performix性能分析工具套件
詳解Arm Performix性能分析工具套件的實(shí)際使用方法
評論