Linuxのメモリ使用量

By | 2015年2月27日

こんにちは
株式会社Loco Partners エンジニアの大須賀です。

弊社で開発・運用をしている宿泊予約サイト「relux」のWebサーバは、AWSのEC2でAmazon Linuxを使用しています。

適切なEC2のインスタンスタイプを選ぶにあたり、メモリの使用量は重要な指標の一つです。
Linuxでメモリの使用量を見る2つのコマンドについて説明をします。

freeコマンド

$ free -m
total used free shared buffers cached
Mem: 478 454 24 0 142 92
-/+ buffers/cache: 219 259
Swap: 1474 2 1472

この結果を見ると、478MBのうち454MBが使用されていて、残りが24MBしか無い逼迫した状況のようにも見えますが、実際はそんなことはありません。
Memの行のuserdの値には実行中のプロセスが使用しているメモリの他、buffers,cachedの値も加算されています。
buffers,cachedはどちらも、ディスクIOを高速に行うためのキャッシュなのですが、その中には解放できる領域が存在します(解放できるのに解放していないのは使い回しをするため)。メモリの実際の空き領域は、(Mem:の行のfreeの値 + buffers,cachedのうち解放できる領域) ということになります。

buffers,cachedのうち解放できる領域はどれ程あるのかはvmstatコマンドで調べることができます。

$ vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free inact active si so bi bo in cs us sy id wa
1 0 2176 24688 29776 388344 0 0 0 1 0 0 0 0 100 0

上記出力のうち、inactの数値が解放できる領域のサイズです。
freeとinactの数値を合わせたものが利用可能なメモリ量なので、この例の場合だと54MB程が利用可能といえます。

※この例だとinactが少ないですが、実際はもっと多い(ことが多い)と思います。この例のような状態だったら、メモリの増設をしたほうが良いですね。

(Visited 445 times, 1 visits today)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です