UWA GOT の機能について

Blog:https://blog.jp.uwa4d.com/2019/12/19/uwa-got-の機能について/

 

UWA GOTはGame Optimization Toolkitの頭文字から由来し,UWA Technologies Shanghai Co., Ltd.が開発したローカル性能診断ツールになります。本ツールは開発者が簡単にローカルで実機テストを行い、UnityEditorでローカルサーバー経由でデータを受け取り、性能分析することができます。テストプロセスでは、開発者がテスト時間とフローを決めて、数分後で性能データを確認することができます。また、例えばスクリプト内の主要関数の処理時間やメモリの割当情報など詳細な性能データも取得できます。開発者にとってはプロジェクトの性能に対して一つの保証にもなります。

 

UWA GOT 提供する Overview、MonoAssetの機能について。

 

機能一:Performance Overview

主にソースコードのCPUコストとハードウェアの詳細情報が含まれます。

 

1、ソースコードのCPUコスト

「Version」にて確認したいテストデータのバージョンを選択する。

選定されたデータが読み込みされ、画面に分析結果が表示されます。主にCPUコストのトレンド図、プロジェクトの実行Screenshot及びCPUコストの分析図が含まれてます。

 

下図はCPUコストの分析図、左上を見ると、UWA GOTはソースコードのCPUコストデータを統計し、開発者はある関数を指定すれば、すぐ実行時の詳細処理時間を確認できます。また、Screenshotエリアをコントロールすれば、特に調査したいエリアのCPUコストを確認することができます。

また、数値の範囲を動的に調整でき、さらに詳細な調査に非常に便利です。

2、ハードウェア情報
「Mode」にて「Hardware」を選択し,App実行時のハードウェア側の情報を確認することができます。主にハードウェアのメモリ情報(PSSメモリの実行時のトレンド)、バーデリー、温度及びネットワークトラフィック統計トレンドなどの詳細情報が含まれます。

上図は実行時のPSSメモリのトレンド図

 

機能二:Mono Memory Analysis

主にコードのメモリ累積割当とメモリリーク分析情報が含まれます。

1、コードのメモリ累積割当

「Mode」にて 「Total」を選択し,App実行時の各関数の全体のメモリ割当情報を確認できます。「Top List」において詳細な関数名を選択すれば、開発者が該当する関数の詳細メモリ情報を確認でき、グラフ図と対照しながら、特定のフレームに関するメモリ情報も調査できます。

2、コードメモリリーク分析

下図のように「Top List」にて関数名を選択し、当該関数のメモリ割当情報を確認することができます。「Diff Mode」で 「ON」を設定すれば、コードのメモリリーク分析機能が起動されます。任意の二つの棒グラフ図を選択し、それぞれメモリの使用差分を比較することができますので、メモリの変化の原因を調査することができます。

機能三:Runtime Asset Tracker

本機能は主にアセットの使用状況、フレームごとの詳細情報、アセットメモリリーク及びアセット冗長性診断の4機能があります。

1、アセット使用状況 

TopListにて調査したいアセットの種類を選び、アセットの使用トレンド図をクリックすると、各フレームのその種類のアセット及び特定アセットの詳細使用情報を確認することができます。

下図で、テクスチャのアセットトレンド図を選択し、パネル下部ではApp実行時のすべてのテクスチャアセットの詳細実行情報が表示されます。例えばメモリの使用情報、Height、width、Formatなど確認できます。

2、アセットメモリリーク診断

多くのプロジェクトではメモリリーク問題は多少は存在しますが、UWA GOTのフレーム比較機能を使用すれば、開発者は手軽にメモリリーク問題の調査ができます。

下図のように、テクスチャアセットで、12000フレームと17700フレームのアセット使用状況を比較してみます。 「Max Memory」で正の値のアセットは17700フレームの新たな増加したアセットと表示されます。(もし負の値が存在すれば、17700フレームの減少アセットになります)。このような比較機能で、素早くアセットの変化情報を特定でき、メモリリーク問題の解決に繋がります。

3、アセット冗長性診断

プロジェクト実行中、メモリ使っているアセットは冗長性になっている可能性があります。これについて、パネルで表示される「Max Count」数値を確認することをお勧めします。「Max Count」は1より大きいアセットの場合は、冗長性問題のリスクが高いと思われます。「Max Count」とはプロジェクト実行中、特定のアセットが特定の1フレームでアセットの最大使用数量になります。