Windows Server のパフォーマンス状態を確認する際には、パフォーマンス モニターを使用した問題のトラブルシューティング に記載されているような、パフォーマンスモニターのログファイル (blg) を使用して、各種メトリックの解析を行うことがあります。
一般的には、パフォーマンス カウンター ツール に記載されている「perfmon.exe」を使用して解析を行っていきます。
このツールでも十分に解析を行うことは可能ですが、
- ファイルを変更しながら同一のパターンで何度か解析を行う
- 汎用的な解析パターンでメトリックの確認を行う
- データを Excel に貼り付けて加工しながら解析を行う
というようなケースでの利用を想定した場合、perfmon.exe でも実現することはできるのですが、少し手間がかかることがあります。
そこで、自分が使用しやすいようにするための操作が実装された Performance Monitor Analyzer というツールを Vibe Coding で作成し、公開をしました。
perfmon.exe で使用できる次の機能は含まれていないため、複数の blg ファイルの解析の効率は低いのですが、単一ファイルの解析については、普段使いできる機能が含まれているかと思います。
- 「perfmon.exe /sys /comp」相当の機能
- 複数の blg ファイルを横断して解析
Contents
Performance Monitor Analyzer の特徴的な機能
本ツールで特徴的な機能としては次のようなものがあります。
relog.exe 用のコマンドの生成
パフォーマンスモニターのファイルはバイナリフォーマットですが、1 日の期間を取得すると GB 単位のサイズになり、読み込む際にも時間がかかります。
特定の時間帯のみ解析すればよいのであれば、relog.exe を使用して、特定の時間を切り出してファイルサイズを最適化することができます。
本ツールはグラフに表示する時間範囲を指定することができるのですが、その際、relog.exe で特定の時間のみ抽出するにはどのようなオプションで実行すればよいのかを表示することができます。
カウンターパターンの登録
パフォーマンスモニターのログを解析する際には、製品に応じていくつかのカウンターのパターンがあります。
これをカウンターパターンとして、YAML ファイルに定義をしておくことができます。
現状は単一のパターンファイルにしか対応していないため「製品や確認観点でパターンファイル自体を柔軟に切り替える」ということはできないのですが、決められたパターンについては容易に呼び出すことができます。
カウンターを手動で追加した後に、該当のかうたー設定を選択して右クリックすると「カウンター設定をコピー」を使用できますので、これにより、該当の項目を YAML に追加する際のカウンター設定をクリップボードにコピーして設定ファイルへの追加に利用するということができます。
グラフ内の特定の時間帯のハイライト
ログを解析する際には、特定の時間に注視して確認を行うケースでは該当の時間帯をハイライト / ハイライトされた時間帯の中で特に注目しておきたい時間を明確にしておきたいことがあります。
これは自分で情報を確認する際ではなく、ログとして情報を残す場合や共有する場合の注視点を明確にする場合にも有用です。
時間範囲選択としてハイライトをする機能を持っており、特定の時間帯のハイライトと注視点をグラフ内で明確にすることができます。 ![]()
差分データとしてグラフをプロット
SQL Server の Batch Resp Statistics 等が該当するのですが、一部のパフォーマンスモニターでは累積値で情報を持っているものがあります。
このような情報を活用する場合、ひとつ前のプロットとの差分を算出し取得間隔で割る必要があり、これを perfmon.exe で実行しようとした場合には一度 CSV 等で出力して Excel 等のスプレッドシートに取り込んで差分を算出する必要がありました。
本ツールでは差分の算出を行った値でプロット化ができますので、ツール内で累積値の差分を確認することができます。
Batch Resp Statistics ではどのような時間範囲のクエリの面積が多いかといった確認をすることがあるのですが、その際にはこの表示が活用できます。
グラフの時間帯の拡大 / 縮小の操作
グラフを確認していると特定の時間帯をさらに拡大したい場合があります。
perfmon.exe でもこのような可能であり、本ツールでもこれらの操作を行うことができます。
マウスのホイールスクロールで拡大 / 縮小ができますので、時間範囲のスクロールを操作しなくても特定の時間のデータをさらに拡大して粒度を細かく見ることができます。
カーソル位置の値の表示
グラフ内でカーソルを動かすと、カーソル位置の時間の情報がグラフ内に表示されます。
クリックするとピン止めされますので、情報を共有する場合などに活用できるかと。
グラフのクリップボードへのコピー
ログ解析資料の作成 / SR での情報共有をする場合、パフォーマンスモニターのグラフをコピーして使用することが多々あります。
本ツールではグラフをクリップボードにコピーする機能があります。
現在は、凡例や統計情報はコピーされていないので、どこまでグラフ領域をコピーするかは今後改善の余地がありますが、現在は次の画像のようにグラフ領域をコピーすることができますので、グラフの共有の一助になるかと思います。
自動スケール設定
この機能も perfmon.exe に含まれていますが、本ツールでもカウンターの自動スケール設定があります。
パフォーマンスモニターの各項目の関連性を見る場合、同様の波形 / スパイクが重なるように値のスケールを変更しながら値の解析を行う必要があるのですが、取り込んだカウンターに応じてスケールを自動的に調整する機能は本ツールにも実装されています。
(設定ファイルでもデフォルトのスケールを設定できます)
各カウンターのスケールだけでなく、Y 軸の値についても自動調整できるようになっていますので、上限が 100 だと視認性が低い場合などは上限値を変更することが可能です。
データテーブル
読み込んだログファイルの無内容はデータテーブルとしても表示が行われます。
ミニグラフも表示されるようになっているので、該当のデータのみがグラフ化された情報も確認することができます。
このデータテーブルでは、各プロットのデータを表示しているのですが、選択中のデータの表部分にはソート機能がありますので、「値が高かった時間帯」をデータテーブルから把握することが可能です。
また、データテーブルの内容は CSV 出力 / TSV 形式でクリップボードにコピーする機能があります。
私が使うのはもっぱら TSV コピーになりますが、この機能を利用して「TSV でクリップボードにコピー」-「Excel に貼り付け」-「加工して利用」ということを行っています。
他にも perfmon.exe を使いやすくするための細々とした調整は行っているのですが、大きな特徴的な機能としてはこのような内容となります。
標準の perfmon.exe のほうが優れている点もあり、本ツールで改善が必要な個所は、まだまだあるのですが、ある程度、通常運用で使用できるものとなったので今回、公開をしてみました。