負荷計測系記事もくじ
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のプロセスがいると、このエラーが出るっぽい。
下記のページに、そういう情報があった。
で、その場合、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