テクニカルペーパー:オーバーフローによるCitrix Provisioning RAMキャッシュの分析
このテクニカルペーパーでは、ディスクへのオーバーフローが発生する機能 RAM キャッシュを使用する場合の RAM キャッシュサイズを正確に決定する方法について説明します。
ディスクへのオーバーフローを伴うRAMキャッシュはCitrix Provisioning(PVS)の機能であり、vDiskへの書き込みは最初にWindowsのページングされていないプールのRAMに書き込まれます。ユーザーが指定したRAMキャッシュサイズが指定されたサイズに達すると、PVSはRAMキャッシュの内容をディスクにフラッシュして、新しいデータ用のスペースを作ります。RAM キャッシュサイズは、ワークロードパターンやその他のバリエーションに基づいて変動します。PoolMon は、pooltag VhdRを検索して、現在の RAM キャッシュ使用量のスナップショットを撮るツールです。
このPVS機能の詳細については、 オーバーフローを伴うRAMキャッシュの使用についてこちらを参照してください 。
重要
この記事で説明するツールは、Provisioning Services に関する高度な知識を持つ管理者向けです。この情報は、Process Monitor (ProcMon) などの一般的に使用されるツールやプロセスだけでなく、パフォーマンス関連の問題のデバッグにも役立ちます。この情報により、PVSドライバーがどのように機能するかをよりよく理解できます。
メモリプールモニター
PoolMon (poolmon.exe) は、Microsoft のメモリプール監視ツールを指します。OS によって収集されたデータ (システムページングされたカーネルプールとページングされていないカーネルプールからのメモリ割り当て、およびターミナルサービスセッションに使用されたメモリプール) を表示するために使用されます。このデータは、プール割り当てタグによってグループ化されます。
非ページプールメモリでは、 PoolMon ツールを使用して、 vHDRで表されるプールタグの存在を確認できます。VhdR は RAM キャッシュの割り当てに使用されます。このタグは pooltag VhdLとともに、非ページプールメモリ内の RAM キャッシュに関連付けられたデータを分析するスクリプトを作成する場合に役立ちます。
ヒント
開発者やテスターは通常、PoolMon を使用して、ドライバーの作成時やドライバーコードの変更時のメモリリークを検出したり、ドライバーのストレステストを行ったりします。また、テストプロセスの各段階で PoolMon を使用して、ドライバのメモリ割り当てと空き操作のパターンを検証することもできます。これには、ドライバが任意の時点でどのくらいのプールメモリを使用しているかを判断する場合も含まれます。メモリプールモニターの使用方法の詳細については、 Microsoft のマニュアルを参照してください。
Windows パフォーマンスアナライザの使用
Windows パフォーマンスアナライザー (WPA) は、Windows パフォーマンスレコーダー (WPR) によって記録されるイベント (特に Windows のイベントトレーシング) に関連するグラフやデータテーブルを作成できるツールです。WPAを使用すると、PVSドライバー、ストレージスタック、およびVHDXディスクへの書き込み時に発生するパフォーマンス関連の問題に関連する問題をデバッグする際に、パフォーマンスのボトルネックを特定できます。これらのツールを使用すると、評価を実行し、分析用のイベントトレースログファイルを開くことができます。 Windows パフォーマンス・アナライザの詳細については、Microsoft 開発者ネットワークのサイトを参照してください。
Windows パフォーマンスアナライザとProvisioning Services しくみ
PVSは、Windows用イベントトレーシング(ETW)メカニズムによってキャプチャされたイベントを生成します。この機能により、ユーザーモードアプリケーションとカーネルモードドライバーによって発生したイベントをトレースしてログに記録することができます。ETW は Windows OS に実装され、開発者が一連のイベントトレース機能を使用するための簡単な方法を提供します。詳細については、 こちらを参照してください。
Windows パフォーマンスアナライザのインストール
WPA をマスターイメージにインストールする必要があります。
WPA は Windows デスクトップ OS 用の最新の SDK の一部です。WPA と WPR の両方を含むパフォーマンスツールキットを選択的にインストールできます。
WPA と WPR をインストールしたら、WPR を使用して PVS ディスクとファイル I/O アクティビティをシミュレートします。このトラフィックが作成されたら、WPA を使用してデータを分析します。これらのアクションを実行するには:
- ターゲットデバイスで WPR を起動し、[ プロファイルの追加] をクリックします。
-
「プロファイルの追加」画面で、PVS 固有のテンプレートまたはプロファイルを参照します。これにより、PVSイベントプロバイダーによって生成されたイベントを受け取ることができます。プロファイルをインポートしたら、WPR 画面に戻り、分析したい追加オプションを選択し、[ 開始 ] ボタンをクリックします。
オプションを追加して [開始] をクリックすると、PVS アクティビティをシミュレートできます。この例では、小さなメモリバッファ (128 MB) を持つ新しい書き込みキャッシュが作成されます。より大きなファイル (279 MB) が C:\Users\User\Documents\test.bin にコピーされ、PVS ドライバーはページングされていないプールにデータを書き込まなければなりません。これにより、フェイルオーバーが発生してローカルディスク (たとえば、D:\vdiskdif.vhdx) への書き込みが開始されます。ファイルをコピーしてバッファの容量を強制的に超えたら、WPR でキャプチャプロセスを停止し、WPA を使用して結果を開くことができます。
-
WPA を使用してグラフエクスプローラーを開き、「 システムアクティビティ 」を展開して「 汎用イベント」を選択します。下の画面を例に、「データの書き込み」セクションと「RAMデータの書き込み」セクションの内容を確認してください。この情報には、D: ドライブの VHDX ファイル (348 ファイル) を含め、C:\vDisk に書き込まれているファイルの正確な数 (2419 ファイル) が表示されます。
ヒント
WriteData は RAM にキャッシュされており、ディスクにフラッシュされていないため、表示されている値よりも小さくなっています。
-
グラフエクスプローラ画面に戻り 、[ ファイル IO ] と [ タイプ別カウント] を展開します。以下の図は、IO (ファイル数) の減少と、C:\Users\User\Documents\test.bin への書き込みから D:\vdiskdif.vhdx. にあるスピルオーバー書き込みキャッシュファイルへの書き込みまでにかかる時間を示していますこのデータを使用して、潜在的なパフォーマンスのボトルネックを把握し、PVSフィルタードライバーが問題であるかどうかを効果的に除外できます。
-
ファイル数と書き込み間隔 (ログファイルとスピルオーバー書き込みキャッシュの間) を確認したら、デバッグプロセスをさらに進めて、ディスクオフセットを使用してデータが最初に書き込まれる場所 (および書き込まれる場所) を把握できます。Windows パフォーマンスアナライザーで、グラフエクスプローラーを開き、「 システムアクティビティ 」を展開し、「 汎用イベント」を選択します。列ビューを変更して、WPA ツールがさまざまなストレージレイヤーのデータ遷移を表示できるようにします。さらにデバッグするには、PVS環境に戻り、RAMキャッシュバッファを0 MBに設定してから、レコーダー(WPR)およびアナライザー(WPA)ツールを再実行します。以下の画像は、ディスクへのスピルオーバーがどのように発生するかを示しています。