【Linux】メモリの使用率や使用量を確認する方法をご説明

テーブル

Linuxでメモリの使用率や使用量などを確認したい場合どうすれば良いのでしょうか?

複数確認のやり方はありますが、どのように使い分ければ良いかわからないといった事もよくあります。

今回はLinuxのメモリの使用率や使用量を確認する方法を複数ご紹介します。

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

目次

Linuxでメモリの使用率や使用量を確認する方法

メモリ

Linuxでメモリの使用率や使用量を確認する方法は2つあります。

Linuxでメモリの使用率や使用量を確認する方法2選
  • vmstatコマンド
  • freeコマンド

この二つのコマンドの例を見ていきます。

vmstatコマンド

PC

vmstatコマンドの基礎

vmstatコマンドはLinuxのメモリの使用率だけではなく、CPUなどのリソースを表示してくれます。

vmstatの基本的なコマンドの基礎は以下です。

vmstat 更新間隔(秒数) 更新回数

2つのオプションを省略すれば、どちらも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 752740   3176 130200    0    0   106     5   48   90  0  0 99  0  0
[root@localhost ~]#

vmstatコマンドでメモリの使用量を表示する項目をまとめます。

項目意味
swpd使用中の仮想メモリの量
free空きメモリの量
buffバッファのメモリ量
cacheキャッシュのメモリ量
vmstatコマンドでメモリの使用量を表示する項目

※単位は全てKBです。

今の環境では仮想メモリは0で使用していません。

使用していないメモリの使用量がfreeで約752Mです。

バッファメモリが約3Mです。

バッファメモリとはアプリとCPUの処理速度などに違いがある時に、一時的に保存しておく領域です。

キャッシュメモリが約130Mです。

キャッシュとはデータを取り出す頻度が多いものをメモリにも保存しておいて、処理速度を上げる為のメモリです。

vmstatでメモリの時間推移を調査する

vmstatで間隔と回数を指定する事で、メモリ使用量の推移を調査できます。

[root@localhost ~]# vmstat 3 5
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 752456   3176 130312    0    0  2945   109  462 1279  9 10 81  0  0
 0  0      0 752436   3176 130312    0    0     0     0   74  119  0  0 100  0  0
 0  0      0 750388   3176 130312    0    0     0     0   74  122  0  0 100  0  0
 0  0      0 750388   3176 130312    0    0     0     3   69  115  0  0 100  0  0
 0  0      0 750388   3176 130312    0    0     0     0   74  117  0  0 100  0  0
[root@localhost ~]#

3秒ごとに5回メモリ使用量を確認しました。

メモリに負荷をかけて圧迫してみる

Linuxでメモリに負荷をかけテスト出来るコマンドがあります。

stress --vm 1 --vm-bytes 600M --vm-hang 0

stressコマンドです。オプションを以下で説明します。

項目意味
–vm workの個数生成するworkerの個数を指定
–vm-bytes 圧迫量workerに割り当てるメモリサイズをバイトで指定(K,M,Gなど)
–vm-hangworkerを解放するまでの時間を指定(秒)、0は解放しない
Linuxでメモリに負荷を与えるstressコマンドのオプション説明

workerを1つ作成して600Mの負荷を与え続けます。他の端末からログインして「vmstat 3」で3秒間のリソース推移を見てみます。

[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
 2  0      0 370436   3176 495644    0    0   429   261  230  194  9  1 89  0  0
 0  0      0 370436   3176 495644    0    0     0     0   11   14  0  0 100  0  0
 0  0      0 370436   3176 495644    0    0     0     0   16   21  0  0 100  0  0
 0  0      0  76864    252 176016    0    0  1359     0  120   40  0  9 91  0  0
 0  0      0  73292    252 180092    0    0     0     0   17   16  0  0 100  0  0
 0  0      0  73292    252 180092    0    0     0     0   14   19  0  0 99  0  0
 0  0      0  73292    252 180092    0    0     0     0    9   13  0  0 100  0  0

4行目から負荷をかけました。メモリのfreeとbuffとcacheの領域が大幅に減っています。

その他のリソースではioのinが増えました。CPUも負荷を与えた瞬間はアイドルタイム(遊休時間)が少し減っています。

日付や時刻の項目を追加する

日付や時刻の項目を追加する場合は以下のようにします。

vmstat 間隔 | awk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 }'
[root@localhost ~]# vmstat 3 | awk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 }'
2024/04/29 18:25:19 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
2024/04/29 18:25:19  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
2024/04/29 18:25:19  2  0      0 749164   3176 130436    0    0   296    12  105  218  1  1 98  0  0
2024/04/29 18:25:22  0  0      0 749164   3176 130436    0    0     0     0   49   75  0  0 100  0  0
2024/04/29 18:25:25  0  0      0 749164   3176 130436    0    0     0     0   56   80  0  0 100  0  0
2024/04/29 18:25:28  0  0      0 749164   3176 130436    0    0     0     0   51   78  0  0 100  0  0
2024/04/29 18:25:31  0  0      0 749164   3176 130436    0    0     0     1   57   76  0  1 99  0  0
2024/04/29 18:25:34  0  0      0 749164   3176 130436    0    0     0     0   55   80  0  0 100  0  0

日付時間付きの3秒間隔でメモリ使用率を確認できました。

ログファイルに出力する方法

ログファイルに出力して後から確認したい場合もあると思います。そういった場合にはリダイレクトを使用します。

vmstat 間隔 | awk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 } { system(":") }' > ファイル名

1秒間隔のメモリの使用率を「memoryusage_check.log」というファイルに出力しました。

vmstat 1 | awk '{ print strftime("%Y/%m/%d %H:%M:%S"), $0 } { system(":") }' > memory_usage_check.log

終了するにはCtrl+CかCtrl+Zで終了します。

memory_usage_check.logのファイルが出来ていますのでcatコマンドで見てみます。

[root@localhost ~]# cat memory_usage_check.log
2024/04/29 18:29:53 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
2024/04/29 18:29:53  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
2024/04/29 18:29:53  2  0      0 748240   3176 130440    0    0   187     8   81  157  1  1 99  0  0
2024/04/29 18:29:54  0  0      0 747992   3176 130452    0    0     0     0   53   82  0  0 100  0  0
2024/04/29 18:29:55  0  0      0 747992   3176 130452    0    0     0     0   74   79  2  1 97  0  0
2024/04/29 18:29:56  0  0      0 747992   3176 130452    0    0     0     0   65   78  0  0 100  0  0
2024/04/29 18:29:57  0  0      0 747992   3176 130452    0    0     0     0   63   77  1  1 98  0  0
2024/04/29 18:29:58  0  0      0 747992   3176 130452    0    0     0     0   55   69  1  1 98  0  0
2024/04/29 18:29:59  0  0      0 747992   3176 130452    0    0     0     0   71   80  1  0 99  0  0
[root@localhost ~]#

ログに出力されてメモリ使用量が確認できています。

freeコマンド

analystics

次にfreeコマンドです。

[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1014540      129912      750908        6964      133720      742824
Swap:        839676           0      839676
[root@localhost ~]#

メモリの使用量や空きメモリなど一通り表示されています。

CPUの使用率などを確認したい場合は以下の記事にまとめています。

「free -h」とhオプションを使用すると、単位をいい感じにつけてくれて見やすくなります。

[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           990M        126M        733M        6.8M        130M        725M
Swap:          819M          0B        819M
[root@localhost ~]#

freeコマンドで負荷検証行う

先程と同じ様に負荷をかけて値を確認します。

stress --vm 1 -vm-bytes 600M --vm-hang 0

負荷をかける前とかけた後のfreeコマンドの結果を確認します。

[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           990M        141M        665M        6.8M        183M        706M
Swap:          819M          0B        819M
[root@localhost ~]#ここでもうひとつのログインした端末から負荷をかける
[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           990M        743M         63M        6.8M        183M        105M
Swap:          819M          0B        819M

usedが141Mだったのが約600M増えて743Mになっています。Swapは変化なしです。

メモリ以上の負荷をかけて値を確認します。

stress --vm 1 -vm-bytes 900M --vm-hang 0

負荷をかける前とかけた後のfreeコマンドの結果を確認します。

[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           990M        141M        664M        6.8M        183M        706M
Swap:          819M          0B        819M
[root@localhost ~]#ここでもうひとつのログインした端末から負荷をかける
[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           990M        898M         58M        828K         34M        5.5M
Swap:          819M        461M        358M

usedが141Mだったのが、ほぼtotalの898Mになっています。Swapが461M使用されています。

まとめ:Linuxでメモリの使用率や使用量を確認する方法

メモリ

Linuxでメモリの使用率や使用量を確認する方法は2つあります。

Linuxでメモリの使用率や使用量を確認する方法2選
  • vmstatコマンド
  • freeコマンド

vmstatコマンドの特徴

メモリ以外のリソース(CPUやI/O)も表示できる。

間隔や回数を指定してメモリ使用量の推移などを見れる。

freeコマンドの特徴

メモリの使用率などを確認できる。-hオプションで単位をわかりやすく表示してくれます。

テーブル

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次