Arm Mobile Studio(https://developer.arm.com/Tools%20and%20Software/Arm%20Mobile%20Studio)在過(guò)去幾個(gè)版本中進(jìn)行了多項(xiàng)增強(qiáng),以支持游戲開(kāi)發(fā)人員更輕松的進(jìn)行性能分析。隨著我們的最新版本2022.4現(xiàn)在可以下載,我們采取了一些大膽的舉措-我們的所有專業(yè)功能現(xiàn)在都是免費(fèi)的,所有人都可以使用。我們還考慮到新用戶的體驗(yàn),改進(jìn)了工具的性能,并添加了分析光追內(nèi)容的新功能,您可以開(kāi)始測(cè)試下一代設(shè)備的性能。
以下是最新版本的一些亮點(diǎn),以及今年早些時(shí)候發(fā)布的一些您可能錯(cuò)過(guò)的亮點(diǎn)。
現(xiàn)在所有人都可以使用專業(yè)CI功能
不再需要購(gòu)買Arm Mobile Studio專業(yè)許可證才能在持續(xù)集成(CI)工作流中使用這些工具。因?yàn)槲覀兿嘈潘杏螒蚬ぷ魇叶伎梢允褂每蓴U(kuò)展的性能分析,所以我們?cè)诿赓M(fèi)版本中提供了所有的專業(yè)功能。
為了確保您的移動(dòng)游戲擁有廣泛的受眾,您需要對(duì)盡可能多的設(shè)備進(jìn)行性能測(cè)試。為設(shè)備群中的每個(gè)設(shè)備手動(dòng)執(zhí)行此操作非常耗時(shí)和昂貴。此外,您應(yīng)該在整個(gè)開(kāi)發(fā)過(guò)程中定期測(cè)試內(nèi)容。與在發(fā)布周期結(jié)束時(shí)再修補(bǔ)問(wèn)題相比,在出現(xiàn)問(wèn)題時(shí)就修復(fù)問(wèn)題要容易得多。
在headless模式下運(yùn)行Arm Mobile Studio工具,作為連續(xù)集成系統(tǒng)的一部分,可以跨多個(gè)設(shè)備進(jìn)行自動(dòng)性能測(cè)試。每天晚上都要運(yùn)行這個(gè)程序,并獲得每日性能反饋,并可以跟蹤性能隨時(shí)間的變化。您可以將報(bào)告數(shù)據(jù)導(dǎo)出為CSV和JSON格式的可讀文件,以便在自定義數(shù)據(jù)分析中使用。使用它可以使用任何兼容的數(shù)據(jù)庫(kù)和可視化工具(如ELK堆棧)構(gòu)建性能儀表板。
你可以閱讀我們的教程(https://developer.arm.com/documentation/102543/latest/Overview)以幫助您進(jìn)行設(shè)置。
Android版本變體支持
現(xiàn)在,您可以在運(yùn)行“eng”或“userdebug”操作系統(tǒng)版本的Android設(shè)備上評(píng)測(cè)不可調(diào)試的應(yīng)用程序版本。有關(guān)這些構(gòu)建變體的詳細(xì)信息,請(qǐng)參閱Android文檔(https://source.android.com/docs/setup/create/new-device#build-variants)。
Arm Mobile Studio工具支持最新的Arm CPU和GPU:
-
Cortex-X3
(https://www.arm.com/products/cortex-x)
-
Cortex-A715
(https://developer.arm.com/Processors/Cortex-A715)
-
Immortalis-G715
(https://developer.arm.com/Processors/Immortalis-G715)
-
Mali-G715
(https://developer.arm.com/Processors/Mali-G715)
-
Mali-G615
(https://developer.arm.com/Processors/Mali-G615)
DWARF5調(diào)試支持
Streamline中的軟件評(píng)測(cè)現(xiàn)在支持使用DWARF5調(diào)試格式的應(yīng)用程序二進(jìn)制文件。
Streamline中的Mali時(shí)間線事件
您現(xiàn)在可以在Streamline中監(jiān)視Mali時(shí)間線事件。這有助于您確定GPU調(diào)度問(wèn)題,其中non-fragment和fragment隊(duì)列在整個(gè)或部分幀中串行運(yùn)行。理想情況下,這兩個(gè)工作負(fù)載應(yīng)該重疊。如果您看到一個(gè)隊(duì)列空閑而另一個(gè)處于活動(dòng)狀態(tài)的區(qū)域,則可能存在序列化問(wèn)題。為了識(shí)別可能導(dǎo)致管道等待的問(wèn)題,可以將計(jì)數(shù)器樣本與渲染過(guò)程和計(jì)算分派相關(guān)聯(lián)。有關(guān)更多信息,請(qǐng)參閱我們推薦的工作負(fù)載流水線(https://developer.arm.com/documentation/102521/0100)和流水線瓶頸(https://developer.arm.com/documentation/102521/0100/Pipeline-Bottlenecks)的最佳實(shí)踐。
Mali時(shí)間線事件顯示為時(shí)間線視圖底部的自定義活動(dòng)圖。
有關(guān)如何捕獲Mali時(shí)間線事件的說(shuō)明,請(qǐng)參閱Streamline用戶指南(https://developer.arm.com/documentation/101816/latest/Capture-a-Streamline-profile/Counter-Configuration/Enable-Mali-Timeline-Events)。
注意:此功能需要具有Android Perfetto服務(wù)(https://perfetto.dev/)和兼容的Mali設(shè)備驅(qū)動(dòng)程序版本r40p0或更高版本的Android 10設(shè)備。
性能增強(qiáng)
在Arm,我們明白工具的可用性至關(guān)重要。這就是為什么在每個(gè)版本中,我們都會(huì)分配一些工程時(shí)間,以使我們的工具運(yùn)行得更快。這一次,對(duì)于Streamline,對(duì)于包含大量應(yīng)用程序調(diào)試信息的軟件配置文件,我們顯著改進(jìn)了分析時(shí)間和內(nèi)存占用。
分析一個(gè)具有大約3GB調(diào)試信息的示例Unreal Engine項(xiàng)目所需的時(shí)間已從25分鐘降至2.5分鐘。
對(duì)于OpenGL ES和Vulkan,Performance Advisor從移動(dòng)設(shè)備上運(yùn)行的應(yīng)用程序收集幀邊界和屏幕截圖數(shù)據(jù)的機(jī)制得到了顯著增強(qiáng)。這種新的實(shí)現(xiàn)提高了可靠性并減少了對(duì)目標(biāo)應(yīng)用程序的性能影響。
注意:對(duì)于OpenGL ES應(yīng)用程序,我們現(xiàn)在只能使用層(layer)驅(qū)動(dòng)程序收集數(shù)據(jù),這需要Android 10或更高版本。要在早期版本的Android設(shè)備上使用Performance Advisor,您需要從應(yīng)用程序手動(dòng)發(fā)出所需的幀邊界注釋。有關(guān)如何執(zhí)行此操作的說(shuō)明,請(qǐng)參閱Performance Advisor用戶指南(https://developer.arm.com/documentation/102009/latest/Adding-semantic-input-to-the-reports/Send-and-include-annotations-from-application-code/Send-annotations-from-your-application-code)。
保存屏幕截圖
捕獲慢幀屏幕截圖(目前僅限OpenGL ES)時(shí),如果上一個(gè)屏幕截圖仍在保存,Performance Advisor將跳過(guò)屏幕截圖。這消除了應(yīng)用程序中積壓的屏幕截圖導(dǎo)致的性能問(wèn)題。此外,當(dāng)在未壓縮模式下運(yùn)行時(shí),屏幕截圖現(xiàn)在保存為.bmp圖像,而不是未壓縮的.png圖像。這將捕獲和寫入屏幕截圖所需的時(shí)間從250毫秒減少到80毫秒以下,從而減少了對(duì)應(yīng)用程序的性能影響。
Performance Advisor區(qū)域分析
如果應(yīng)用程序使用區(qū)域標(biāo)記(https://developer.arm.com/documentation/102009/latest/Adding-semantic-input-to-the-reports/Send-annotations-from-your-application-code)來(lái)指定感興趣的時(shí)間區(qū)域,則這些區(qū)域在Performance Advisor的幀速率分析圖表上可見(jiàn)。此外,每個(gè)區(qū)域的數(shù)據(jù)將單獨(dú)報(bào)告。這有助于為報(bào)告提供上下文。但是,如果應(yīng)用程序具有多個(gè)區(qū)域,則報(bào)告的數(shù)據(jù)可能會(huì)變得過(guò)于精細(xì),從而使報(bào)告難以閱讀。
在此版本中,如果某些區(qū)域較短或嵌套在其他區(qū)域之下,您現(xiàn)在可以選擇從Performance Advisor報(bào)告中省略這些區(qū)域。這為您提供了對(duì)區(qū)域分析方式的更多控制。
生成報(bào)告時(shí),使用以下新的pa命令選項(xiàng)(https://developer.arm.com/documentation/102009/latest/Command-line-options/The-pa-command)忽略區(qū)域:----region-report-min-length=length
報(bào)告中省略給定最小長(zhǎng)度以下的區(qū)域。
----region-report-max-depth=level
報(bào)告中省略區(qū)域?qū)哟谓Y(jié)構(gòu)中比給定級(jí)別更深的區(qū)域。
Mali脫機(jī)編譯器增強(qiáng)功能
我們對(duì)用于著色器分析的性能報(bào)告工具M(jìn)ali Offline Compiler進(jìn)行了多項(xiàng)增強(qiáng)。
光線(Ray)查詢性能反饋
新的Immortalis-G715在移動(dòng)設(shè)備中引入了硬件加速光線跟蹤(https://community.arm.com/arm-community-blogs/b/graphics-gaming-and-vr-blog/posts/developing-ray-tracing-content-for-mobile-games),同時(shí)支持Vulkan光線查詢和完整光線跟蹤管道。在此版本中,Mali Offline Compiler使用光線查詢和所有光線跟蹤管道階段為內(nèi)容提供反饋。
以下示例報(bào)告已識(shí)別出碎片著色器中的慢速光線跟蹤:
Mali Offline Compiler v7.8.0 (Build aeadf0)
Copyright (c) 2007-2022 Arm Limited. All rights reserved.
Configuration
=============
Hardware: Immortalis-G715 r0p0
Architecture: Valhall
Driver: r41p0-00rel0
Shader type: Vulkan Fragment
Main shader
===========
Work registers: 64 (100% used at 50% occupancy)
Uniform registers: 10 (15% used)
Ray traversal contexts: 16 objects
Stack spilling: 32 bytes
16-bit arithmetic: 0%
A LS V T Bound
Total instruction cycles: 4.70 64.60 0.03 0.00 LS
Shortest path cycles: 0.47 19.00 0.03 0.00 LS
Longest path cycles: N/A N/A N/A N/A N/A
A = Arithmetic, LS = Load/Store, V = Varying, T = Texture
Shader properties
=================
Has uniform computation: true
Has side-effects: false
Modifies coverage: false
Uses late ZS test: false
Uses late ZS update: false
Reads color buffer: false
Has slow ray traversal: true
Note: This tool shows only the shader-visible property state.
API configuration may also impact the value of some properties.
在主著色器部分,報(bào)告顯示編譯器分配的光線遍歷上下文的數(shù)量。每個(gè)光線查詢或光線跟蹤管道遍歷至少需要一個(gè)遍歷上下文。然而,上下文可能由具有非重疊生存期的多個(gè)遍歷共享。有時(shí),單個(gè)源查詢或遍歷可能需要多個(gè)上下文。多上下文遍歷比單個(gè)上下文遍歷慢。
著色器(shader properties)部分報(bào)告,如果著色器正在使用至少一個(gè)光線遍歷,則著色器具有緩慢的光線遍歷。這迫使編譯器回退到較慢的多上下文遍歷行為。
《Mali Offline Compiler用戶指南》中添加了必須遵循的Vulkan ray查詢最佳實(shí)踐指南,以避免緩慢的遍歷路徑(https://developer.arm.com/documentation/101863/0708/Using-Mali-Offline-Compiler/Performance-analysis/Shader-properties)。
頂點(diǎn)著色器(Vertex Shaders)的內(nèi)存分區(qū)建議
從Bifrost架構(gòu)開(kāi)始的Mali GPU將用戶著色器分為兩部分,一部分計(jì)算位置,另一部分計(jì)算所有非位置屬性。在幾何體剔除之前只需要位置,因此非位置屬性著色器僅對(duì)可見(jiàn)頂點(diǎn)運(yùn)行。為了最小化冗余內(nèi)存訪問(wèn),Mali 最佳實(shí)踐(https://developer.arm.com/documentation/101897/latest/Vertex-shading/Attribute-layout)建議您將兩個(gè)著色器所需的輸入屬性拆分為兩個(gè)壓縮流。Mali 離線編譯器頂點(diǎn)著色器性能報(bào)告用于實(shí)現(xiàn)Bifrost架構(gòu)或更新版本的Arm GPU,現(xiàn)在報(bào)告屬性流的建議內(nèi)存分區(qū)。
Recommended attribute streams
=============================
Position attributes
- position (location=dynamic)
Non-position attributes
- None
預(yù)期著色器核心線程占用率
Mali Offline Compiler現(xiàn)在報(bào)告了預(yù)期的著色器核心線程占用率以及寄存器計(jì)數(shù)。這減少了對(duì)線程占用信息參考外部數(shù)據(jù)表的需要。
Main shader
===========
Work registers: 64 (100% used at 50% occupancy)
Uniform registers: 10 (15% used)
Ray traversal contexts: 16 objects
Stack spilling: 32 bytes
16-bit arithmetic: 0%
更多Mali脫機(jī)編譯器功能
以下是我們對(duì)Mali Offline Compiler的一些更新:
-
所有實(shí)現(xiàn)Valhall體系結(jié)構(gòu)的Arm GPU的性能報(bào)告現(xiàn)在都報(bào)告了基于微體系結(jié)構(gòu)感知成本模型的單一運(yùn)算成本。使用--detailed命令行選項(xiàng),每個(gè)算術(shù)指令類型的組件成本仍然可用。
-
Bifrost和Valhall架構(gòu)GPU的加載/存儲(chǔ)單位成本模型已得到改進(jìn),現(xiàn)在正確地反映了統(tǒng)一加載和堆棧訪問(wèn)的較低訪問(wèn)成本。
-
將Bifrost和Valhall架構(gòu)GPU的編譯器后端更新為r41p0
-
更新了Khronos glslangValidator前端,用于將GLSL源代碼編譯為SPIR-V IR,以支持SPIR-V 1.6功能。
-
通過(guò)指定--name命令行選項(xiàng),直接從GLSL源代碼編譯的Vulkan著色器現(xiàn)在可以使用“main()”以外的入口點(diǎn)。
-
增加了對(duì)SPIR-V計(jì)算內(nèi)核的OpenCL 3.0支持。
-
添加了過(guò)濾功能以刪除性能報(bào)告中的重復(fù)編譯器警告。
總結(jié)
我們希望您在這個(gè)版本中找到一些增強(qiáng)性能分析工作流的東西。無(wú)論您是小型獨(dú)立開(kāi)發(fā)人員,還是大型游戲工作室,Arm Mobile studio都具有幫助您的游戲在各種設(shè)備上表現(xiàn)出色的功能。通過(guò)我們的免費(fèi)版,將性能分析按比例構(gòu)建到您的開(kāi)發(fā)工作流中現(xiàn)在更容易訪問(wèn)。性能分析現(xiàn)在更快了,您可以更好地控制收集的數(shù)據(jù)。
我們預(yù)計(jì)搭載最新Immortalis-G715 GPU的移動(dòng)設(shè)備將于2023年上市。Mali離線編譯器硬件加速光線跟蹤的新功能有助于深入了解未來(lái)移動(dòng)硬件如何處理光線跟蹤內(nèi)容。
審核編輯 :李倩
-
ARM
+關(guān)注
關(guān)注
134文章
9137瀏覽量
368263 -
監(jiān)控
+關(guān)注
關(guān)注
6文章
2223瀏覽量
55289 -
應(yīng)用程序
+關(guān)注
關(guān)注
37文章
3285瀏覽量
57785
原文標(biāo)題:Arm Mobile Studio 2022.4實(shí)現(xiàn)自動(dòng)性能監(jiān)控等功能 - 極術(shù)社區(qū)
文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論