Windows Performance Recorder (WPR)

Last Update: feedback 共有

本記事はマイクロソフト社員によって公開されております。

こんにちは、Windows サポート チームの栗木です。
本記事では、Windows 10 (1607)以降、Windows Server 2016 以降でプリインストールされている Windows Performance Recorder (WPR) をご紹介します。WPR は、管理者として起動したコマンド プロンプト または PowerShell で実行が可能です。

Windows Performance Recorder (WPR)
https://learn.microsoft.com/en-us/windows-hardware/test/wpt/windows-performance-recorder

適用対象の OS

  • すべての Windows OS

Windows Performance Recorder (WPR)

Windows Performance Recorder(WPR)は、ETW(Event Tracing for Windows)を使用してシステムのパフォーマンス データ(CPUの使用率、メモリの使用状況、ディスクアクセスなど)を収集でき、システムやアプリケーションのパフォーマンスのトラブルシューティングや最適化に利用されます。WPR が生成するパフォーマンス データは、拡張子が .etl のファイルになり、Windows Performance Analyzer (WPA) を使用して解析することができます。

Windows Performance Analyzer (WPA)
https://learn.microsoft.com/en-us/windows-hardware/test/wpt/windows-performance-analyzer

なお、WPR は C:\WINDOWS\system32\wpr.exe にプリインストールされておりますが、Windows Assessment and Deployment Kit (Windows ADK) からもインストールができます。Windows ADK でインストールできる WPR は機能が拡張されているのに加えて、コマンドではなく GUI でパフォーマンス データを取得することもできます。

Download and install the Windows ADK
https://learn.microsoft.com/en-us/windows-hardware/get-started/adk-install

ビルトイン プロファイル

一般的なシナリオや問題のトラブルシューティングに役立つように事前に構成されたさまざまなビルトイン プロファイルが用意されており、通常は用意されているプロファイルを使用して、パフォーマンス データを取得します。プロファイルの一覧は、以下のコマンドで確認が可能です。

1
wpr -profiles

ビルトイン プロファイルにある GeneralProfile は、一般的なパフォーマンストラブルシューティングに使用される基本プロファイルになっており、CPU、メモリ、ディスクなどの基本的なリソースのパフォーマンス情報の取得が可能です。

パフォーマンス データの取得

パフォーマンス データは、取得を開始する start と停止する stop オプションを使用して出力でき、一時データの保存先によって、メモリ モードとファイルモードの取得方法があります。

メモリ モード

取得中のパフォーマンス データの一時データを物理メモリ(非ページ プール)に保持する方式で、パフォーマンス データが循環するという特徴があります。物理メモリに確保されたメモリ量を上限にデータが循環するため、上限に達すると新しいデータが古いデータを上書きし始めます。これにより、最新のデータが保持され続けますが、古いデータは徐々に失われていきます。

メモリ モードは、ディスクを圧迫することなく、データを取得できるため、いつ問題が発生するかわからない事象を調査する際に使用されます。ただ、調査したい問題が発生したら、すぐにパフォーマンス データ取得を停止する必要があります。

1
2
3
wpr -start GeneralProfile

wpr -stop C:\Path\To\OuputFolder\filename.etl

ファイル モード

取得中のパフォーマンス データの一時データをファイルに保持する方式です。メモリ モードのようにデータが循環されることはないため、ディスク容量に空きがある限りデータを取得し続けることが可能です。ただ、ファイル サイズが大きいとファイルが壊れる可能性があるのに加えて、WPA による解析が難しくなりますので、実質的に10GB~20GB程度が上限になります。

ファイル モードは、メモリ モードより、長い期間のデータを取得できるため、長い期間のパフォーマンス状況を確認する必要がある問題のパフォーマンス データの取得に適しています。

1
2
3
wpr -start GeneralProfile -filemode -recordtempto C:\Path\To\TmpFolder

wpr -stop C:\Path\To\OuputFolder\filename.etl

ファイル モードでデータを取得したい場合には、filemode オプションをつけて実行する必要があり、recordtempto オプションにより、一時データの保存先を設定することができます。なお、メモリ モードは、既定の設定になりますので、追加のオプションを指定する必要はありません。

パフォーマンス データの取得状況の確認

WPRによるパフォーマンス データの取得状況は、status オプションにより確認でき、データ収集中であれば、取得時間等の情報が表示されます。

1
wpr -status

取得中のパフォーマンス データを保存せずに終了

WPRにより、開始したパフォーマンス データの取得を保存せずに終了したい場合は、cancel オプションを使用してください。

1
wpr -cancel

OS 起動からパフォーマンス データを取得 (Windows 10 1809以降、Windows Server 2019以降)

WPRにより、パフォーマンス データ取得中に端末をシャットダウンすると取得が終了してしまいます。OS 起動から自動的にパフォーマンス データを取得したい場合は、boottrace オプションと addboot オプションで取得したいプロファイルを指定して実行してください。これにより、OS 起動時に自動的にデータ取得が開始されるように設定できます。OS が起動したら boottrace オプションと stopboot オプションで取得を終了し、パフォーマンス データを保存できます。

1
2
3
wpr -boottrace -addboot GeneralProfile -filemode -recordtempto C:\Path\To\TmpFolder
# OS 再起動後
wpr -boottrace -stopboot C:\Path\To\OuputFolder\filename.etl

コマンド例

start オプションを複数回使用することで、ビルトイン プロファイルを複数個使用することが可能です。以下に調査でよく使用されるコマンド例をご紹介します。

CPU調査:
wpr -start GeneralProfile -start CPU -filemode -recordtempto C:\Path\To\TmpFolder

ディスク調査:
wpr -start GeneralProfile -start DiskIO -start FileIO -filemode -recordtempto C:\Path\To\TmpFolder

プール 調査:
wpr -start GeneralProfile -start Pool -filemode -recordtempto C:\Path\To\TmpFolder

ハンドル 調査:
wpr -start GeneralProfile -start Handle -filemode -recordtempto C:\Path\To\TmpFolder

レジストリ 調査:
wpr -start GeneralProfile -start Registry -filemode -recordtempto C:\Path\To\TmpFolder

電源 調査:
wpr -start GeneralProfile -start Power -filemode -recordtempto C:\Path\To\TmpFolder

OS 起動時のCPU・ディスク負荷調査:
wpr -boottrace -addboot GeneralProfile -addboot CPU -addboot FileIO -addboot DiskIO -filemode -recordtempto C:\Path\To\TmpFolder

出力されるパフォーマンス データ (etl ファイル) のサイズ

メモリ モードでパフォーマンス データを取得する場合は、実行環境から上限が自動的に設定され、出力される etl ファイルの最大サイズはその上限になります。ただ、データが循環する特徴があるため、実行環境や取得対象のデータによって、取得できる時間が変わり、同じ1GBの上限であっても、3分間のデータが取得できる場合もあれば、30秒間のデータしか取得できない場合もございます。

ファイル モードで取得する場合に出力される etl ファイル サイズは、実行環境、取得対象のデータ、取得時間などに依存します。事前にファイル サイズを予測することはできす、10分間パフォーマンス データを取得すると、5GB のデータが出力される場合もあれば、20GBを超える場合もあります。

以下、出力されるパフォーマンス データのファイルサイズに影響を与える要因の例になります。

  • 実行環境
    CPUコアが多い環境やマウントしているディスクが多い環境だとそれらに関連するパフォーマンス データを取得するとファイル サイズが大きくなります。また、稼働率が高い端末は、記録するパフォーマンス データが多くなるため、ほとんどアイドル状態の端末に比べてファイル サイズが大きくなります。

  • 取得対象のデータ
    ビルトイン プロファイルを複数指定すると取得範囲が広くなるため、ファイルサイズが大きくなります。

  • 取得時間
    パフォーマンス データの取得が長時間実行されるほど、収集されるデータの総量が増加し、結果としてファイルサイズも大きくなります。

参考 URL

変更履歴

  • 2024/01/05 : 本 Blog の公開