【Linux】٩( ᐛ )وメモリの空き状況や使用量を確認する(top、vmstat、free)

今回はサーバの運用でメモリの状況を確認する際、普段よく使っている方法をご紹介します。

使わないとついつい忘れてしまうコマンドもあるので、しっかりとここにメモておきます。

 

topコマンド

「top」コマンドはCPUやメモリの状況を確認することができます。。 ٩( ᐛ )و

さらに現在動いているプロセスも秒間隔で一覧表示されるので、まず全体を把握するにはとても便利です。

[user@server ~]$ top
top - 11:35:09 up 1170 days,  8:45,  1 user,  load average: 0.02, 0.02, 0.00
Tasks: 154 total,   1 running, 153 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8969544k total,  8087712k used,   881832k free,   254836k buffers
Swap:  1020152k total,      132k used,  1020020k free,  7342612k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      15   0 10348  692  584 S  0.0  0.0   0:06.73 init
    2 root      RT  -5     0    0    0 S  0.0  0.0   0:04.09 migration/0

「Cpu(s):」がCPU、「Mem:」がメモリ、「Swap:」がスワップの情報になります。

それぞれ全体容量(total)、使用量(used)、空き容量(free)がキロバイト表記に表示されています。

 

 

vmstatコマンド

メモリ状況に関してさらに掘り下げて確認したい場合は「vmstat」コマンドを使います。

[user@server ~]$ vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0    132 873120 254080 7316324    0    0     5     6    0    0  0  0 100  0  0

オプションに「5」とつけると、5秒間隔でメモリ状況を監視することが可能です。

[user@server ~]$ vmstat 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0    132 873120 254080 7316324    0    0     5     6    0    0  0  0 100  0  0
 0  0    132 873096 254080 7316324    0    0     0    27 1026   96  0  0 100  0  0
 0  0    132 873096 254080 7316332    0    0     0     8 1035   90  0  0 100  0  0
 0  0    132 873228 254080 7316336    0    0     0    13 1017   77  0  0 100  0  0
 0  0    132 873228 254080 7316336    0    0     0     5 1020   83  0  0 100  0  0
 0  0    132 873228 254080 7316340    0    0     0     0 1016   78  0  0 100  0  0
 0  0    132 873228 254080 7316340    0    0     0    41 1021   87  0  0 100  0  0

「-s」オプションを使うとメモリ状況の詳細が確認できます

[user@server ~]$ vmstat -s
      8969544 k total memory
      8096316 k used memory
      6166724 k active memory
      1640768 k inactive memory
       873228 k free memory
       254096 k buffer memory
      7316368 k swap cache
      1020152 k total swap
          132 k used swap
      1020020 k free swap
    240719227 non-nice user cpu ticks
     10179911 nice user cpu ticks
     12059845 system cpu ticks
  79834643725 idle cpu ticks
      2622936 IO-wait cpu ticks
       459034 IRQ cpu ticks
      4982804 softirq cpu ticks
            0 stolen cpu ticks
   4226891813 pages paged in
   4795657262 pages paged out
            0 pages swapped in
           33 pages swapped out
   3661599264 interrupts
   2907345856 CPU context switches
   1468259361 boot time
     28187562 forks

しかし注意が必要なのが、メモリの利用可能な空き状況を確認するうえで、単純に全容量と使用量だけでは不十分な時があります。

上記例がいい例で全体容量の「total memory」は8.96GB(端数切捨て値)ほどあり、使用量の「used memory」は8.09GBとなっており残り容量が1GBもないように見えますが、場合によっては違かったりします。

それを確認する場合によく使うのか「free」コマンドです。

 

 

freeコマンド

「free」コマンドはメモリの空き容量を表示してくれるコマンドです。

コマンドを実行した例が下記になります。

[user@server ~]$ free
             total       used       free     shared    buffers     cached
Mem:       8969544    8099920     869624          0     254164    7318424
-/+ buffers/cache:     527332    8442212
Swap:      1020152        132    1020020

 

「-m」オプションを付けるとメガバイト表記になるのでより見やすくできます。

[user@server ~]$ free -m
             total       used       free     shared    buffers     cached
Mem:          8759       7909        849          0        248       7146
-/+ buffers/cache:        514       8244
Swap:          996          0        996

上記例の1行目(Mem:)がメモリの下記状況になります。

totalは8759MBでusedが7909MBなので残り容量は少ないように見えますが、実際はもっと多くの容量を使用することができます。ここで確認するポイントが「cached」になります。

「cached」は重たい処理をする場合に予め確保されている容量なので、実質7146MBは使用可能な容量として考えることができます。

使用量(used)として8GB使用されているように見えても、キャッシュ(cashed)に7GB確保しているので、実際の使用率は1~2割程度ということになります。

 

さらに手っ取り早く空き容量を確認したいなら2列目の「-/+ buffers/cache:」を見れば分かりやすいです。

これはバッファサイズとキャッシュサイズの差分を表示されており、実質的な使用量と空き容量を確認することができます。

上記例なら実質使用量は514MBで空き容量は8422MBです。

細かい計算は以下の通りです。

  • 514[-/+ buffers/cache:used] = 7909[Mem:used] - (248[Mem:buffers] + 7146[Mem:cached])
  • 8244[-/+ buffers/cache:free] = 849[Mem:free] + 248[Mem:buffers] + 7146[Mem:cached]

 



投稿日:2019-09-13    更新日:2019-09-25

[スポンサーリンク]

サイト内検索
プロフィール

プロフィール

[Name : じゃぶじゃぶ(@jbjb_2019)]
都内で社内SEをしているおじさん。
仕事で得られる知識だけでは限界を感じ、 WEBの勉強がてらITブログを開始。
サーバからWEBサイトまでフルスクラッチで開発しました。
現在は勉強のモチベーションを保つために活用中。
興味があることを雑記的に書いていきます。

[スポンサーリンク]

[スポンサードリンク]