スレッドの問題を発見するための一般的な手順
Performance Investigator for Xbox (PIX) または Windows Performance Analyzer (WPA) のいずれかを使用して、スレッドの問題を追跡することができます。 PIX は、ゲーム開発者向けのきめ細かいインターフェイスを提供し、最も有用なデータが常に先頭に置かれるように情報を整理します。 一方、WPA はフィルター処理を行うことなくすべての情報を提供します。 ユーザーは、急な学習曲線になりうる独自のフィルターを作成する必要があります。 ただし、それにより、システムの生データに対するより高いレベルの制御と洞察を提供できます。
PIX は、Microsoft Game Development Kit (GDK) の一部としてインストールされます。 WPA は Microsoft Store から無料でダウンロードすることができます。 Windows アセスメント & デプロイメント キットの一部として入手することもできます。
PIX
PIX でのスレッド動作の分析では、まずタイミング キャプチャを取得します。これを出発点として使用して、このトピックで説明するすべての種類のスレッドの問題を調査します。 タイミング キャプチャと各ビューの機能の詳細については、「PIX タイミング キャプチャ (NDA トピック)認可が必須です」を参照してください。 次の手順に従って、PIX でタイミング キャプチャを実行します。
PIX を開き、本体に接続します。 PIX のセットアップの詳細については、「セットアップと使用の開始 (NDA トピック)認可が必須です」を参照してください。 接続した本体で分析するゲームが実行されていることを確認してください。
本体に接続すると、本体の IP アドレスとともに [Xbox Connection] (Xbox 接続) タブが表示されます。 図 1 に示すように、[Options] (オプション) を選択して [Start Timing Capture] (タイミング キャプチャの開始) セクションを展開します。
図 1. PIX の [Start Timing Capture] (タイミング キャプチャの開始) タブを表示します
[Callstacks on context switches] (コンテキスト スイッチのコールスタック) が選択されていることを確認します。
ストップウォッチのアイコンを選択してキャプチャを開始します。 [System Monitor] (システム モニター) ビューでは、キャプチャされている期間を表すグラフのセクションが強調表示されます。
必要なデータをキャプチャしたら、もう一度ストップウォッチのアイコンをクリックして、キャプチャを停止します。 図 2 に示すように、新しいタブが開き、キャプチャのタイムライン ビューが表示されます。
図 2. PIX のタイミング キャプチャの既定のビューを表示します
注意
タイムライン、要素の詳細、Range Details (範囲の詳細) というラベルが付けられた 3 つのメイン ビューがあります。 マウスのホイール ボタンを使用して上下にスクロールすると、[Timeline] (タイムライン) ビューを移動して、個々のスレッドのタイムラインを確認できます。
タイムラインの一部を選択して移動し、関心のある領域を拡大します。
- タイムラインを右クリックすると表示されるこのコンテキストメニューから、[Zoom to Selected Range] (選択した範囲にズーム) を選択することもできます。
- また、[Visible Time Range] (表示されている時間範囲) や[Selected Time Range] (選択した時間範囲) を直接編集することもできます。 マウスの右ボタンを長押ししてパンしたり、Ctrl キーを選択してマウスの ホイール ボタンをスクロールして拡大表示したりすることもできます。
WPA
WPA は、イベント トレース ログ (ETL) ファイルを表示するために使用されるツールです。 WPA を使用するには、最初の手順として ETL キャプチャを作成します。 これを行う方法の 1 つは、ゲーム OS 内で実行されている xperf.exe を使用することです。これにより、収集されるデータを最も柔軟に選択できます。 ただし、ETL データを収集するための別のオプションとして、GDK コマンド プロンプトから xbperf (NDA トピック)認可が必須です を使用することもできます。
WPA プロファイルは、ソフトウェアをダウンロードした後、GDKSamples>ツール>WPAProfiles フォルダーの下にある GDK サンプルの中にあります。 WPA プロファイルは、整合性のある形式で WPA インターフェイスを設定するために作成される構成ファイルです。 サンプルに含まれているファイルは、「スレッドの問題の検出」セクションの図で使用されているものと同じです。
次の手順を使用して ETL キャプチャを作成し、WPA プロファイルを管理します。
- 付録A: ETL トレースを作成するためのバッチ ファイルは、ゲーム OS 内で実行されている xperf.exe を使用して ETL キャプチャを取得するサンプル バッチ ファイルです。 既に ETL キャプチャの取得に慣れている場合を除き、このバッチ ファイルを使用することをお勧めします。
- GDK コマンド プロンプトからバッチ ファイルが実行された後、ゲーム OS が実行されていることを確認してキャプチャを開始し、その後ウィンドウが入力を受け取るまでキャプチャを続行します。
注意
これらのキャプチャは非常に大きくなる可能性があるため、より多くのデータが必要であることがわかっている場合を除き、1 分程度から始めてください。 キャプチャが停止すると、ETL ファイルが現在の作業ディレクトリにコピーされ、次にそのファイルが開かれます。
- 各 [Finding Threading Issues] (スレッドの問題の検出) ページには、データを整理するためにサンプル画像にどの WPA プロファイルが読み込まれたかが記されます。 [Profiles] (プロファイル)>[Apply...] (適用)>[Browse...] (参照) を選択して同じプロファイルを読み込み、.wpaProfile ファイルを開きます。
- WPA プロファイルは、新しいタブでビューが自動的に開かれます。各ビューには、グラフとデータ テーブルが含まれています。 WPA のすべてのビューは、ETL イベントによって収集されたデータの関連サブセットを示す、データ テーブルの列と設定のさまざまな組み合わせです。
- グラフには、テーブル内の列の順序に応じて、異なるデータが表示されます。 ビューは、テーブルの列見出しを右クリックして編集することもできますが、提供されている .wpaProfile ファイルは、各種類の問題を構成するための適切な出発点となります。
注意
ビューの一番上にあるバーで名前を選択し、[リセット] を選択することで、いつでもビューを元の設定に戻すことができます。 お気に入りの設定を見つけたら、それを保存することもできます。 同様に、[Profiles] (プロファイル) メニューからビューのグループを保存することもできます。 WPA は .pdb ファイルを処理し、検索を高速化するためにキャッシュを保存します。 これは、[SymCache] タブで SymCache 生成フォルダーのパスを選択すると見つかります。
場合によっては、WPA は各 .pdb ファイルのキャッシュを構築する必要があるため、シンボルの読み込みに時間がかかります。 .pdb ファイルが大きい場合、これには数分かかることがあります。 ただし、これを行う必要があるのは .pdb ファイルが最初に見つかったときだけです。
- グラフの一部を選択しマウスを移動させてグラフを強調表示してから、右クリックして [zoom] (拡大) を選択すると、グラフの一部を拡大表示することができます。 コンテキスト メニューの [Select Time Range...] (時間範囲の選択) を使用して、より正確な期間を強調表示することもできます。