【CPU負荷計測】WindowsPerformanceRecorderUI(WPRUI)でデータ採取しWindowsPerformanceAnalyzer(WPA)で解析する

負荷計測系記事もくじ
https://tera1707.com/entry/2022/02/06/144447#Profile

やりたいこと

自分の作ったアプリの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」にしてやると、

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

エラーのメモ追記

どうも、実行中のプロセスに、.NET7のプロセスがいると、このエラーが出るっぽい。
下記のページに、そういう情報があった。

https://blog.engineer-memo.com/2023/04/09/wpa-%E3%81%A7-etl-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E9%96%8B%E3%81%8F%E9%9A%9B%E3%81%AB-0x80070032-%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%97%E3%81%9F/

で、その場合、InsiderPreviewのWPAを使えばうまく開けるとのこと。

https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewSDK

ただ、今回の自分が見たい内容の範囲であれば、「Light」で取ったデータでも十分っぽいので、いったんそれでやることにした。(今回は、データの取り直しは何度でもできるので。取り直しできない場合は、今(23/05月)時点では、InsiderPreviewを使って開くのがよさそう)

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