《5-光子游戲-探索手游前端性能測試最佳實踐-曾平.pdf》由會員分享,可在線閱讀,更多相關《5-光子游戲-探索手游前端性能測試最佳實踐-曾平.pdf(45頁珍藏版)》請在三個皮匠報告上搜索。
1、MTSC2020中國互聯網測試開發大會深圳站TESTING SUMMITCONFERENCE CHINA 20202020.11.20-21一中國深圳寶立方國際酒店主辦方:TesterHeme#page#中國互聯網測試開發大會。MTSC深圳站探索手游前端性能測試最佳實踐曾平主辦方:TesterHame#page#MTSC中國互聯網測試開發大會手游前端性能測試的意義和背景介紹月手游前端性能測試、分析Roadmap及整體解決方案盛前端性能測試分析工具鏈建設實踐CONTENTS手游項目性能測試優化方案探索&實戰經驗分享小結廠商主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會一、
2、手游前端性能測試的意義和背景介紹近年來手游產業發展迅速,逐漸由之前的輕度、休閑類轉而向中重度手游發展,越來越多大型端游也改編成手游,如:斗戰神、熱血傳奇、天涯明月刀等。iOS暢銷榜TOP20手游情況排名注戲線類型引等1王者榮耀MOBAUnity3D游戲引擎分布情況2MMORPG天涯明月刀Unity3D4SLG三國志*戰略版Unity3D52ox.16.6PSUE4和平精英6RPG原神Unity3D1夢幻西游MMORPGNeox9SLG萬國覺程Unity3DUE4,16.60%11云上城之歌-勇者傳說MMORPGUnity3D13SLG鴻圖之下UE45SLG率土之濱Neox7神武4MMORPGC
3、ocos19新神魔大陸MMORPG Unity3D廠商主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會二、手游前端性能測試、分析Roadmap及整體解決方案1、性能影響因素眾多:代碼、資源、引擎、系統、SOC等前臺性能影響因素2、性能問題優化較為困難,有時需動到引擎等底層代碼,或涉及資源制作的優化3、前臺性能問題對游戲外網表現至關重要,尤其對于競技類手游紋理資調廠商主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會二、手游前端性能測試、分析Roadmap及整體解決方案玩家在體驗游戲時,往往卡頓或OOM的影響最直接,其次是發熱、流量等問題,而這些也是性能
4、測試和優化需要關注的重點。前臺性能測試的價值:游戲性能表現評估,提升玩家體驗FPS內存一級指標CPU/GPU使用率卡頓率功耗降頻二級指標流量紋理格式/精度三級指標光照碰撞廠商主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會二、手游前端性能測試、分析Roadmap及整體解決方案前臺性能測試分析方案RoadMap性能測試FPSCPU機器/配置內存機器硬件情況GPUCPU游戲內配置是否合理資源代碼Gamethread.Renderthread、組件耗時、其他熱點函數瓶頸分析:PS,VS,帶寬紋理大小和格式代碼段過大、內存泄漏、Mesh、材質、重復加載資源、圖集加載音頻、動畫不合
5、理消染頂序:不透明從前往后,透明從后往前overdraw,shader復雜度,美術資源等廠商主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會二、手游前端性能測試、分析Roadmap及整體解決方案手游開發過程中游戲涉及到的資源和對象非常多,如:紋理、光源、材質、粒子、模型、動畫、音頻、腳本、線程調度等。不同的資源對性能參數會帶來不同程度的影響。內存紋理、音頻、模型、字體CPU組件運算(碰撞、光照等)腳本、GC、Drawcall、GPU材質、模型(頂點和三角面的數量)、像素填充系統/SOC線程調度綁核、LOD廠商主辦方:TesterHeme#page#MTSC中國互聯網測試開
6、發大會、手游前端性能測試、分析Roadmap及整體解決方案GPU緯度一PC端與移動端GPU對比對比項PC端GPU(RTX3090ti)移動端GPU(Adreno640)38410496核心數(ALU單元)954Gflops(浮點計算)35.58T功耗M350W晶體管數280億60億(曉龍855整體)制程8nm10nm顯存24GDDR6X獨立顯存DDR4X共享內存帶寬34GB/sPCle4.01006GB/s尺寸313mm*138mm*55mm8.49mmx9.84mm8K最高分辨率1080PAPIVulkan 1.1/OpenGLES3.2/DX12Vulkan1.2/OpenGL4.6/DX
7、12移動端GPU體積、功耗占優,但是計算能力遠遜于PC端GPU主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會手游前端性能測試、分析Roadmap及整體解決方案GPU緯度一GPU架構IMR模式:架構簡單,提交的每個瀘染命令都會立即開始執行,并且該染命令會在整條流水線中執行完畢后才開始執行下一個瀘染命令優點:架構簡單,演染管線連續缺點:瀘染命令在執行需要隨時讀寫framebuffer,depthbufer和stencilbuffer,帶來大量內存帶寬消耗,功耗消耗高Cip.ProeTexlureMpha Te8cuTewtureDabDepiBufIMR pipelineI
8、MR架構多用于PC端的GPU主辦方:TesterHame#page#MTSC中國互聯網測試開發大會手游前端性能測試、分析Roadmap及整體解決方案GPU緯度一GPU架構TBR模式:將需要潼染的畫面分成一個個矩形區塊(tile),tile一般是4x4或者8x4的矩形塊。模型的頂點經過VertexShader運算以后會組裝成一個個的triangle,這些triangle會被緩存在PrimitiveList里面優點:按塊為單位來處理,功耗和內存消耗大大降低缺點:需要額外的帶寬用來讀寫Primitivelist,依然存在OverDraw高的問題TBR pipolineTBR架構多用于Android移
9、動端的GPU主辦方:TesterHame#page#MTSC中國互聯網測試開發大會手游前端性能測試、分析Roadmap及整體解決方案GPU緯度一GPU架構TBDR模式:TBDR跟TBR原理相似,但是通過HSR(HiddenSurfaceRemoval,隱藏面消除)操作,在執行PixelShader之前進一步減少了不需要渣染的fragment,降低了帶寬需求。優點:能解決overdraw的問題,可節省帶寬與運算開銷的消耗缺點:AlphaTest、AlphaBlend會打斷TBDRbTBDR pipelineTBDR架構多用于iOS的GPU主辦方:TesterHame#page#中國互聯網測試開發
10、大會MTSC手游前端性能測試、分析Roadmap及整體解決方案幾何階段光柵化階段應用階段頂點處理屏幕映射三角形像素計算合井輸出屏幕顯示CPU傳輸圖元和潔坐標變換/光照轉換屏幕坐標設置和遍歷逐片元著色模板/深度/混合染設置到GPUVS瓶頸帶寬瓶頸PS瓶減面提升cache命中率簡化效果固定階段固定階段裁剪降低輸出分辨率減少drawcal數量片元丟棄控制緩沖讀寫不可配置不可配置頂點丟棄減少帶寬負載排序觸發early-zRasterization主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會手游前端性能測試、分析Roadmap及整體解決方案GPU緯度一GPU染分析對GPU消耗影
11、響較大的主要因素包含:漳染流程、模型/紋理精度、overdraw、光GPU影響因素照、shader復雜度等整體渣染策略最大程度利用GPU架構的硬件特性減少不必要的頂點計算和像素繪制先繪制不透明再繪制透明,不透明從前往后繪制,半透明從后往前繪制V同類物體連續繪制或合批主辦方:TesterHame#page#中國互聯網測試開發大會MTSC手游前端性能測試、分析Roadmap及整體解決方案基礎性能數據GPU緯度一問題分析方案收集FPS問題場景確定(掉頓/卡頓)CPU負載&頻率檢查瓶頸判斷CPUGPU瓶頸瓶頸熱點函數分析瀘染分析浪染過程VS瓶頸帶寬瓶頸PS瓶頸分析分析分析分析主辦方:TesterHem
12、e#page#中國互聯網測試開發大會MTSC、手游前端性能測試、分析Roadmap及整體解決方案CPU緯度一PC端與移動端CPU對比對比項桌面CPU(inteli9-10900K)移動CPU(曉龍865)108核心數小核4個:1.8GHz頻率3.7GHz大核3個:2.42GHz超大核1個:2.84GHz極限頻率5.3GHz2.84GHzL3Cache(高速緩存)20MB4MB制程14nm7nm功耗125W2.5W大小37.5mmx37.5mm8.49mmx9.84mm移動端CPU芯片體積、制作工藝、功耗更優,但是計算能力PC端CPU更強主辦方:TesterHeme#page#中國互聯網測試開發
13、大會MTSC手游前端性能測試、分析Roadmap及整體解決方案基礎性能數據CPU緯度一CPU問題分析方案收集FPS問題場景確定對CPU消耗影響較大的主要因素包含:邏輯運算、物理組件、(掉頓/卡頓)CPU影響因素GC、drawcal等CPU負載&頻率檢查瓶頸判斷CPUGPU瓶頸瓶頸漳染分析熱點函數分析消染過程VS瓶頸PS瓶頸帶寬瓶頸分析分析分析分析主辦方:TesterHeme#page#中國互聯網測試開發大會MTSC手游前端性能測試、分析Roadmap及整體解決方案CPUCPU緯度一CPU和GPU架構特點ALUControlCPUCacheCPU有強大的ALU,擅長邏輯控制,串行的運算大道DRA
14、MGPU擅長的是大規模并發計算,所以GPU除了圖像處理,也GPUGPU越來越多的參與到計算當中來有些工作即可以放在CPU也可以放在GPU,如:GPUskin協作分工開mesh/cPU skin meshDRAM主辦方:TesterHeme#page#中國互聯網測試開發大會MTSC手游前端性能測試、分析Roadmap及整體解決方案CPU&GPU緯度一計算資源分配調度GPUCPU1.先分析CPU瓶頸或GPU瓶頸,盡量將計算移向相對空閑的地方,大量計算單元井善于執行復雜控例GPU skin mesh/CPU skin mesh Occlusion Culing發執行制邏輯分配思路浮點計算能力強單核計
15、算能力強2.在ComputeShader技術的支持下,GPU也具備了邏輯計算能力,即GPGPU,使分配更靈活主辦方:TesterHame#page#MTSC中國互聯網測試開發大會二、手游前端性能測試、分析Roadmap及整體解決方案內存緯度一內存分布視圖(U3D/UE4)內存分布(UE4)內源分主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會二、手游前端性能測試、分析Roadmap及整體解決方案內存緯度unity3D內存管理整體視圖unity3D內存管理比較復雜繁項,稍不注意就可能導致資源釋放不及時或者釋放錯誤,此外unity引擎本身也會自動加載部分資源,那些資源的釋放由
16、引擎控制,更容易導致內存出現消耗過高的情況。內存管理整體視圖如下:Mi主辦方:TesterHame#page#MTSC中國互聯網測試開發大會、手游前端性能測試、分析Roadmap及整體解決方案內存緯度一資源加載和卸載實例北資彈色2E8(s(wait);WaitF海務進識會國座門卸載資源3=123釋放資測主辦方:TesterHame#page#MTSC中國互聯網測試開發大會手游前端性能測試、分析Roadmap及整體解決方案內存緯度一資源加載和卸載實例Sten 1 Sten 2Sten5Sten 3Sten 4將prefab和紋理的引用置空通過UnloadUnusedAssets0釋放主辦方:Te
17、sterHame#page#MTSC中國互聯網測試開發大會手游前端性能測試、分析Roadmap及整體解決方案內存緯度一影響內存的主要因素資源類異常紋理大小、音頻、地圖、字體、動畫資源等資源重復加載、卸載錯誤、卸載不及時,及代碼使用不當造操作類錯誤成堆內存過高引起頻繁GC等主辦方:TesterHame#page#中國互聯網測試開發大會MTSC二、手游前端性能測試、分析Roadmap及整體解決方案內存緯度一問題分析思路基礎內存數據收集性能問題場景確定場景內存全量內存資源快照內存快照分布申請情況分析對比資源重復資源規格內存泄漏資源泄漏加載主辦方:TestterHeme#page#MTSC中國互聯網測
18、試開發大會三、前端性能測試分析工具鏈建設實踐XUP.UWA工具鏈建設思路引擎層1.容易引發嚴重性能問題環節的分析XUP、Xcode/instrument代碼2.能支持多引擎,能較全面的獲取手游性能基礎數據,工具能復用到大部分項目3.能分析到問題根因資源掃描平臺、資源頂加載測試工具資源RenderDoc、snapdragon、自動化泊染分析、自動化截漁染噴分析、shader掃描VSystace、 DS-streamine、 XUP、 PerfDog系統VBatteryLife、功耗儀:N6705功耗主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會三、前端性能測試分析工具鏈建
19、設實踐資源掃描平臺開發目的:資源對游戲內存和泣染都會帶來直接影響,掃描平臺支持對unity3D和UE4引擎手游的資源進行多維度的掃描,提前暴露問題UE4資源檢查維度主辦方:TesterHeme#page#中國互聯網測試開發大會MTSC三、前端性能測試分析工具鏈建設實踐Shader掃描工具手游越來越重度、畫質要求較高,非常容易出現GPU瓶頸,引起卡頓。除了常見的資源規格、漳染順序、漳染方法等因素之外,開發背景shader對漳染效率也有非常大的影響。shader工具,旨在前期提前發現shader的消染效率問題發現的問題主要集中在:使用分支語句,不透明泣染中使用主要問題discard,使用紋理過多,
20、使用過多的數學函數,使用了過多的變體等主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會三、前端性能測試分析工具鏈建設實踐自動化追染分析在不影響原有追染過程的情況下,修改unity的追染流程,利用實觀原理computeshader逐頓采集gpu漳染數據,可以提供一段時間內漳染數據實時變化Shadar LOD主辦方:TesterHame#page#中國互聯網測試開發大會MTSC三、前端性能測試分析工具鏈建設實踐性能熱力圖開放大世界手游的流行,保障大地圖手游的性能情況帶來一定挑開發背景戰,尤其全圖遍歷太耗人力。在此背景下開發了性能熱力圖工具,較好的對全圖性能進行監控1.直觀展示
21、大地圖中的各維度性能指標應用場景2.地圖制作期間用于指導美術進行性能優化3.跨版本的對比,對于明顯性能瓶頸點進行進一步分析主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會四、手游項目性能測試優化方案探索&實戰經驗分享性能測試前置,標準先行。分階段制訂適配項目性能情況的整測試支持方案體測試方案和人力支持測試前置性能熱點及容易出現瓶頸地方,研究開發工具提高問題發現效率。通過自研或引入的方式持續完善性能測試分析工具鏈建設工具鏈建設結合項目研發情況,制訂適合項目選代節奏的性能轉測和優化流程,讓性能風險點及時掌握,問題及時收斂流程制定完善性能各緯度數據的監控,及時感知版本性能情況的
22、變化性能監控主辦方:TesterHame#page#MTSC中國互聯網測試開發大會四、手游項目性能測試優化方案探索&實戰經驗分享性能優化方案&經驗1.性能測試需要在早期介入,且性能優化是一個長期持續的過程項目測試2.重視美術資源標準制定以及項目支持的基線機型和分檔,合理的LOD分級經驗分享3.性能冒煙,監控每日版本性能變化情況4.日常性能測試分析,需分階段關注游戲瓶頸點的分析1.不同游戲玩法和定位不一樣,性能瓶頸往往有較大區別,有的追染瓶頸居多、有的在邏輯瓶頸,性能優化方案需要具體問題具體分析常見優化方案2.在常規優化手段無法解決嚴重性能問題時往往需要考慮舍棄部分表現效果或體驗主辦方:Test
23、erHame#page#MTSC中國互聯網測試開發大會四、手游項目性能測試優化方案探索&實戰經驗分享GPU問題常見優化手段分享針對GPU問題,重點關注GPU追染過程中高度可控,且容易出現瓶頸的階段:頂點處理和片元處理,同時關注帶寬負載。降低帶寬頂點處理片元處理裁鶴頂點:減少CPU到GPU帶寬最大程度利用GPU架構:減少紋理大小模型減面先Opaque后Transparent減少網格大小動態模型LODOpaque:從前往后視距裁剪減少緩存訪問:Transparent:從后往前減少光照:追染過程中減少各類buffer減少圖元處理合理排序,提升cache命中減少實時光,提前烘焙減少濱染像素/overd
24、raw主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會四、手游項目性能測試優化方案探索&實戰經驗分享GPU優化案例2b.)減少片元處理減少片元處理的重點在于減少不必要的圖元繪制,合理利用early-z,TBDR等硬件特性。1.追染排序2.減少浪染像素/overdraw3.減少光照計算,提前烘焙N月主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會四、手游項目性能測試優化方案探索&實戰經驗分享GPU優化案例3C.)降低帶寬降低帶寬需要考慮兩個方面,從CPU傳輸數據到GPU的帶寬,以及GPU漳染過程中訪問各類buffer的帶寬。1.減少紋理/mesh的數量
25、和大小2.減少訪問緩存的次數,提升cache命中率77340.31278735.156glDrawElements(132)8112lDrawElements(8118)107.916825glDrawElements(8118)108.854846dDrawElements(8118)131.875860glDrawElements(8118)122.969主辦方:TesterHame#page#MTSC中國互聯網測試開發大會四、手游項目性能測試優化方案探索&實戰經驗分享CPU問題常見優化手段分享CPU優化的核心在于合理分配CPU每幢的計算量,同時充分利用手機多核處理的能力優化代碼復雜度分核
26、計算降低組件調用頻率利用XUP等工具監控關鍵路徑的耗時變化部分高耗時計算分到多幀進行,降低單噴峰對高耗時的組件,設置合適的執行間隔;對特別注意GC函數耗時以及高頻函數避免高耗值,例如:分杭進行物體的加載和銷毀視距外的組件,可以考慮暫停執行時調用預加載線程調度減少追染計算預編譯常用的shader,熱點資源使用對象池根據不同的手機架構解綁核,合理分配線程降低CPU泊染負載主要在于減少drawcall,預加載,避免實時加載出現大卡頓使用動態批處理,靜態批處理,gpu最大化利用硬件能力。利用systrace可以分析線程調度情況instance等主辦方:TesterHeme#page#MTSC中國互聯網
27、測試開發大會四、手游項目性能測試優化方案探索&實戰經驗分享CPU優化案例1組件TICK優化思想:在不影響表現的情況下盡量避免TICK或者隔幀TICK1.植物、物件等靜置物體隔幀TICK2.對象不出現在屏幕中,腳本也會運行,所以對距離較遠且不可見物體停止TICK優化前:Update持續耗時均值為0.514ms,峰值為118.348ms。優化后:間隔耗時均值為0.054ms,下降0.46ms;峰值為11.548ms,下降106.8ms。主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會四、手游項目性能測試優化方案探索&實戰經驗分享CPU優化案例2CPU瓶頸分析思想:先利用Sys
28、trace分析卡頓點的線程瓶頸,然后使用Streamline或者Xup分析可優化的熱點函數。1.線程分析:2.函數分析:分析主線程單頓耗時,演染線程耗時較低,主要問題是GC耗時過長。UnityMain是主要卡點。主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會四、手游項目性能測試優化方案探索&實戰經驗分享內存問題常見優化手段分享內存問題需要從內存峰值場景內存分布情況著手分析,首先關注資源類內存,有無超標資源,制作不合理,加載過多或資源泄漏;其次關注代碼層的內存申請和內存泄漏。使用ETC或ASTC壓縮紋理,去掉不必要的通道資源制作動畫和頂點也可以按需壓縮合理制作圖集,慎重開
29、啟mipmap去掉紋理資源的讀寫功能合理定義結構體大小,去除非必要的引用去除幾余按需加載游戲表格和游戲資源,合理控制預加載數量及時到離非必要的第三方庫和引擎組件檢查泄漏通過代碼內存快照,資源內存快照分析連續對局的內存變化主辦方:TesterHeme#page#MTSC中國互聯網測試開發大會四、手游項目性能測試優化方案探索&實戰經驗分享內存優化案例1去除中不需要功能的UI組件,部分通過動態加載,可以減少元余內存。主辦方:TesterHame#page#MTSC中國互聯網測試開發大會四、手游項目性能測試優化方案探索&實戰經驗分享內存優化案例2資源內存泄漏分析:連續多次對局后每次都重新回到大廳,選擇
30、不同場次的大廳場景資源快照進行差異對比,泄漏的資源內存會按照一定規律隨局數增長。主辦方:TesterHame#page#MTSC中國互聯網測試開發大會五、小結性能指標方面1.每個手游項目定位不一樣,在項目早期建議制訂項目的美術資源標準和機型分檔及性能標準,給后期游戲開發和美術制作提供參考2.客戶端性能優化是個循序漸進的過程,不太可能一步優化到位,一勞永逸。需要結合版本情況,選擇玩家和項目組都能接受的性能水平,不太建議追求極致優化資源管理及優化方面影響性能表現的因素非常多,游戲開發過程中需要清晰了解。資源類問題往往在研發前期帶來的影響較大直接影響內存和渣染。開發過程中需注意合理使用相關資源及各類組件,避免對手機某項資源消耗過多而引起性能瓶頸客戶端相關性能參數之間并不是完全獨立,需要平衡游戲各方面幾資源的消耗,分散對手機終端不同資源的消耗壓力(如用內存換取cpu壓力的降低,CPU、GPU部分運算互移)。美術品質在不同檔位機型的要求應該不一樣,需要在手機運算能力和美術表現方面取一個較為合理的平衡重視系統和設置類的問題優化,如:解綁核、線程調度類問題,LOD設置錯誤等問題測試工具方面性能問題影響因素多,分析鏈條長,需要重視搭建各個維度的性能數據收集和分析工具。代碼、資源、泊染層的工具可以優先關注聯米到限目工的工行選擇和建設主辦方:TesterHeme#page#謝謝THANKS