プログラミング

Linuxのシステム負荷を調べる時に使うコマンド

今回は、システムの負荷状況を調べる際に使用するコマンドを書いていきたいと思います。

vmstat コマンド

システム全体の負荷を見るならこれ。2で2秒ごとの情報更新。

[vagrant@develop-env ~]$ vmstat 2
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 764092   2108 144864    0    0  2353   650  875 3035 25 32 42  0  0
 0  0      0 764092   2108 144896    0    0     0     0   40   69  0  0 100  0  0
 0  0      0 764092   2108 144896    0    0     0     0   40   72  0  1 99  0  0
 0  0      0 765108   2108 144896    0    0     0   325   53   78  0  1 99  0  0
 0  0      0 765108   2108 144896    0    0     0     9   51   97  1  0 99  0  0

 

以下は、man vmstatから抜粋したものをGoogle翻訳かけたものです。

Memoryのswpd,free CPUのwaあたりは、確認することが多いかもしれないですね。

Procs
    r:実行可能なプロセスの数(実行中または実行待機中)。
    b:割り込み不可能なスリープ状態のプロセスの数。

Memory
    swpd:使用されている仮想メモリの量。
    free:アイドルメモリの量。
    buff:バッファとして使用されるメモリの量。
    cache:キャッシュとして使用されるメモリの量。
    inact:非アクティブなメモリの量。 (-aオプション)
    active:アクティブなメモリの量。 (-aオプション)

Swap
    si:ディスクからスワップインされたメモリの量(/ s)。
    so:ディスクにスワップされたメモリの量(/ s)。

IO
    bi:ブロックデバイスから受信したブロック(blocks / s)。
    bo:ブロックデバイスに送信されたブロック(blocks / s)。

System
    in:1秒あたりの割り込み数(クロックを含む)。
    cs:1秒あたりのコンテキストスイッチの数。

CPU
    これらは、合計CPU時間の割合です。
    us:カーネル以外のコードの実行に費やされた時間。 (ユーザー時間、素敵な時間を含む)
    sy:カーネルコードの実行に費やされた時間。 (システム時刻)
    id:アイドル時間。 Linux 2.5.41より前のバージョンには、IO待機時間が含まれています。
    wa:IOの待機に費やされた時間。 Linux 2.5.41より前は、アイドル状態に含まれていました。
    st:仮想マシンから盗まれた時間。 Linux 2.6.11以前は不明。

 

参考:Vmstat の出力結果はどのように解釈すれば良いですか?

https://access.redhat.com/ja/solutions/3054501

 

top コマンド

CPUの使用率やメモリの使用率などを一覧で表示できる。

htopコマンド

CentOS標準ではインストールされていないので、以下でインストール

# EPELリポジトリを追加
$ sudo yum install epel-release
# htopをインストール
$ sudo yum install htop

 

df コマンド

ディスク容量が逼迫してきた時にまず、こちらのコマンドでどのくらいの容量を食っているのか調べることが多いです。

使用例

[vagrant@develop-env ~]$ df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 485M     0  485M   0% /dev
tmpfs                    496M     0  496M   0% /dev/shm
tmpfs                    496M   13M  483M   3% /run
tmpfs                    496M     0  496M   0% /sys/fs/cgroup
/dev/mapper/centos-root   41G  854M   41G   3% /
/dev/sda1               1014M  133M  882M  14% /boot
/dev/mapper/centos-home   20G  136M   20G   1% /home
vagrant                  238G   73G  166G  31% /vagrant
tmpfs                    100M     0  100M   0% /run/user/1000

 

この例だと、/vagrant の共有ディレクトリの使用割合が多いことがわかりますね。

du コマンド

 

dfコマンドでざっくりとどのディレクトリがdiskを食っているか分かった、

duコマンドでその詳細を探っていきます。

 

使用例

[vagrant@develop-env ~]$ sudo du -sh /vagrant/*
4.0K    /vagrant/Vagrantfile

 

ディレクトリ更に存在する場合は、

[vagrant@develop-env ~]$ sudo du -sh /vagrant/xxx/*

などとコマンドを入力してみて、深堀りしていきます。

いずれ、どの場所がdiskを食っているのかが分かります。

ログを吐き出させているファイルなどが該当することが多いです。(ログローテーションのし忘れとか)

 

ps コマンド

現在実行中のプロセスを知ることが出来る。

 

僕は以下のように「a,u,x」とオプションを付けていっぺんに表示させることが多いです。

 

使用例

[vagrant@develop-env ~]$ ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.1  0.6 127968  6664 ?        Ss   02:28   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2  0.0  0.0      0     0 ?        S    02:28   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<   02:28   0:00 [kworker/0:0H]
root         5  0.0  0.0      0     0 ?        S    02:28   0:00 [kworker/u2:0]
root         6  0.0  0.0      0     0 ?        S    02:28   0:00 [ksoftirqd/0]
root         7  0.0  0.0      0     0 ?        S    02:28   0:00 [migration/0]
~
~
省略
~
~

 

 

ABOUT ME
moto
約5年間勤めた公務員から転職しました。 日頃の学びをここにアウトプットしていきます。 御朱印集めと筋トレが好きです。