負荷計測系記事もくじ
https://tera1707.com/entry/2022/02/06/144447#Profile
内容
この動画を見て学んだことのメモ。
Performance with Profiling Part 3: Profiling and Production
前提
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