クライアント側のパフォーマンス トレースの作成
Azure Remote Rendering のパフォーマンスが期待したほどよくない場合がある理由は多数あります。 クラウド サーバーの純粋なレンダリングのパフォーマンスとは別に、特にネットワーク接続の品質はエクスペリエンスに大きな影響を与えます。 サーバーのパフォーマンスをプロファイリングするには、サーバー側のパフォーマンス クエリに関する章を参照してください。
この章では、performance traces. を使用して、潜在的なクライアント側のボトルネックを特定する方法に焦点を当てます
作業の開始
Windows performance tracing 機能を初めて使用する場合は、このセクションにある、作業を開始するための最も基本的な用語とアプリケーションについての説明を参照してください。
インストール
Azure Remote Rendering (ARR) でトレースを行うために使用されるアプリケーションは、すべての Windows 開発に利用できる汎用ツールです。 これらは、Windows Performance Toolkit で提供されています。 このツールキットを入手するには、Windows アセスメント & デプロイメント キットをダウンロードしてください。
用語
パフォーマンス トレースについて説明する際にはさまざまな用語が重要になります。 最も重要なビュー:
Event Tracing for Windows (ETW)
ETW は、Windows に組み込まれている効率的なカーネル レベルのトレース機能を表す包括的な名前です。 ETW をサポートするアプリケーションでは、パフォーマンスに関する問題の追跡に役立つ可能性があるアクションをログに記録するためにイベントが出力されます。したがって、"イベント" トレースと呼ばれます。 既定では、オペレーティング システムによって、ディスク アクセス、タスク切り替えなどのイベントが既に生成されています。 ARR のようなアプリケーションでは、削除されたフレームやネットワークの遅延などに関するカスタム イベントも追加で生成されます。Event Trace Logging (ETL)
ETL はトレースが収集 (ログに記録) されていることを示すため、トレース データを格納するファイルのファイル拡張子として一般的に使用されます。 したがって、トレースを実行すると、通常は、後で *.etl ファイルが作成されます。Windows Performance Recorder (WPR)
WPR はイベント トレースの記録を開始および停止するアプリケーションの名前です。 WPR には、正確にどのイベントをログに記録するかを構成するプロファイル ファイル (*.wprp) を指定します。 このようなwprp
ファイルは ARR SDK に付属しています。 デスクトップ PC でトレースを行う場合は、WPR を直接起動することができます。 HoloLens でトレースを行う場合、通常は Web インターフェイスを使用します。Windows Performance Analyzer (WPA)
WPA は、*.etl ファイルを開き、データを詳しく調べてパフォーマンスの問題を特定する GUI アプリケーションの名前です。 WPA を使用すると、さまざまな条件でデータを並べ替えたり、複数の方法でデータを表示したり、詳細を掘り下げて情報を関連付けることができます。Perfetto
Perfetto は、Android と Linux 用のシステム プロファイリングおよびアプリケーション トレース ツールであり、Android 9 Pie 以降で使用できます。 Perfetto は、v27 OS 以降、Meta Quest および Quest 2 デバイスでも有効になります (開発者モードが有効になっている場合)。 Perfetto トレース ビューアー UI を使用して、結果の Perfetto トレースを開いて分析できます。
ETL トレースは、任意の Windows デバイス (ローカル PC、HoloLens、クラウド サーバーなど) で作成できますが、通常はディスクに保存され、デスクトップ PC で WPA を使用して分析されます。 ETL ファイルは、他の開発者に送信して、見てもらうことができます。 ETL トレースには、ファイル パスや IP アドレスなどの機密情報が含まれる可能性があります。 ETW は、トレースの記録とトレースの分析という 2 つの方法で使用できます。 トレースを記録することは簡単であり、必要な設定は最小限です。 一方、トレースを分析するには、WPA ツールと調査する問題の両方について十分に理解している必要があります。 WPA を学習するための一般的な資料と、ARR 固有のトレースを解釈する方法のガイドラインを後で説明します。
ローカル PC でのトレースの記録
ツールについてよく理解するために、あるいは HoloLens のハードウェア制限に関連しない問題がある場合に PC でトレースを使用します。 それ以外の場合は、「HoloLens でのトレースの記録」セクションにスキップできます。 特に ARR パフォーマンスの問題は、HoloLens でのみ直接トレースする必要があります。
WPR の構成
- [スタート] メニューから Windows Performance Recorder を起動します。
- [その他のオプション] を展開します。
- [プロファイルの追加...] を選択します。
- AzureRemoteRenderingNetworkProfiling.wprp ファイルを選択します。 このファイルは、ARR SDK の Tools/ETLProfiles にあります。 プロファイルは WPR の [カスタム測定] の下に一覧表示されます。 それが有効な唯一のプロファイルであることを確認します。
- [最優先] を展開します。
- ARR ネットワーク イベントの簡易トレースをキャプチャすることだけが目的の場合は、このオプションを無効にします。
- ARR ネットワーク イベントを CPU やメモリ使用量などの他のシステム特性と関連付ける必要がある場合は、このオプションを有効にします。
- このオプションが有効になっているトレースは、多くの場合、数ギガバイトのサイズであり、WPA で保存して開くには長い時間がかかる場合があります。
その後、WPR 構成は次のようになります。
記録中
トレースの記録を開始するには、[Start] (開始) を選択します。 記録の開始と停止は、いつでもできます。その前にアプリケーションを閉じる必要はありません。 ご覧のように、ETW ではシステム全体のトレースが記録されるため、どのアプリケーションをトレースするかを指定する必要はありません。 wprp
ファイルで、どの種類のイベントを記録するかを指定します。
[Save] (保存) を選択して記録を停止し、ETL ファイルを格納する場所を指定します。
これで、WPA で開くことができる ETL ファイルが作成されました。
HoloLens でのトレースの記録
HoloLens でトレースを記録するには、デバイスを起動し、その IP アドレスをブラウザーに入力して "デバイス ポータル" を開きます。
- 左側で、[パフォーマンス] > [パフォーマンスのトレース] に移動します。
- [カスタム プロファイル] を選択します。
- [Browse...] を選択します。
- AzureRemoteRenderingNetworkProfiling.wprp ファイルを選択します。 このファイルは、ARR SDK の Tools/ETLProfiles にあります。
- [トレースの開始] を選択します。
- これで、HoloLens でトレースが記録されます。 調査する必要があるパフォーマンスの問題を必ずトリガーしてください。 次に、[Stop Trace] (トレースの停止) を選択します。
- トレースが Web ページの下部に一覧表示されます。 ETL ファイルをダウンロードするには、右側にあるディスク アイコンを選択します。
これで、WPA で開くことができる ETL ファイルが作成されました。
Meta Quest デバイスでのトレースの記録
Quest でトレースを記録するには、adb コマンドライン ツールが必要です。
- Quest で 開発者モードが有効になっていることを確認します。
adb devices
を実行し、対象となるデバイスがリストに表示されていることを確認することで、adb がそのデバイスへのアクセスを許可されていることを確認します。- ARR SDK で作成された AzureRemoteRenderingPerfetto.txt トレース構成ファイルを Tools/ETLProfiles で見つけます。
- 既定では、トレース構成は 30 秒間実行するように設定されています。 この構成は、AzureRemoteRenderingPerfetto.txt ファイルで
duration_ms: 30000
値を編集することで変更できます。
- 既定では、トレース構成は 30 秒間実行するように設定されています。 この構成は、AzureRemoteRenderingPerfetto.txt ファイルで
- PowerShell では、
$config = cat "AzureRemoteRenderingPerfetto.txt" | adb shell perfetto -c - $config --txt --o "/data/misc/perfetto-traces/trace"
を実行します。 - この行のような出力が表示されるはずです。
[522.149] perfetto_cmd.cc:825 Connected to the Perfetto traced service, TTL: 30s
- これで、Quest デバイスでトレースが記録されます。 アプリケーションを起動し、調査する問題をトリガーします。
- トレースの記録が完了すると、この行のような出力が表示されるはずです。
[552.637] perfetto_cmd.cc:946 Trace written into the output file
- 最後に、
adb pull "/data/misc/perfetto-traces/trace" "outputTrace.pftrace"
を実行してデバイスからファイルをプルできます。
Perfetto トレース ビューアー UI で開くことができる Perfetto トレース ファイルを取得できました。
WPA を使用したトレースの分析
WPA の基本
Windows Performance Analyzer は、ETL ファイルを開き、トレースを検査するための標準的なツールです。 この記事では、WPA のしくみについては説明しません。 開始するには、次のリソースを参照してください。
- 最初の概要については、入門ビデオをご覧ください。
- WPA 自体の [作業の開始] タブを調べます。ここでは一般的な手順について説明されています。 使用可能な記事を確認してください。 特に [View Data]\(データの表示\) では、特定のデータのグラフを作成する方法について簡単に説明しています。
- この Web サイトの有用な情報を確認します。しかし、そのすべてが初心者向けというわけではありません。
データのグラフ化
ARR トレースの使用を開始するには、次の点を理解しておくことをお勧めします。
画像には、トレース データのテーブルと、同じデータをグラフで表したものが示されています。
下部にあるテーブルで、黄色 (金色) のバーと青色のバーを確認します。 これらのバーをドラッグして任意の位置に配置することができます。
黄色のバーの左側にある列は、すべてキーとして解釈されます。 キーは、左上のウィンドウでツリーを構成するために使用されます。 ここには、"プロバイダー名" と "タスク名" という 2 つの "キー" 列があります。そのため、左上のウィンドウのツリー構造は 2 レベルの深さになります。 列の順序を変更したり、キー領域の列を追加または削除したりすると、ツリー ビューの構造が変わります。
青いバーの右側にある列は、右上のウィンドウでのグラフ表示に使用されます。 ほとんどの場合、最初の列のみが使用されますが、一部のグラフ モードでは複数のデータ列が必要になります。 折れ線グラフを機能させるには、その列での "集計モード" を設定する必要があります。 'Avg' または 'Max' を使用します。 1 つのピクセルが複数のイベントを持つ範囲を対象としている場合、集計モードは、特定のピクセルのグラフの値を決定するために使用されます。 このプロパティを確認するには、集計を 'Sum' に設定し、拡大と縮小を行います。
中央の列には特別な意味はありません。
"汎用イベント ビュー エディター" では、表示するすべての列、集計モード、並べ替えのほか、どの列をキーとしてまたはグラフ化のために使用するかを構成できます。 この例の画像では、フィールド 2 が有効になっており、フィールド 3 から 6 は無効になっています。 通常、フィールド 2 は ETW イベントの最初の "カスタム データ" フィールドであり、そのため、多少のネットワーク待機時間の値を表す ARR "FrameStatistics" イベントに使用されます。 このイベントのさらに多くの値を表示するには、他の "フィールド" 列を有効にします。
プリセット
トレースを適切に分析するには、ご自身のワークフローと優先するデータ表示を理解する必要があります。 ただし、ARR 固有のイベントの概要を簡単に把握できるようにするための、Windows ソフトウェア保護プラットフォームのプロファイル ファイルとプリセット ファイルが Tools/ETLProfiles フォルダーに含まれています。 完全なプロファイルを読み込むには、WPA のメニュー バーから [プロファイル] > [適用...] を選択するか、[マイ プリセット] パネル ([ウィンドウ] > [マイ プリセット]) を開いて [インポート] を選択します。 前者の場合、この段落の下の画像のように完全な WPA 構成が設定されます。 後者の場合、使用可能なさまざまなビュー構成のプリセットが作成されるだけであり、特定の ARR イベント データを確認するビューをすばやく開くことができます。
画像には、さまざまな ARR 固有のイベントのほか、全体的な CPU 使用率のビューが示されています。