【CPU負荷計測】VS diagnostics.exeでデータ採取しVisualStudioで解析する

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

内容

この動画を見て学んだことのメモ。

Performance with Profiling Part 3: Profiling and Production

www.youtube.com

前提

VisualStudio2022 とそのツール群を使用。

VisualStudio 2022 17.4.4

概要

Part3は、VSを使わずに行う本番運用環境のプロファイリングの話。

※プロファイル取得にはVSはいらないが、解析時には、VSを使う。

※part2は、プロファイル取得も解析もVSで行う、開発中、デバッグ中のプロファイルの話だった。

VSがあるなら、VSのプロファイル画面で、「実行中のプロセスをプロファイル」を選んでやれば、 プロファイリングができる。が、本番環境でそれができる(VSが入っている)ことは稀。

VS diagnostics.exeという診断ツールがある。 VSがなくても、診断ができるようになるコマンドラインツール

nativeとマネージドの両方で使える。

※これとは別で、クロスプラットフォーム(.NET)のプロファイルツールもある。(ON.NET)

ダウンロード

https://visualstudio.microsoft.com/ja/downloads/

このページをずっと下の方に行った、コレ。
(リモートデバッグするときのツールと同じっぽい)

インストール後

インストール後のツールのありか

下記にある。(VS2022のリモートツールの場合)

C:\Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\VSDiagnostics.exe

動画中に出てきた、VSDiagnostics.exeに食わせるコンフィグファイルのサンプル(代表的なもの)は下記にある様子。

C:\Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\AgentConfigs

動画中では、CpuUsageBase.jsonを使っていた。

計測開始

とりあえず、これでCPU使用率を測ろうと思うと、下記のコマンドで測れる。

C:\Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collectorにcdして、

VSDiagnostics.exe start 1 /attach:4724 /loadConfig:AgentConfigs\CPUUsageLow.json

  • ※「1」はセッション番号。0~255の間で好きな番号を入れる。
  • ※「4724」は、計測したいプロセスのpid。
  • ※「\CPUUsageLow.json」は、計測の種類。‘C:\Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\AgentConfigs‘フォルダの中にあるjsonが使われる。
    CPU関連のjsonの中身に出てくるcpuSampleRateは、1秒間にCPU使用率のサンプリングをする数のこと。数字が大きいと、高頻度でサンプルするので、プロファイラ自体の負荷が上がるっぽい。

計測終了

計測終了は、

VSDiagnostics.exe stop 1 /output:C:\Users\masa\Desktop\logfilename.diagsession

  • ※「1」は、startで指定したセッションIDを指定する。
  • ※outputはそのまんま、ログを記録するファイルパスを書く。
  • ※ログファイルの拡張子は、.diagsessionがよいっぽい。(VSでプロファイラのデータを保存するときの拡張子と同じにする)→VSでそのまま読み込める。

参考

MSの動画「Performance with Profiling Part 3: Profiling and Production」

https://www.youtube.com/watch?v=RkU2Rlv1a5g&list=PLReL099Y5nRf2cOurn1hI-gSRxsdbC27C&index=3

VSDiagnostics.exeのページ

https://learn.microsoft.com/ja-jp/visualstudio/profiling/profile-apps-from-command-line?view=vs-2022