PerfView / Windows Performance Analyzer (WPA) の使い方
一般的なCPU使用率を見るくらいであれば、Windows標準のPerfMonで見ることができます。
ただ、Programerとしてはさらに細かいProcess、ThreadがCPUコアのどれでどのくらい占有しているかまで知りたい変態さんもいるのではないでしょうか?
そのような詳細なパフォーマンス解析には Microsoft 提供の PerfView や Windows Performance Analyzer (WPA) が便利です。
1. ダウンロード方法
PerfView
- 公式サイト(Microsoft Research)
- ダウンロード手順
- Releases ページを開く
-
PerfView.exe
をダウンロードするだけで利用可能(インストーラ不要)
Windows Performance Analyzer (WPA)
下記のいずれかで入手します。
-
Microsoft Storeで入手できる
https://apps.microsoft.com/detail/9n0w1b2bxgnz?hl=en-us&gl=US -
Windows ADK (Assessment and Deployment Kit) に含まれる
https://learn.microsoft.com/ja-jp/windows-hardware/get-started/adk-install
セットアップ時に Windows Performance Toolkit を選択するとインストールされる
2. インストール方法
PerfView
- ダウンロードした
PerfView.exe
をそのまま実行するだけ - インストール不要でポータブルに利用可能
WPA
- Windows ADK セットアップを起動
- Windows Performance Toolkit にチェックを入れる
- インストール完了後、スタートメニューから
Windows Performance Analyzer
を起動できる
3. シンボルの保存場所設定
トレースを解析する際には シンボル情報 (pdb) が必要になります。
オフライン環境で解析する場合もあると思いますので、シンボル情報の保存先を設定しておきます。
PerfViewのシンボルサーバの設定
File
→ Set Symbol Path
に設定
デフォルトでは"C:\Users\UserName\AppData\Local\Temp\SymbolCache"のような位置に設定されていますので、保存したい位置に変えます。
4. 基本的な使い方
PerfView
-
Start Collection
でトレース開始 -
Stop Collection
で.etl.zip
ファイルが保存されます -
PerfViewでは表形式である程度のデータが見られるようですが、WPAの方が見やすくなっているので使うことはないでしょう
Windows Performance Analyzer (WPA)
1.'.etl'ファイルをダブルクリックするとWPAが起動します。
-
情報量の多さから、初見では使い方がよくわからないでしょうが、重要なのは、Legend(色の凡例)の左隣をGraphで見せてくれるということです。
右下のGraphはCPUの%Weightを色づけてGraphにしているし、右上のGraphはTimeを色づけて見せてくれるのです。
-
表の列を右クリックしてMoreを押すと項目を増やすことができます。
列の並びでいろいろGraphが変わるので試してみてください。
表の中の黄色(大区分)と青(小区分)のセパレータでも解析の表示が変わってくるようです。
-
表示する内容は下記の場所で選択
5. Graph例:各 CPU CoreのProcess 毎に使用率グラフ表示
WPA
-
Graph Explorer
→System Activity
→CPU Usage (Sampled)
を選択 - 列をCPU,Process,Stack でグルーピングすると、CPU毎のProcessのCPU使用率を表示します。
3.ただし、GraphはCPU毎に分けて表示されず、全部積算されるので区別が難しいです。
Filterで見たいCPUに絞って表示してもいいし、
Graphの下段2つのようにIdleを表示させるとCoreが100%近くまでになるため、区別が付くと思います。
6. Graph例:TimeLineでProcessの使用率グラフと表を表示
- 使用率のデータを表で実際の数字を見たり、Excelなどにコピーしたい場合もあるのではないでしょうか?
その場合は下記のように列を並べることでTimeStampで表示することもできます。
- 残念ながら、TimeStampに対して列には1つのProcess分しか表示できなさそうなので、この表から各Processのデータを読み取れるのは大変態のあなたしかできないとは思いますが、Excelなどにコピーをして、マクロなどで集計すれば何かしらのデータとして活用できるかもしれません。
📌参考: