Monoメモリの逆順呼び出し分析機能

Blog:: https://blog.jp.uwa4d.com/2019/11/13/monoメモリの逆順呼び出し分析機能/

UWA GOT Onlineは、全体的なパフォーマンス分析、Monoメモリ分析、および実行時アセットの測定という3つの機能を提供するUWAのパフォーマンス最適化サービスです。その中でも、Monoメモリ分析レポートは、Monoの割り当てが使用過大かつオーバースピードという問題を素早く理解し、メモリリークの原因を特定するのに役立ちます。本日、逆順の呼び出し分析機能を提供することにより、Monoメモリを実際に割り当てる多層なサブ関数が直接強調表示され、開発チームがヒープメモリのボトルネック問題を素早く特定できるようになります。

現時点では、多数のゲーム開発プロジェクトで呼び出されるスタックレイヤーの数は比較的に深く、一部は30レイヤーを超えることもある。そのため、開発チームが、ヒープメモリ割り当ての特定のサブ機能を展開、検索、特定するには多くの時間を費やす必要がありますが、最後まで展開すると、類似なサブ関数情報が見えます。

上の図に示すように、赤、青、緑のボックス内の関数は、呼び出しスタックが異なることにより分離されていますが、実際には同じ関数です。

そのため、UWA GOT OnlineにMonoメモリの逆順呼び出し分析機能を導入しました。 次の図に示すように、「逆順呼び出し分析」モードを選択すると、ゲーム実行中にMonoメモリ割り当てが最も多いTopサブ関数が表示されます。

同時に、開発チームは各サブ機能をクリックして、さまざまなテストバージョンでどのように変化するかを確認できます。次の図は、関数のヒープメモリ割り当て平均(10Kフレームごとの平均)の傾向を示しています。ヒープメモリの割り当てが増え続けるサブ機能については、開発チームがそれに集中し、回帰テストを使用して特定およびトラブルシューティングすることをお勧めします。

 

さらに、プロジェクトテスト中のサブ機能、特定の割り当て情報、リバーススタック情報も表示できます。逆順スタックでは、ノードが展開された後の直接関数のリストは、ノード関数を呼び出してヒープメモリを生成する親関数です。また、開発チームは、これらのヒープメモリ割り当ての特定の呼び出しに関する洞察を得るために、階層関係を順序に展開および表示できます。

同時に、UWAは、より実用的な方法は、最初の1〜3層のサブ関数を介してコードを直接検索し、ヒープメモリ割り当てを直接最適化することであることを推奨します。このモードを適用すると、開発チームはヒープメモリの割り当てをより正確に特定し、コードをより効率的に最適化できます。