先日、お仕事で性能検証のため、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コマンドは色々できるので面白いです。
また今度書きたいな。^^