LoginSignup
7
7

More than 3 years have passed since last update.

Windowsのシステムのパフォーマンスカウンターを取得(typeperfコマンド)

Posted at

経緯

Windows上にて作ったプログラム動作中のシステムの負荷状況(CPU、メモリ、通信量)などを確認したいけど、
Windows標準のタスクマネージャーや、リソースモニターを目視で確認してもログとしては使いにくいので、
何かないか調べたところ、typeperfコマンドを使えば、同様の情報を拾えて、CSV形式にに保存できそうでしたので、
使い方を調べて使ってみました。

パフォーマンスカウンターの一覧取得

typeperfコマンドで監視できる対象(パフォーマンスカウンター)は大量にあります。
以下コマンドにて、パフォーマンスカウンター一覧を表示することができます。

以下に何パターンかコマンド例を記載します。

オブジェクトの一覧表示
インスタンスが存在する場合は(*)表示で省略されます。

全オブジェクトのカウンタ一覧
typeperf -q
指定したオブジェクトのカウンタ一覧
typeperf -q  オブジェクト名
実行例(processorオブジェクトを指定時)
> typeperf -q  "processor"
\processor(*)\% Processor Time
\processor(*)\% User Time
\processor(*)\% Privileged Time
\processor(*)\Interrupts/sec
\processor(*)\% DPC Time
\processor(*)\% Interrupt Time
\processor(*)\DPCs Queued/sec
\processor(*)\DPC Rate
\processor(*)\% Idle Time
\processor(*)\% C1 Time
\processor(*)\% C2 Time
\processor(*)\% C3 Time
\processor(*)\C1 Transitions/sec
\processor(*)\C2 Transitions/sec
\processor(*)\C3 Transitions/sec

オブジェクト・インスタンスの一覧表示

全オブジェクトのインスタンス・カウンタ一覧
typeperf -qx
指定したオブジェクトのインスタンス・カウンタ一覧
typeperf -qx  オブジェクト名
実行例(processorオブジェクトを指定時)
> typeperf -qx  "processor"
\processor(0)\% Processor Time
\processor(1)\% Processor Time
\processor(2)\% Processor Time
\processor(3)\% Processor Time
\processor(4)\% Processor Time
\processor(5)\% Processor Time
\processor(6)\% Processor Time
\processor(7)\% Processor Time
\processor(_Total)\% Processor Time
\processor(0)\% User Time
\processor(1)\% User Time
\processor(2)\% User Time
~~~~~大量に出るので省略~~~~~
\processor(4)\C3 Transitions/sec
\processor(5)\C3 Transitions/sec
\processor(6)\C3 Transitions/sec
\processor(7)\C3 Transitions/sec
\processor(_Total)\C3 Transitions/sec

パフォーマンスカウンターの監視を実施

パフォーマンスカウンターの監視
typeperf   "パフォーマンスカウンター名"
  • 複数のパフォーマンスカウンタを出したい場合は、続けて記載する
  • インスタンス部分に(*)とした場合は、全インスタンスを指定となる
  • Ctrl+Cを押すまでサンプリング継続される
実行例(CPUトータルの使用率+CPUトータルの待機時間率)
> typeperf  "\processor(_Total)\% Processor Time"  "\processor(_Total)\% Idle Time"

"(PDH-CSV 4.0)","\\XXXXXXXX\processor(_Total)\% Processor Time","\\XXXXXXXX\processor(_Total)\% Idle Time"
"12/13/2020 20:41:12.395","7.149553","89.955455"
"12/13/2020 20:41:13.404","6.673767","90.668151"
"12/13/2020 20:41:14.415","7.438474","91.027614"
"12/13/2020 20:41:15.418","6.678228","91.790523"
"12/13/2020 20:41:16.427","4.955068","91.664405"
"12/13/2020 20:41:17.429","6.121536","90.849692"
"12/13/2020 20:41:18.432","5.840923","91.207533"
"12/13/2020 20:41:19.436","6.975601","90.252590"
"12/13/2020 20:41:20.438","19.165862","79.704914"
"12/13/2020 20:41:21.450","14.454969","84.504989"
"12/13/2020 20:41:22.473","8.685111","88.117535"
"12/13/2020 20:41:23.479","12.503927","85.379233"
"12/13/2020 20:41:24.482","12.084388","86.591503"
"12/13/2020 20:41:25.492","21.662629","76.774804"
"12/13/2020 20:41:26.501","11.150328","87.014298"
"12/13/2020 20:41:27.508","12.023045","87.517754"
"12/13/2020 20:41:28.511","5.474416","91.997837"
  • サンプリングレートや出力形式などはオプションで指定可能なので、いじりたい場合はヘルプ-?を見て使ってみてください。

利用できそうなパフォーマンスカウンター

パフォーマンスカウンター名 内容
\processor(_Total)\% Processor Time CPU使用率(トータル)
\processor(*)\% Processor Time CPU使用率(各CPU毎)
\System\Processor Queue Length CPU空き待ちスレッド数
\Network Interface(*)\Bytes Total/sec ネットワーク/インタフェース毎の 送受信速度
\Network Interface(*)\Bytes Received/sec ネットワーク/インタフェース毎の 受信速度
\Network Interface(*)\Bytes Sent/sec ネットワーク/インタフェース毎の 送信速度
\Network Adapter(*)\Bytes Total/sec ネットワーク/アダプタ毎の 送受信速度
\Network Adapter(*)\Bytes Received/sec ネットワーク/アダプタ毎の 受信速度
\Network Adapter(*)\Bytes Sent/sec ネットワーク/アダプタ毎の 送信速度
\Memory\Available MBytes メモリ/利用可能な物理メモリ量(残容量)
\Memory\Cache Faults/sec メモリ/キャッシュFault発生回数
\Memory\Pages/sec メモリ/ページング発生回数
\PhysicalDisk(*)\% Idle Time 物理ディスクのアイドル時間率
\PhysicalDisk(*)\Disk Reads/sec 物理ディスクの読込要求数
\PhysicalDisk(*)\Disk Writes/sec 物理ディスクの書込要求数
\PhysicalDisk(*)\Disk Read Bytes/sec 物理ディスクの読込速度
\PhysicalDisk(*)\Disk Write Bytes/sec 物理ディスクの書込速度

参考

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7