作者:huangran,圖形圖像技術(shù)專家
應(yīng)用開發(fā)以后無法知道性能瓶頸的根因是什么?滑動(dòng)卡頓、白塊產(chǎn)生的原因是什么?代碼寫完之后,不知道如何優(yōu)化讓它表現(xiàn)地更好……
我們發(fā)現(xiàn),如今測試人員的需求已經(jīng)不只是停留在應(yīng)用層面的測試數(shù)據(jù)了,而是需要數(shù)據(jù)背后的根因。但業(yè)界的圖形棧測試,絕大部分都只提供應(yīng)用層面的數(shù)據(jù),有一部分可以深入系統(tǒng)層分析,但仍無法觸及硬件這一層的測試分析。
HarmonyOS圖形棧測試技術(shù),不僅可以深入系統(tǒng)層分析,幫助開發(fā)測試者得到數(shù)據(jù)背后的根因,還能觸達(dá)硬件層的測試分析。那它是如何做到的呢?讓我們一起揭秘HarmonyOS圖形棧測試技術(shù)。
一、HarmonyOS 圖形棧全貌
眾所周知,圖形是操作系統(tǒng)里面非常核心的模塊,和內(nèi)核、編譯器等模塊一起作為操作系統(tǒng)的底層基座,不僅如此,它還是體現(xiàn)競爭力的關(guān)鍵模塊。但因?yàn)閳D形棧非常復(fù)雜,所以需要構(gòu)筑一套完整的測試技術(shù)才可以保證其質(zhì)量和競爭力。
![](https://file.elecfans.com/web2/M00/2C/CB/pYYBAGHejB2AcJt_AADZDmN8k5I817.png)
圖1 圖形棧整體架構(gòu)
如圖1所示,左邊部分是HarmonyOS圖形棧的全貌,其中最上面一層是渲染前端,包括2D類應(yīng)用、3D類應(yīng)用和重負(fù)載的游戲視頻類應(yīng)用,這一層與右邊測試部分的應(yīng)用層對(duì)應(yīng),包括體驗(yàn)KPI和負(fù)載模型能力。
中間一層則是我們圖形棧操作系統(tǒng)的核心能力,如組件、JS 引擎、ArkUI的三棵樹(Component樹,Element樹和Render樹)、自研2D引擎、自研3D引擎、動(dòng)效、手勢、布局等。這一層與右邊測試部分的系統(tǒng)層對(duì)應(yīng),包括圖形棧關(guān)鍵耗時(shí)函數(shù)解析和圖形棧優(yōu)化方案可見的能力。
最下面一層則是HarmonyOS 1+8+N設(shè)備需要橫跨的兩個(gè)部分:操作系統(tǒng)和硬件設(shè)備,需要對(duì)其進(jìn)行兼容支持,這一層與右邊測試部分的硬件層對(duì)應(yīng),包括跨系統(tǒng)對(duì)比測試能力、跨設(shè)備測試能力和硬件SOC分析能力。
我們圖形棧的測試能力不只是停留在應(yīng)用層的體驗(yàn)KPI,它可以將體驗(yàn)KPI指標(biāo)進(jìn)一步分解成系統(tǒng)級(jí)別的耗時(shí)函數(shù)、以及硬件級(jí)別的SOC分析能力,并最終提供優(yōu)化方案(后文將舉例說明)。
了解完整體架構(gòu)后,我們?cè)龠M(jìn)一從2D圖形棧應(yīng)用和3D圖形棧應(yīng)用兩個(gè)角度去了解圖形棧測試技術(shù):
二、2D圖形棧應(yīng)用
圖2 是HarmonyOS ArkUI開發(fā)框架,對(duì)應(yīng)右邊的三層結(jié)構(gòu),最底層是接口層測試,中間層是組件層測試,最上層是應(yīng)用層測試。接下來我們會(huì)給大家重點(diǎn)介紹負(fù)載模型、系統(tǒng)分析案例和應(yīng)用分析案例。
![](https://file.elecfans.com/web2/M00/2C/CB/pYYBAGHejB2AU_DyAACbBtGDUhc376.png)
圖2 ArkUI開發(fā)框架
對(duì)于一個(gè)新的開發(fā)框架,在沒有海量生態(tài)的應(yīng)用進(jìn)來之前我們是如何驗(yàn)證這個(gè)平臺(tái)的測試能力的?
我們最初設(shè)想的是構(gòu)建足夠多的場景來覆蓋和驗(yàn)證整個(gè)ArkUI框架,比如三棵樹(Element樹、Component樹和Render樹)、布局/動(dòng)效、手勢、2D渲染引擎。但因?yàn)椴淮嬖诟F舉的方式去覆蓋所有業(yè)務(wù),所以我們提出了負(fù)載模型的概念。
2D負(fù)載模型到底是什么?
我們選取了Top200的應(yīng)用,對(duì)應(yīng)用進(jìn)行基于場景的分類,并提取特征, 然后形成了8大類常見用戶場景(圖3),如購物類、圖庫類、視頻類等,同時(shí)也抽象出6大類負(fù)載,比如資源加載、圖層疊加、負(fù)載布局 。
![](https://file.elecfans.com/web2/M00/2C/CB/pYYBAGHejB6AU5FOAABOjI3vivw034.png)
圖3 負(fù)載場景及類型
同時(shí)我們還結(jié)合了Beta與商用的性能問題單和用戶體驗(yàn)反饋,來逆向幫助我們補(bǔ)充可能遺漏的負(fù)載,比如系統(tǒng)I/O負(fù)載壓力。這樣構(gòu)建的負(fù)載模型有兩個(gè)作用,不僅可以測試HarmonyOS圖形棧架構(gòu),還可以為作為HarmonyOS應(yīng)用樣例,供開發(fā)者參考。
由于設(shè)備硬件能力的差異性,負(fù)載模型實(shí)際上是參數(shù)可調(diào)節(jié)的。比如對(duì)于IP Camera這類沒有GPU的設(shè)備,我們無法給它加很強(qiáng)的負(fù)載,它的分辨率較小、物理尺寸也較小,如果用手機(jī)的分辨率給它渲染這是沒有意義的。所以我們將負(fù)載模型構(gòu)建成一個(gè)參數(shù)可調(diào)模型,這樣它就會(huì)基于測試者的硬件設(shè)備來選擇不同的資源做測試,非常靈活便捷。
如前文所說,我們的圖形棧測試能力不只是停留在應(yīng)用層,而是要進(jìn)入到系統(tǒng)層和硬件層。接下來舉兩個(gè)例子讓大家了解一下我們?cè)谙到y(tǒng)和硬件層面上如何做分析。
案例一:系統(tǒng)分析案例
我們先舉一個(gè)跟硬件相關(guān)的例子,比如“多個(gè)應(yīng)用連續(xù)頁面切換”的場景,這時(shí)候可能產(chǎn)生多應(yīng)用切換的時(shí)延、丟幀等問題。
如圖4所示,假如我們定義丟幀率的KPI為0.5%,但是經(jīng)過測試達(dá)到了3%,丟幀指標(biāo)超標(biāo),那么我們將進(jìn)一步對(duì)硬件的CPU占用率和I/O壓力進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。拿到統(tǒng)計(jì)數(shù)據(jù)之后,平臺(tái)還會(huì)告訴你具體是哪一個(gè)進(jìn)程產(chǎn)生了CPU和I/O的壓力,并給出優(yōu)化建議。
![](https://file.elecfans.com/web2/M00/2C/CB/pYYBAGHejB-ACX4LAAEMjjKq1DI233.png)
圖4 系統(tǒng)分析和優(yōu)化建議
案例二:應(yīng)用分析案例
接下來我們舉個(gè)應(yīng)用內(nèi)的性能分析案例,比如圖庫應(yīng)用的圖片刪除場景,也可能產(chǎn)生丟幀和時(shí)延問題。
如圖5所示,假設(shè)我們定義時(shí)延指標(biāo)為100ms,經(jīng)過測試發(fā)現(xiàn)時(shí)延達(dá)到1048ms,時(shí)延超標(biāo),然后我們將ArkUI圖形棧函數(shù)展開,得到耗時(shí)占比,發(fā)現(xiàn)在系統(tǒng)層面上FlushBuild()和FlushLayout()耗時(shí)較長,然后平臺(tái)會(huì)基于這些數(shù)據(jù)進(jìn)行分析,找到可能原因,并給出優(yōu)化建議,以幫助開發(fā)者明確下一步優(yōu)化方向和動(dòng)作。
![](https://file.elecfans.com/web2/M00/2C/CB/pYYBAGHejCCANtPeAAE75BEYWcU672.png)
圖5 應(yīng)用分析和優(yōu)化建議
三、3D圖形棧應(yīng)用
圖6是3D圖形棧的整體架構(gòu),它包括了兩部分,一部分是右側(cè)的自研3D引擎,大家可以基于3D自研引擎進(jìn)行3D應(yīng)用的開發(fā),比如3D動(dòng)效、ar應(yīng)用、3D壁紙等。
圖6左邊的部分是SDK,我們提供了一系列API,主要是針對(duì)大型的3D游戲,因?yàn)榇笮偷?D游戲?qū)τ谙到y(tǒng)和SOC的壓力較大,這些API可以幫助大型游戲更好地使用系統(tǒng)和硬件,比如GTX、System Cache、畫質(zhì)增強(qiáng)等SDK接口。
接下來我們會(huì)為大家重點(diǎn)介紹3D應(yīng)用分析基礎(chǔ)、特性拆分和分析方法和3D壁紙調(diào)優(yōu)案例。
![](https://file.elecfans.com//web2/M00/2C/CA/pYYBAGHein6AX6OIAAIwH_x6Qzw472.png)
圖6 “3D圖形?!?/p>
1. 3D應(yīng)用分析基礎(chǔ)
3D應(yīng)用對(duì)于性能功耗的壓力會(huì)更大,所以更需要底層SOC以及系統(tǒng)的分析能力。其實(shí)無論是3D自研引擎,還是SDK,都可以通過將負(fù)載進(jìn)行特性拆分,然后進(jìn)行細(xì)粒度分析。
如圖7所示,場景A關(guān)鍵幀就是由渲染特性HDR、Bloom等粒子特效組成,再加上CPU負(fù)載就形成一個(gè)關(guān)鍵幀,這些關(guān)鍵幀連續(xù)起來就是3D場景。通過這些特性進(jìn)一步調(diào)用到硬件邏輯的相關(guān)特性,比如ALU、Texture壓力,最終通過DDK調(diào)用到硬件層執(zhí)行。
![](https://file.elecfans.com/web2/M00/2C/CB/pYYBAGHejCGAWn0hAACW7GwqOjU878.png)
圖7 “3D應(yīng)用分析基礎(chǔ)”
有了以上分析基礎(chǔ)后,我們?cè)賮砜匆幌绿匦圆鸱趾头治龇椒ā?/p>
2. 特性拆分和分析方法
如圖8所示,這幀渲染畫面是由Particle、Shadow map、Point light、Bloom等特效組成,如果GPU的負(fù)載較重,性能出現(xiàn)瓶頸,如何找到問題的根因呢?我們把這一幀的GLES的指令截取到,并將每一個(gè)單特性進(jìn)行分拆,然后看每一個(gè)單特性(如Particle)對(duì)硬件造成的壓力。特性拆完后再結(jié)合GPU counters來幫助我們定位根因。
![](https://file.elecfans.com/web2/M00/2C/CB/pYYBAGHejCGAVqy8AACmlpZCOr0099.png)
圖8 特性拆分
如何使用GPU counters來定位問題呢?如圖9所示,場景C提示fragment cycles比較重,所以要求開發(fā)者減少像素渲染。而對(duì)于場景A,不僅Fragment cycles很重,而memory R/W以及Vertex cycles都比較重,那么就要針對(duì)這幾個(gè)瓶頸進(jìn)行優(yōu)化。
![](https://file.elecfans.com//web2/M00/2C/C4/poYBAGHeioGAAqLzAABLxraYXas582.png)
圖9 GPU Counters
3D壁紙調(diào)優(yōu)案例
我們舉一個(gè)3D壁紙調(diào)優(yōu)的案例給大家展示如何找到性能瓶頸。
![](https://file.elecfans.com/web2/M00/2C/CB/pYYBAGHejCKAGL0IAACWToX7qf0964.png)
圖10 “3D壁紙調(diào)優(yōu)”
如圖10所示,用Blender制作3D壁紙模型,再用我們的自研引擎增加渲染效果,最終形成一個(gè)有光照、反射的畫面。
我們將3D壁紙畫面進(jìn)行特性剝離,再看特性剝離后每一個(gè)單特性對(duì)硬件造成的壓力,數(shù)據(jù)如表1所示。發(fā)現(xiàn)表面細(xì)分(頂點(diǎn)50W)+點(diǎn)光(1術(shù))+反射面的歸一化電流達(dá)到了1921.33,性能出現(xiàn)較大惡化,如果使用一般的測試工具,就只能到這一步了。
![](https://file.elecfans.com/web2/M00/2C/CB/pYYBAGHejCKABZE_AACSEIL9owo383.png)
但我們的工具可以幫助大家進(jìn)一步分析。我們結(jié)合表2的Counters來幫助大家定位問題。
![](https://file.elecfans.com/web2/M00/2C/CB/pYYBAGHejCOAdGB-AABvYpngIwQ410.png)
在表2的第一、二組數(shù)據(jù)可以看到,將反射面減少,會(huì)發(fā)現(xiàn)“shadercycles”從1910降低到1190,這提示開發(fā)者“shader”寫的過于復(fù)雜了。
我們進(jìn)一步將頂點(diǎn)數(shù)從50W減少到5W,會(huì)發(fā)現(xiàn)“VertexComputeCycles”從459降低到93.2,說明“VertexComputeCycle”就是一個(gè)需要優(yōu)化的瓶頸。
通過這樣的分析方式,就可以逐步定位到問題,并找到優(yōu)化的方向,從而達(dá)成性能功耗和畫質(zhì)的平衡。
四、圖形棧工具
我們前文介紹的2D和3D圖形應(yīng)用的分析優(yōu)化的能力都集成于HarmonyOS圖形棧的測試平臺(tái)——DevEco Testing。
![](https://file.elecfans.com/web2/M00/2C/CB/pYYBAGHejCOAZl5WAACApuPV914526.png)
圖11 DevEco Testing-圖形棧測試分析能力
如圖11所示,DevEco Testing是一個(gè)“三端+自動(dòng)化”的結(jié)構(gòu),其中三端包括設(shè)備端、PC端和云端,而自動(dòng)化就是可以使2D或3D應(yīng)用的做到自動(dòng)化測試,同時(shí)還具備以下測試能力:
- 性能、功耗、熱的采集和分析
- 游戲測試自動(dòng)化能力
- 大數(shù)據(jù)統(tǒng)計(jì)和分析
-
增強(qiáng)型服務(wù):獨(dú)立APK、幀采集回放、畫質(zhì)檢測、多路測試等
在以上測試能力中,有3個(gè)增強(qiáng)型服務(wù)測試能力是我們的特色:
(1)獨(dú)立的APK測試能力
如圖12所示,該工具支持脫離PC的方式進(jìn)行測試,可直接在被測設(shè)備上部署工具,并且在進(jìn)行設(shè)備應(yīng)用操作時(shí),可以實(shí)時(shí)展示數(shù)據(jù)。比如出現(xiàn)幀率的巨大下降時(shí),可以直接在屏幕上展示數(shù)據(jù)并提供測試的報(bào)告,非常直觀和便捷。
![](https://file.elecfans.com/web2/M00/2C/CB/pYYBAGHejCOAS41hAACDzq4ORt0143.png)
圖12靈活的獨(dú)立APK測試
(2)分布式渲染多路測試
該工具適用于HarmonyOS分布式多設(shè)備場景,可以綁定多個(gè)設(shè)備(如手機(jī)+筆記本),并且該工具平臺(tái)可以把這些設(shè)備的測試報(bào)告進(jìn)行綁定,形成完整的測試報(bào)告。
(3)支持單幀或多幀的采集和回放功能
如圖13所示,該工具可以采集一幀或多幀API Trace結(jié)果,然后進(jìn)行回放,再結(jié)合GPU Counters進(jìn)行定位(如前文壁紙調(diào)優(yōu)案例所述)。
![](https://file.elecfans.com/web2/M00/2C/CB/pYYBAGHejCSAbmpGAADNrvCWZ60284.png)
圖13 單幀或多幀采集回放
五、結(jié)語
HarmonyOS圖形棧是整個(gè)HarmonyOS操作系統(tǒng)的基座,包括ArkUI 2D和3D部分。圖形棧的測試是一個(gè)分層接口,包括應(yīng)用層、系統(tǒng)層以及硬件層,可以幫助開發(fā)測試者從用戶體驗(yàn)指標(biāo)到深入了解系統(tǒng)和硬件發(fā)生了什么。
這些測試服務(wù)能力集成DevEco Testing下的圖形圖像測試工具,歡迎大家下載使用。
-
測試
+關(guān)注
關(guān)注
8文章
5393瀏覽量
127112 -
鴻蒙系統(tǒng)
+關(guān)注
關(guān)注
183文章
2638瀏覽量
66752 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
1983瀏覽量
30620 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3749瀏覽量
16640 -
Harmony
+關(guān)注
關(guān)注
0文章
54瀏覽量
2649
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
求助:大四狗畢業(yè)設(shè)計(jì)毫無頭緒,關(guān)于單片機(jī)測試
圖形測試分析毫無頭緒?HarmonyOS圖形棧測試技術(shù)幫你解決
深度剖析HarmonyOS圖形棧測試技術(shù)
HarmonyOS采用華為全新自研圖形棧
HarmonyOS 測試技術(shù)與實(shí)踐-軟件棧對(duì)測試的挑戰(zhàn)
![<b class='flag-5'>HarmonyOS</b> <b class='flag-5'>測試</b><b class='flag-5'>技術(shù)</b>與實(shí)踐-軟件<b class='flag-5'>棧</b>對(duì)<b class='flag-5'>測試</b>的挑戰(zhàn)](https://file.elecfans.com/web2/M00/19/23/poYBAGFzp4KAdYa4AAcvJIWMspo011.png)
HarmonyOS 測試技術(shù)與實(shí)踐-HarmonyOS 軟件測試技術(shù)棧
![<b class='flag-5'>HarmonyOS</b> <b class='flag-5'>測試</b><b class='flag-5'>技術(shù)</b>與實(shí)踐-<b class='flag-5'>HarmonyOS</b> 軟件<b class='flag-5'>測試</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>棧</b>](https://file.elecfans.com/web2/M00/19/24/poYBAGFzqTyAFpZyAAfoGxj6UXM518.png)
HarmonyOS 測試技術(shù)與實(shí)踐-DevEco Testing測試服務(wù)
![<b class='flag-5'>HarmonyOS</b> <b class='flag-5'>測試</b><b class='flag-5'>技術(shù)</b>與實(shí)踐-DevEco Testing<b class='flag-5'>測試</b>服務(wù)](https://file.elecfans.com/web2/M00/19/2C/pYYBAGFzqlyANPzYAAaJNDh2YaE973.png)
HarmonyOS測試技術(shù)與實(shí)戰(zhàn)-DECC測試服務(wù)
![<b class='flag-5'>HarmonyOS</b><b class='flag-5'>測試</b><b class='flag-5'>技術(shù)</b>與實(shí)戰(zhàn)-DECC<b class='flag-5'>測試</b>服務(wù)](https://file.elecfans.com/web2/M00/19/2F/pYYBAGFzrfqAIVw_AAcfQnKGcpg762.png)
HarmonyOS測試技術(shù)與實(shí)戰(zhàn)-分布式應(yīng)用測試解決方案
![<b class='flag-5'>HarmonyOS</b><b class='flag-5'>測試</b><b class='flag-5'>技術(shù)</b>與實(shí)戰(zhàn)-分布式應(yīng)用<b class='flag-5'>測試</b>解決方案](https://file.elecfans.com/web2/M00/19/28/poYBAGFzr_mASTdFAAbs7Jt9Ass605.png)
HarmonyOS測試技術(shù)與實(shí)戰(zhàn)-UX測試服務(wù)
![<b class='flag-5'>HarmonyOS</b><b class='flag-5'>測試</b><b class='flag-5'>技術(shù)</b>與實(shí)戰(zhàn)-UX<b class='flag-5'>測試</b>服務(wù)](https://file.elecfans.com/web2/M00/19/31/pYYBAGFzsqGAB2PZAAbQIWB_XIE980.png)
HarmonyOS測試技術(shù)與實(shí)戰(zhàn)-HarmonyOS圖形棧測試技術(shù)深度解析
![<b class='flag-5'>HarmonyOS</b><b class='flag-5'>測試</b><b class='flag-5'>技術(shù)</b>與實(shí)戰(zhàn)-<b class='flag-5'>HarmonyOS</b><b class='flag-5'>圖形</b><b class='flag-5'>棧</b><b class='flag-5'>測試</b><b class='flag-5'>技術(shù)</b>深度解析](https://file.elecfans.com/web2/M00/19/2A/poYBAGFztMqAfuXFAAbNbIW7kF8428.png)
HarmonyOS測試技術(shù)與實(shí)戰(zhàn)-HarmonyOS圖形棧整體架構(gòu)和測試能力
![<b class='flag-5'>HarmonyOS</b><b class='flag-5'>測試</b><b class='flag-5'>技術(shù)</b>與實(shí)戰(zhàn)-<b class='flag-5'>HarmonyOS</b><b class='flag-5'>圖形</b><b class='flag-5'>棧</b>整體架構(gòu)和<b class='flag-5'>測試</b>能力](https://file.elecfans.com/web2/M00/19/2B/poYBAGFztYaAELX0AAfQEEJaIMw533.png)
HarmonyOS測試技術(shù)與實(shí)戰(zhàn)-華為3D圖形棧分析
![<b class='flag-5'>HarmonyOS</b><b class='flag-5'>測試</b><b class='flag-5'>技術(shù)</b>與實(shí)戰(zhàn)-華為3D<b class='flag-5'>圖形</b><b class='flag-5'>棧</b><b class='flag-5'>分析</b>](https://file.elecfans.com/web2/M00/19/34/pYYBAGFzuKSAOysnAAcEWHx9U28021.png)
HarmonyOS測試技術(shù)與實(shí)戰(zhàn)-Deveco Testing圖形棧測試分析能力
![<b class='flag-5'>HarmonyOS</b><b class='flag-5'>測試</b><b class='flag-5'>技術(shù)</b>與實(shí)戰(zhàn)-Deveco Testing<b class='flag-5'>圖形</b><b class='flag-5'>棧</b><b class='flag-5'>測試</b><b class='flag-5'>分析</b>能力](https://file.elecfans.com/web2/M00/19/2E/poYBAGFzunOAAslNAAeg3df44bo397.png)
HarmonyOS測試技術(shù)與實(shí)戰(zhàn)-HarmonyOS自研圖形棧總結(jié)
![<b class='flag-5'>HarmonyOS</b><b class='flag-5'>測試</b><b class='flag-5'>技術(shù)</b>與實(shí)戰(zhàn)-<b class='flag-5'>HarmonyOS</b>自研<b class='flag-5'>圖形</b><b class='flag-5'>棧</b>總結(jié)](https://file.elecfans.com/web2/M00/19/38/pYYBAGFzvcGAEba6AAV1OTyIoCg730.png)
評(píng)論