ぺんぺんと一緒におぺんきょう
Study With me
インフラ

CPU使用率を自動取得する手順(Windowsコマンド)

先日、お仕事で性能検証のため、CPU使用率を記録しなければならなくなったのでメモ。

CPUの使用率といえば、タスクマネージャーですが、 Windowsコマンドで確かそんなのがあったはず・・・と思って調べてみました。

いきなり結論から。

  • 1.コマンドプロンプトを起動します。
  • 2.コマンドプロンプトに下記のコマンドを貼ります。
  •   typeperf -sc 5 -si 3 “\processor(_total)\% Processor Time” | find “:”>> c:\cpu_log.csv
  • 3.3秒ごとに、5回 。CPU使用率を「c:\cpu_log.csv」に記録されます。
  • ※上書きではなく、追記になります。
  • ※”:”がついている行だけが出力されるようになっています。

以上。簡単。^^

  • ◆簡単に解説
  •  1.-sc…取得回数
  •  2.-si…取得間隔
  •  3.processor(_total)の部分は、
  •    processor(*)に変更すると、コア数分+トータルが取れます。
  •  4.>>の部分を
  •    >に変更すると、追記ではなく、上書き保存になります。

☆☆☆☆☆☆

ここからは、蛇足です。

「typeperf」コマンドについて、調べたことをメモしました。

興味のある方だけどうぞ。(^^)

windowsコマンドは、-hをつけると、ヘルプが見れます。

ヘルプを見てみましょう。

typeperf -h

この説明によると、

-sc …取得回数

-si …取得間隔([hh:mm:]ss形式で指定)

これをもとに、

5秒置きに、3回CPU使用率を取得するコマンドを作ってみます。

typeperf -sc 3 -si 5 “\processor(_Total)\% Processor Time”

ほかにも、”Processor”始まりで使えるカウンターが無いか探すときは、

typeperf -q Processor

typeperf -qx Processor

とやるといいらしい。

↓↓↓-qと-qxの違いは、こんな感じ。↓↓↓

ここまできて、*と_totalの違いに気づきました。遅。

typeperf “\processor(*)\% processor time”

typeperf “\processor(_total)\% processor time”

  • typeperf “\processor(*)\% processor time”のほうは、、、
  •  ⇒typeperf “\processor(0)\% processor time”
  •   typeperf “\processor(1)\% processor time”
  •   typeperf “\processor(_total)\% processor time”
  •   を並べて表示するらしい。
  • そして、typeperf “\processor(_total)\% processor time”の方は、
  • CPU使用率のトータル表示ということみたいです。

processor(0)とprocessor(1)だけなのは、

私のPCのCPUのコアが2つだからだと思います。

この、コア毎のCPU使用率は、タスクマネージャーでも、見ることができます。

普通に開くとトータルが出ます。

実は、このグラフ、変更できるんです。

グラフのところで、右クリックして、グラフの変更⇒論理プロセッサ

を選択すると。。。

ほら、コア数分表示されます。

コアが増えると、このグラフも増える仕組み。

これ知ったときテンション上がりました。私だけ?笑

アプリケーションの中には、コアを一つしか使わないものがあって、

一個だけコアが100%貼りつきになってCPUを圧迫することがあるらしいです。

トータルだと使用率としては下がるので、CPUがネックになっていることに気づきにくい。

☆☆☆☆☆

最後に、CPU使用率のほかにも使えそうなコマンドメモ

・typeperf “\processor(_total)\% processor time”〇

  ⇒CPU使用率 ・・・大きいとダメ。

・typeperf “System\Processor Queue Length”〇

  ⇒CPU待ち行列のスレッド数(実行中は除く)・・・大きいとダメ

・typeperf “\Memory\Available Mbytes”〇

  ⇒メモリ空き容量 ・・・小さいとだめ。

・typeperf “\Process(_Total)\Working Set”

  ⇒確保されているメモリ領域 ・・・大きいとダメ。

色々使えそうですね。

今日は、以上です。

windowsコマンドは色々できるので面白いです。

また今度書きたいな。^^

ABOUT ME
ぺんぺん
娘二人のママです。20年以上システム開発会社で働いてます。 システム作るのも編み物も絵を描くことも好きです。