プログラムやシェルを作った後に動かしてみるとCPUリソースを使いすぎてサーバーがまともに使えない状態にならないよう、作ったプログラムがどのくらいCPUを使っているのか測定する方法をご紹介します。
今回は「mpstat」というコマンドを紹介します。
このコマンドはCPUの使用率をリアルタイムに表示したり特定の期間のCPU使用率の平均を出すことができます。
インストール手順
環境に合わせて下記のいずれかでインストールしてください。
sudo yum install sysstat
sudo apt-get install sysstat
CPUの使用率を表示
mpstatを引数なしで実行すると現在のCPU使用率が表示されます。
$mpstat
Linux 4.4.0-1117-aws (ip-XXX-XXX-XXX-XXX) 11/04/2020 _x86_64_ (16 CPU)
07:47:33 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
07:47:34 AM all 97.62 0.00 2.06 0.31 0.00 0.00 0.00 0.00 0.00 0.00
CPUの使用率をリアルタイムに表示
CPU使用率をリアルタイムに表示し続けたい場合は引数に更新する間隔を秒数で指定します。下記の例では1秒ごとにCPU使用率が表示されます。
$mpstat 1
Linux 4.4.0-1117-aws (ip-XXX-XXX-XXX-XXX) 11/04/2020 _x86_64_ (16 CPU)
07:47:33 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
07:47:34 AM all 97.62 0.00 2.06 0.31 0.00 0.00 0.00 0.00 0.00 0.00
07:47:35 AM all 98.06 0.00 1.88 0.00 0.00 0.00 0.00 0.00 0.00 0.06
07:47:36 AM all 98.38 0.00 1.62 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:47:37 AM all 97.06 0.00 2.94 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:47:38 AM all 97.94 0.00 2.06 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:47:39 AM all 98.44 0.00 1.44 0.00 0.00 0.00 0.00 0.00 0.00 0.13
CPU使用率の平均を表示
CPU使用率の平均を表示したい場合はmpstatをリアルタイム表示し、Ctrl+Cで中断することでコマンド実行中の平均値を末尾にAverageで表示してくれます。
$mpstat 1
Linux 4.4.0-1117-aws (ip-XXX-XXX-XXX-XXX) 11/04/2020 _x86_64_ (16 CPU)
05:03:13 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
05:03:14 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
05:03:15 PM all 17.59 0.00 7.04 0.00 0.00 0.00 0.00 0.00 0.00 75.38
05:03:31 PM all 46.23 0.00 4.02 0.00 0.00 0.00 0.00 0.00 0.00 49.75
~省略~
05:03:32 PM all 48.00 0.00 2.50 0.00 0.00 0.00 0.00 0.00 0.00 49.50
05:03:33 PM all 56.28 0.00 6.53 0.00 0.00 0.00 0.00 0.00 0.00 37.19
05:03:34 PM all 9.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 90.50
05:03:35 PM all 2.51 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 96.98
05:03:36 PM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
^C
Average: all 39.59 0.00 4.40 0.04 0.00 0.02 0.00 0.00 0.00 55.95
CPU使用率の部分を加工してグラフ表示に使ったりすると視覚的に見えてレポートなどにも使えますね。