サイトアイコン スグブログ

【Linux】CPUの使用率を確認する方法

LinuxでCPUの使用率を確認したい時はないでしょうか?

確認するコマンドはいくつか知っていますが、どれを使えば良いのかわからない時はないでしょうか?

そういった時の為にLinuxでCPUの使用率の確認方法を現役エンジニアの筆者がまとめます。

筆者はWindowsサーバーやLinuxサーバーの運用構築を11年間以上おこなってきました。その経験を元に知識を公開していきます!

この記事を読めばLinuxでCPU使用率を確認したい時、どのコマンドを使用すればよいのか。それぞれのコマンドの使用用途がわかります。

LinuxでCPUの使用率を確認する方法

LinuxでCPUの使用率を確認するコマンドは以下の通りです。

LinuxでCPUの使用率を確認するコマンド2選
  • vmstatコマンド
  • topコマンド

それぞれの特徴と確認のやり方を見ていきます。

CPUの使用率を確認するvmstatコマンド

CPU使用率を確認するvmstatコマンドの基礎知識

まずはvmstatコマンドです。

vmstat 取得する間隔(秒数) 取得する回数

間隔と回数は省略できます。省略した場合は1が選択されて現在の情報が一回だけ表示されます。

[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 746040   3176 131132    0    0    94     8   42   78  0  0 99  0  0
[root@localhost ~]#

CPUの他にもメモリやネットワークなどの情報も表示されます。

CPU関連の表示の意味をまとめます。

表示される文字意味
usユーザーが使用した時間
syシステムのカーネルが使用した時間
idアイドルタイム
waI/Oの待ち時間
st仮想マシンが使用した時間
LinuxでvmstatコマンドのCPU欄の意味一覧

アイドルタイムとは稼働せずに待機している状態の事。ITでは処理するタスクがなく遊休している状態の事。

CPU使用率は(100-アイドルタイム)で計算できます。

管理人

ここではアイドルタイムが99(遊休しているCPUが99%)なのでCPU使用率は1%です。

CPU使用率を間隔と回数を指定して実行してみる

例として2秒間隔で10回取得してみます。

[root@localhost ~]# vmstat 2 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 744968   3176 131132    0    0    55     4   28   51  0  0 99  0  0
 0  0      0 744944   3176 131132    0    0     0     0   17   23  0  0 100  0  0
 0  0      0 744944   3176 131132    0    0     0     0    8    9  0  0 100  0  0
 0  0      0 744944   3176 131132    0    0     0     0   12   17  0  0 100  0  0
 0  0      0 744944   3176 131132    0    0     0     0   12   15  0  0 100  0  0
 0  0      0 744944   3176 131132    0    0     0     0    9   12  0  0 100  0  0
 0  0      0 744944   3176 131132    0    0     0     0   13   16  0  0 100  0  0
 0  0      0 744944   3176 131132    0    0     0     0    8   13  0  0 100  0  0
 0  0      0 744944   3176 131132    0    0     0     0   12   14  0  0 100  0  0
 0  0      0 744944   3176 131132    0    0     0     0   13   20  0  0 99  0  0
[root@localhost ~]#

2秒間隔で10回CPU使用率を確認できました。

LinuxでCPU使用率を確認したいエンジニア

ここではCPUはほぼ休んでますね。。

LinuxでCPUに負荷をかけ検証してみる

LinuxでCPUに負荷をかけるには、bcコマンドで計算をさせていきます。かかった時間はtimeコマンドで確認しましょう!

[root@localhost ~]# time echo "99999^10^5" | bc > /dev/null

real    0m26.544s
user    0m26.512s
sys     0m0.010s

計算は表示させないので、リダイレクトでnullへ向けましょう!

別のteratermでログインして先程と同じ様にvmstatでCPUを確認します。

[root@localhost ~]# vmstat 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0  64256 903136      0  34316    1  152   127   221   72   63  3  0 97  0  0
 1  0  64256 902764      0  34316    0    0     0     0 1023   17 100  0  0  0  0
 1  0  64256 902516      0  34316    0    0     0     0 1036   16 100  0  0  0  0
 1  0  64256 902640      0  34316    0    0     0     0 1040   18 100  0  0  0  0
 1  0  64256 902268      0  34316    0    0     0     0 1041   16 100  0  0  0  0
 1  0  64256 901896      0  34316    0    0     0     0 1033   15 100  0  0  0  0
 1  0  64256 901896      0  34316    0    0     0     0 1039   17 100  0  0  0  0
 1  0  64256 901772      0  34316    0    0     0     0 1056   17 100  0  0  0  0
 0  0  64256 903904      0  34316    0    0     0     0  203   22 18  0 82  0  0
 0  0  64256 903904      0  34316    0    0     0     0    8   11  0  0 100  0  0
 0  0  64256 903904      0  34316    0    0     0     0   13   18  0  0 100  0  0

ユーザーのCPU使用率が100となっており、処理が終わったらCPU使用率が0となりアイドルタイムが100となっています。

CPUの使用率を確認するtopコマンド

CPUの使用率を確認するtopコマンドの基礎知識

次にtopコマンドです。

top

Windowのタスクマネージャーのように、CPU使用率が高い順に表示してくれます。

top - 22:31:45 up 51 min,  1 user,  load average: 0.00, 0.01, 0.03
Tasks: 106 total,   2 running,  99 sleeping,   5 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1014540 total,   744448 free,   135784 used,   134308 buff/cache
KiB Swap:   839676 total,   839676 free,        0 used.   736708 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 1277 root      20   0  162116   2260   1560 R  0.7  0.2   0:00.59 top
    1 root      20   0  125364   3892   2584 S  0.0  0.4   0:01.34 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
    4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
    5 root      20   0       0      0      0 S  0.0  0.0   0:00.01 kworker/u2:0
    6 root      20   0       0      0      0 S  0.0  0.0   0:00.08 ksoftirqd/0

情報を集約して表示してくれる上の領域と、CPU使用率順にプロセスを並び替えてる下の領域に分かれています。

3行目のCPUの欄です。

表示される文字意味
usユーザーが使用した時間
syシステムのカーネルが使用した時間
idアイドルタイム
waI/Oの待ち時間
st仮想マシンが使用した時間
LinuxでtopコマンドのCPU欄の意味一覧
管理人

ユーザーが0.7%システムが0.3%使用しており、使われていない(アイドルタイム)のが99%になっていますね。

CPU使用率を間隔を指定して更新してみる

更新の間隔を指定する事も可能です。

top -d 更新間隔(秒数)

これで更新間隔が3秒になります。

CPU使用率が高いプロセスを終了させる

サーバーが不安定になりCPU使用率が高いプロセスを終了することもあるでしょう!

そんな時はtopコマンドが楽です。

top - 22:31:45 up 51 min,  1 user,  load average: 0.00, 0.01, 0.03
Tasks: 106 total,   2 running,  99 sleeping,   5 stopped,   0 zombie
%Cpu(s):  99 us,  0.3 sy,  0.0 ni, 0.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1014540 total,   744448 free,   135784 used,   134308 buff/cache
KiB Swap:   839676 total,   839676 free,        0 used.   736708 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 1277 root      20   0  162116   2260   1560 R  99  0.2   0:00.59 top
    1 root      20   0  125364   3892   2584 S  0.0  0.4   0:01.34 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd

CPU使用率が高い順に表示されます。不要なプロセスを終了させればOKです。

プロセスを強制終了させるコマンドは以下です。

kill -9 プロセスID

プロセスを終了させるkillコマンドについては以下の記事で詳しく説明しています。

CPUに負荷をかけてtopコマンドで確認してみる

先程と同じ様に高負荷の計算をtimeとbcコマンドで行って、topコマンドでも確認してみます。

time echo "99999^10^5" | bc > /dev/null

もうひとつのteratermでリモートしてtopコマンドを使用します。

top - 18:24:54 up  1:01,  2 users,  load average: 0.22, 0.06, 0.06
Tasks: 104 total,   2 running, 102 sleeping,   0 stopped,   0 zombie
%Cpu(s): 99.7 us,  0.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1014540 total,   901276 free,    78240 used,    35024 buff/cache
KiB Swap:   839676 total,   775676 free,    64000 used.   846876 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 1398 root      20   0   14832   2380    644 R 99.7  0.2   0:14.33 bc
    1 root      20   0  125364   2332   1532 S  0.0  0.2   0:01.40 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd

CPUが高負荷となっており、bcのプロセスがCPU使用率99.7%で表示されている事が確認できます。

LinuxでCPU以外でリソースを確認するコマンドについて

Linuxのメモリ使用率確認コマンドについて

Linuxの物理ディスク確認コマンドについて

Linuxのファイルシステムの容量確認コマンドについて

Linuxのファイルやディレクトリの容量確認コマンドについて

まとめ:LinuxでCPUの使用率を確認する方法

LinuxでCPUの使用率を確認するコマンドは以下の通りです。

LinuxでCPUの使用率を確認するコマンド2選
  • vmstatコマンド
  • topコマンド

vmstatコマンドの特徴

CPUの他にもメモリやネットワークなどの情報も表示されて、総合的なリソースが確認できます。

間隔と回数を指定して情報を表示できる為、リソースの推移などを確認する時に便利です。

topコマンド

CPU使用率が高い順にプロセスを並び替えてくれる為、負荷の高いプロセスを確認したり終了させる時に便利です。

モバイルバージョンを終了