主頁 > 移動端開發 > 圖形測驗分析毫無頭緒?HarmonyOS圖形堆疊測驗技術幫你解決

圖形測驗分析毫無頭緒?HarmonyOS圖形堆疊測驗技術幫你解決

2022-01-17 18:29:38 移動端開發

作者:huangran,圖形影像技術專家

 

應用開發以后無法知道性能瓶頸的根因是什么?滑動卡頓、白塊產生的原因是什么?代碼寫完之后,不知道如何優化讓它表現地更好……


我們發現,如今測驗人員的需求已經不只是停留在應用層面的測驗資料了,而是需要資料背后的根因,但業界的圖形堆疊測驗,絕大部分都只提供應用層面的資料,有一部分可以深入系統層分析,但仍無法觸及硬體這一層的測驗分析,


HarmonyOS圖形堆疊測驗技術,不僅可以深入系統層分析,幫助開發測驗者得到資料背后的根因,還能觸達硬體層的測驗分析,那它是如何做到的呢?讓我們一起揭秘HarmonyOS圖形堆疊測驗技術,

 

一、HarmonyOS 圖形堆疊全貌


眾所周知,圖形是作業系統里面非常核心的模塊,和內核、編譯器等模塊一起作為作業系統的底層基座,不僅如此,它還是體現競爭力的關鍵模塊,但因為圖形堆疊非常復雜,所以需要構筑一套完整的測驗技術才可以保證其質量和競爭力,

 

圖1 圖形堆疊整體架構


如圖1所示,左邊部分是HarmonyOS圖形堆疊的全貌,其中最上面一層是渲染前端,包括2D類應用、3D類應用和重負載的游戲視頻類應用,這一層與右邊測驗部分的應用層對應,包括體驗KPI和負載模型能力,


中間一層則是我們圖形堆疊作業系統的核心能力,如組件、JS 引擎、ArkUI的三棵樹(Component樹,Element樹和Render樹)、自研2D引擎、自研3D引擎、動效、手勢、布局等,這一層與右邊測驗部分的系統層對應,包括圖形堆疊關鍵耗時函式決議和圖形堆疊優化方案可見的能力,


最下面一層則是HarmonyOS 1+8+N設備需要橫跨的兩個部分:作業系統和硬體設備,需要對其進行兼容支持,這一層與右邊測驗部分的硬體層對應,包括跨系統對比測驗能力、跨設備測驗能力和硬體SOC分析能力,


我們圖形堆疊的測驗能力不只是停留在應用層的體驗KPI,它可以將體驗KPI指標進一步分解成系統級別的耗時函式、以及硬體級別的SOC分析能力,并最終提供優化方案(后文將舉例說明),


了解完整體架構后,我們再進一從2D圖形堆疊應用和3D圖形堆疊應用兩個角度去了解圖形堆疊測驗技術:

 

二、2D圖形堆疊應用


圖2 是HarmonyOS ArkUI開發框架,對應右邊的三層結構,最底層是介面層測驗,中間層是組件層測驗,最上層是應用層測驗,接下來我們會給大家重點介紹負載模型、系統分析案例和應用分析案例,

 

圖2 ArkUI開發框架

 

對于一個新的開發框架,在沒有海量生態的應用進來之前我們是如何驗證這個平臺的測驗能力的?


我們最初設想的是構建足夠多的場景來覆寫和驗證整個ArkUI框架,比如三棵樹(Element樹、Component樹和Render樹)、布局/動效、手勢、2D渲染引擎,但因為不存在窮舉的方式去覆寫所有業務,所以我們提出了負載模型的概念,


2D負載模型到底是什么?


我們選取了Top200的應用,對應用進行基于場景的分類,并提取特征, 然后形成了8大類常見用戶場景(圖3),如購物類、圖庫類、視頻類等,同時也抽象出6大類負載,比如資源加載、圖層疊加、負載布局 ,

 

圖3 負載場景及型別


同時我們還結合了Beta與商用的性能問題單和用戶體驗反饋,來逆向幫助我們補充可能遺漏的負載,比如系統I/O負載壓力,這樣構建的負載模型有兩個作用,不僅可以測驗HarmonyOS圖形堆疊架構,還可以為作為HarmonyOS應用樣例,供開發者參考,


由于設備硬體能力的差異性,負載模型實際上是引數可調節的,比如對于IP Camera這類沒有GPU的設備,我們無法給它加很強的負載,它的解析度較小、物理尺寸也較小,如果用手機的解析度給它渲染這是沒有意義的,所以我們將負載模型構建成一個引數可調模型,這樣它就會基于測驗者的硬體設備來選擇不同的資源做測驗,非常靈活便捷,


如前文所說,我們的圖形堆疊測驗能力不只是停留在應用層,而是要進入到系統層和硬體層,接下來舉兩個例子讓大家了解一下我們在系統和硬體層面上如何做分析,


案例一:系統分析案例


我們先舉一個跟硬體相關的例子,比如“多個應用連續頁面切換”的場景,這時候可能產生多應用切換的時延、丟幀等問題,

 

如圖4所示,假如我們定義丟幀率的KPI為0.5%,但是經過測驗達到了3%,丟幀指標超標,那么我們將進一步對硬體的CPU占用率和I/O壓力進行資料統計,拿到統計資料之后,平臺還會告訴你具體是哪一個行程產生了CPU和I/O的壓力,并給出優化建議, 

 

圖4 系統分析和優化建議


案例二:應用分析案例


接下來我們舉個應用內的性能分析案例,比如圖庫應用的圖片洗掉場景,也可能產生丟幀和時延問題,

 

如圖5所示,假設我們定義時延指標為100ms,經過測驗發現時延達到1048ms,時延超標,然后我們將ArkUI圖形堆疊函式展開,得到耗時占比,發現在系統層面上FlushBuild()和FlushLayout()耗時較長,然后平臺會基于這些資料進行分析,找到可能原因,并給出優化建議,以幫助開發者明確下一步優化方向和動作,

 

圖5 應用分析和優化建議

 

三、3D圖形堆疊應用


圖6是3D圖形堆疊的整體架構,它包括了兩部分,一部分是右側的自研3D引擎,大家可以基于3D自研引擎進行3D應用的開發,比如3D動效、AR應用、3D壁紙等,

 

圖6左邊的部分是SDK,我們提供了一系列API,主要是針對大型的3D游戲,因為大型的3D游戲對于系統和SOC的壓力較大,這些API可以幫助大型游戲更好地使用系統和硬體,比如GTX、System Cache、畫質增強等SDK介面,

 

接下來我們會為大家重點介紹3D應用分析基礎、特性拆分和分析方法和3D壁紙調優案例,

 

圖6 “3D圖形堆疊”


1. 3D應用分析基礎


3D應用對于性能功耗的壓力會更大,所以更需要底層SOC以及系統的分析能力,其實無論是3D自研引擎,還是SDK,都可以通過將負載進行特性拆分,然后進行細粒度分析,

 

如圖7所示,場景A關鍵幀就是由渲染特性HDR、Bloom等粒子特效組成,再加上CPU負載就形成一個關鍵幀,這些關鍵幀連續起來就是3D場景,通過這些特性進一步呼叫到硬體邏輯的相關特性,比如ALU、Texture壓力,最終通過DDK呼叫到硬體層執行,

 

圖7 “3D應用分析基礎”


有了以上分析基礎后,我們再來看一下特性拆分和分析方法,


2. 特性拆分和分析方法


如圖8所示,這幀渲染畫面是由Particle、Shadow map、Point light、Bloom等特效組成,如果GPU的負載較重,性能出現瓶頸,如何找到問題的根因呢?我們把這一幀的GLES的指令截取到,并將每一個單特性進行分拆,然后看每一個單特性(如Particle)對硬體造成的壓力,特性拆完后再結合GPU counters來幫助我們定位根因,

 

圖8 特性拆分


如何使用GPU counters來定位問題呢?如圖9所示,場景C提示fragment cycles比較重,所以要求開發者減少像素渲染,而對于場景A,不僅Fragment cycles很重,而memory R/W以及Vertex cycles都比較重,那么就要針對這幾個瓶頸進行優化,

圖9 GPU Counters


3D壁紙調優案例


我們舉一個3D壁紙調優的案例給大家展示如何找到性能瓶頸,

 

圖10 “3D壁紙調優”


如圖10所示,用Blender制作3D壁紙模型,再用我們的自研引擎增加渲染效果,最終形成一個有光照、反射的畫面,


我們將3D壁紙畫面進行特性剝離,再看特性剝離后每一個單特性對硬體造成的壓力,資料如表1所示,發現表面細分(頂點50W)+點光(1術)+反射面的歸一化電流達到了1921.33,性能出現較大惡化,如果使用一般的測驗工具,就只能到這一步了,

 

 

但我們的工具可以幫助大家進一步分析,我們結合表2的Counters來幫助大家定位問題,


 

在表2的第一、二組資料可以看到,將反射面減少,會發現“shadercycles”從1910降低到1190,這提示開發者“shader”寫的過于復雜了,


我們進一步將頂點數從50W減少到5W,會發現“VertexComputeCycles”從459降低到93.2,說明“VertexComputeCycle”就是一個需要優化的瓶頸,
通過這樣的分析方式,就可以逐步定位到問題,并找到優化的方向,從而達成性能功耗和畫質的平衡, 

 

四、圖形堆疊工具


我們前文介紹的2D和3D圖形應用的分析優化的能力都集成于HarmonyOS圖形堆疊的測驗平臺——DevEco Testing,

 

圖11 DevEco Testing-圖形堆疊測驗分析能力


如圖11所示,DevEco Testing是一個“三端+自動化”的結構,其中三端包括設備端、PC端和云端,而自動化就是可以使2D或3D應用的做到自動化測驗,同時還具備以下測驗能力:

  • 性能、功耗、熱的采集和分析
  • 游戲測驗自動化能力
  • 大資料統計和分析
  • 增強型服務:獨立APK、幀采集回放、畫質檢測、多路測驗等


在以上測驗能力中,有3個增強型服務測驗能力是我們的特色:


(1)獨立的APK測驗能力


如圖12所示,該工具支持脫離PC的方式進行測驗,可直接在被測設備上部署工具,并且在進行設備應用操作時,可以實時展示資料,比如出現幀率的巨大下降時,可以直接在螢屏上展示資料并提供測驗的報告,非常直觀和便捷,

 

圖12靈活的獨立APK測驗


(2)分布式渲染多路測驗


該工具適用于HarmonyOS分布式多設備場景,可以系結多個設備(如手機+筆記本),并且該工具平臺可以把這些設備的測驗報告進行系結,形成完整的測驗報告,

 

(3)支持單幀或多幀的采集和回放功能


如圖13所示,該工具可以采集一幀或多幀API Trace結果,然后進行回放,再結合GPU Counters進行定位(如前文壁紙調優案例所述),

 

圖13 單幀或多幀采集回放

 

五、結語


HarmonyOS圖形堆疊是整個HarmonyOS作業系統的基座,包括ArkUI 2D和3D部分,圖形堆疊的測驗是一個分層介面,包括應用層、系統層以及硬體層,可以幫助開發測驗者從用戶體驗指標到深入了解系統和硬體發生了什么,

 

這些測驗服務能力集成DevEco Testing下的圖形影像測驗工具,歡迎大家下載使用,

 

掃碼添加開發者小助手微信

獲取更多HarmonyOS開發資源和開發者活動資訊

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/413216.html

標籤:其他

上一篇:微信小程式開發-右上角「添加到我的小程式」提示

下一篇:3分鐘了解如何跨應用、跨形態無縫登錄

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more