Windows Performance Recorder(WPR)でプロセス毎のCPU使用率を記録する/見る

もくじ
https://tera1707.com/entry/2022/02/06/144447

やりたいこと

自分の作ったアプリのCPU使用率のログを取って、変にCPUを食ったりしてないか、テストしたい。

やったこと

Windows Performance Recorder で、CPU使用率のログをとる。

Windows Performance Recorder、略してWPR

WPRには、コマンドラインで使うものと、UIを持っているWPRUIというものがある。

入門として、UIのあるWPRUIでやってみる。

WPRUIをダウンロード/インストールする

WPRを使うには、Windows Assessment and Deployment Kit が必要。

Windows Assessment and Deployment Kit 、略して Windows ADK

ADKは、下記からダウンロードする。

https://learn.microsoft.com/en-us/windows-hardware/test/wpt/windows-performance-recorder

ダウンロードしたインストーラーのexeを実行すると下記がでる。

「・・・インストールします」の方を選んで「次へ」を押す。

好きな方を選んで「次へ」を押す。 次にライセンスに同意する画面がでるので、同意する。

次に、インストールするものを選ぶ画面がでる。

標準で複数の機能にチェックが入ってるが、 今回は、パフォ―マンス計測の機能のみ欲しいので、「Windws パフォーマンス ツールキット」だけにチェックを入れて、「インストール」を押す。 (別に標準のまま複数機能インストールしてもOK)

これでインストールは完了。

WPRUIを起動する

Windowsキー + R を押して、「wprui」と入力し、エンターを押すと、WPRUIが起動する。

「More options」を押してオプションを開くと、なにやらいろいろな設定が出てくる。

が、今のところ、それぞれどういう意味なのかは勉強不足で不明。
今回はとりあえず最低限やりたいことだけやることにする

その画面で、「Start」を押すと、計測が始まる。

計測中、「Start」ボタンが「Save」に代わるので、計測終わりたいタイミングで「Save」を押す。

押すと、下図のようになる。

フォルダ、ファイル名を指定して、画面下部の「Save」を押す。 ファイルの拡張子は「.etl」。

すると、指定したフォルダに、指定したetlファイルができる。 画面下に「Open in WPA」ボタンが出てくるので、それを押す。

WPAというのは、Windows Performance Analyzerのこと。WPRで取ったデータを、解析するためのもの。 (Windows ADKをインストールしたときに一緒に入るっぽい)

※エラーのメモ

今回の私の場合、Open in WPA を押すと、下図のようなエラーがでて、WPAでデータを開くことができなかった。(開く途中で強制的に?WPAが終了してしまう)

なぜエラーなのかは不明なのだが、いろいろ試してみた結果、

記録開始時の「Detail level」の設定を、「Verbose」から「Light」にしてやると、

なぜか、データが開けるようになった。(なぜかは不明。がっつりデータには、予期しないデータが含まれてしまう??)

WPAでデータを見る

WPRUIでログを取った後の「Open in WPA」ボタンを押すと、Windows Performance Analyzer(WPA)で取ったデータのログ(.etl)を解析することができる。

※「Open in WPA」ボタンを押さなくても、WIn+R で「ファイルを指定して実行」を開いて、そこで「WPA」と入力してENTERを押すと、WPAを開くことができる。  そこから、[File] > [Open] で採取したログ(.etl)を選ぶと、同じデータを見ることができる。

WPRで取ったデータをWPAで開くと、下図のような画面がでる。

今回は、CPU使用率をみたいので、画面左の「Computation」の左横の矢印を押して開いたところにある、いくつかあるCPU Usageの中の「CPU Usage(Precise)」をダブルクリックして開く。

そうすると、下図のような画面になる。

プロセス毎の、CPUの使用率が見れる。

この欄内で、自分の見たいプロセスを右クリックしてコンテキストメニューを出し、「Filter to Selection」を押すと、 選んだプロセスのみのデータを表示してくれる。

ためしに、VisualStudioのプロセス(devenv.exe)だけの表示にしてみたのが下記。

こうすると、例えば自分の作ったプロセスだけのCPU使用率をみる、などができる。 これだけでも、基本的な、変にCPUくってないか、とかの確認はできそう。

次やってみたいこと

WPRUIで今回CPU使用率を簡単に測ってみたが、他にもいろいろ測れそう。 どんなことができるか、見てみたい。

また、 今回はUIがあるWPRUIを使ったが、コマンドで実行する「WPR」の方を使うと、バッチ等で自動で計測したり、人に計測してもらうときの設定等の簡略化などができそう。 調べてみたい。

参考

Windows Performance Recorder 公式

https://learn.microsoft.com/en-us/windows-hardware/test/wpt/windows-performance-recorder