高度な概念

オーバーフローによるPVS RAMキャッシュの分析

この資料では、 ディスクへのオーバーフローを伴うフィーチャ RAM キャッシュを使用する場合に RAM キャッシュサイズを正確に決定する方法について説明します。

ディスクへのオーバーフローを伴うRAMキャッシュは、vDisk書き込みがWindowsの非ページプールRAMに最初に書き込まれるPVS機能です。ユーザーが指定したRAMキャッシュサイズが指定したサイズに達すると、PVSはRAMキャッシュコンテンツをディスクにフラッシュして、新しいデータ用のスペースを作成します。RAM キャッシュのサイズは、ワークロードのパターンやその他のバリエーションに基づいて変動します。PoolMon は、pooltag VhdRを検索して、現在の RAM キャッシュ使用量のスナップショットを撮るツールです。

このPVS機能について詳しくは、オーバーフローを伴う RAM キャッシュの使用に関するブログを参照してください。

重要

この記事で説明するツールは、Provisioning Services に関する高度な知識を持つ管理者を対象としています。この情報を使用して、プロセスモニタ (ProcMon) など、一般的に使用されるツールやプロセスを使用する以外に、パフォーマンス関連の問題をデバッグできます。この情報により、PVSドライバがどのように機能するかをよりよく理解できます。

メモリプールモニタ

PoolMon (poolmon.exe) は、メモリプールモニターを参照します。これは、OSによって収集されたデータ(システムページングおよび非ページングカーネルプールからのメモリ割り当て、およびターミナルサービスセッションに使用されるメモリプール)を表示するために使用されます。このデータは、プール割り当てタグによってグループ化されます。

非ページプールメモリでは、プールモンツールを使用してVhdRで表されるpooltagの存在を確認できます。VhdR は RAM キャッシュの割り当てに使用されます。このタグは pooltag VhdLとともに、非ページプールメモリ内の RAM キャッシュに関連付けられたデータを分析するスクリプトを作成する場合に役立ちます。

ヒント

開発者およびテスターは通常、ドライバが作成されたとき、ドライバコードが変更されたとき、またはドライバのストレステスト時にメモリリークを検出するために、PoolMon を使用します。PoolMon は、テストプロセスの各段階で使用して、ドライバのメモリ割り当てと解放操作のパターンを検証することもできます。たとえば、ドライバが任意の時点で使用しているプールメモリの量を判断するために使用できます。メモリプールモニターの使用方法について詳しくは、Microsoft開発者ネットワークサイトを参照してください。

Windows パフォーマンスアナライザの使用

Windows パフォーマンスアナライザー (WPA) は、Windows パフォーマンスレコーダー (WPR) によって記録されるイベント (特に Windows のイベントトレーシング) に関連するグラフとデータテーブルを作成できるツールです。WPAを使用すると、PVSドライバ、ストレージスタック、およびVHDXディスクへの書き込み時に発生するパフォーマンス関連の問題をデバッグする際に、パフォーマンスのボトルネックを特定できます。これらのツールを使用すると、評価を実行し、分析用のイベントトレースログファイルを開くことができます。Windows パフォーマンスアナライザーについて詳しくは、Microsoft Developer Networkサイトを参照してください。

WPA および WPR は、Windows Assessment and Deployment Kit(Windows ADK)に含まれています。この導入キットについて詳しくは、Microsoft Web サイトを参照してください。Windows パフォーマンスアナライザーの最新バージョンについては、Microsoft の Web サイトを参照してください。

Windows パフォーマンスアナライザとProvisioning Services しくみ

PVSは、Windows用のイベントトレース(ETW)メカニズムによってキャプチャされたイベントを生成します。この機能は、ユーザーモードアプリケーションとカーネルモードドライバーによって発生したイベントをトレースおよびログに記録する方法を提供します。ETW は Windows OS に実装され、開発者が一連のイベントトレース機能を使用するための簡単な方法を提供します。詳しくは、Microsoft開発者ネットワークを参照してください。

Windows パフォーマンスアナライザのインストール

WPA をマスターイメージにインストールする必要があります。

WPA は、Windows 10 オペレーティングシステムの最新の SDKの一部です。WPA と WPR の両方を含むパフォーマンスツールキットを選択的にインストールできます。

インストール用に選択された Windows パフォーマンスツールキット機能のイメージ

WPAとWPRをインストールした後、WPRを使用してPVSディスクとファイルI/Oアクティビティをシミュレートします。このトラフィックが作成されたら、WPA を使用してデータを分析します。次のアクションを実行するには、次の手順に従います。

  1. ターゲットデバイスで WPR を起動し、[プロファイルの追加] をクリックします。

  2. [プロファイルの追加] 画面で、PVS固有のテンプレートまたはプロファイルを参照します。これにより、PVSイベントプロバイダーによって生成されたイベントを受け取ることができます。プロファイルをインポートした後、WPR 画面に戻り、分析する追加オプションを選択し、[スタート] ボタンをクリックします。

    Windowsパフォーマンスレコーダーのイメージ

    オプションを追加し、「開始」をクリックすると、PVSアクティビティをシミュレートできます。この例では、小さなメモリバッファ(128 MB)を持つ新しいライトキャッシュが作成されます。より大きなファイル (279 MB) が C: UsersUserDocumentstest.bin にコピーされ、PVS ドライバーが非ページプールにデータを書き込んで、フェイルオーバーが発生したときに何が起こるかを検証し、ローカルディスク (D: vdiskdif.vhdx など) への書き込みを開始します。ファイルをコピーし、バッファの容量を強制的に超えたら、WPRで取得プロセスを停止し、WPAを使用して結果を開くことができます。

  3. WPA を使用して、 グラフエクスプローラを開き、[システムアクティビティ] を展開し、[汎用イベント] を選択します。例として以下の画面を使用して、「データの書き込み」および「RAMデータの書き込み」セクションの内容を表示します。この情報には、D: ドライブ上のVHDXファイル(348ファイル)を含め、C: vDisk(2419ファイル)に書き込まれているファイルの正確な数が表示されます。

    Windows パフォーマンスアナライザの結果の例

    ヒント

    WriteData は RAM にキャッシュされ、ディスクにフラッシュされていないため、表示されている値よりも小さくなります。

  4. [グラフエクスプローラ] 画面に戻り、[ファイル IO] を展開し、[タイプ別にカウント] を展開します。以下の図は、IO(ファイル数)の削減と、C: UsersUserDocumentstest.bin への書き込みと、D: vdiskdif.vhdx にあるスピルオーバー書き込みキャッシュファイルの間の所要時間を示しています。このデータを使用して、潜在的なパフォーマンスのボトルネックを表示し、PVSフィルタドライバを問題として効果的に除外できます。

    Windows パフォーマンスアナライザの結果で、ファイルの IO と種類ごとの個数が示されている例

  5. ファイルカウントと書き込み間隔 (ログファイルとスピルオーバーライトキャッシュの間の) を確認したら、デバッグプロセスをさらに進んで、ディスクオフセットを使用してデータが最初に書き込まれる場所 (および最後に書き込まれる場所) を把握できます。Windows パフォーマンスアナライザで、[グラフエクスプローラ] を開き、[システムアクティビティ] を展開し、[汎用イベント] を選択します。列ビューを変更して、WPA ツールがさまざまな記憶域レイヤーのデータ遷移を表示できるようにします。さらにデバッグするには、PVS環境に戻り、RAMキャッシュバッファを0 MBに設定してから、レコーダー(WPR)とアナライザー(WPA)ツールを再実行します。以下の図は、ディスクへのスピルオーバーの発生方法を示しています。

システムアクティビティと一般的なイベントを表示するWindowsパフォーマンスアナライザーの例

オーバーフローによるPVS RAMキャッシュの分析