freeコマンド

freeコマンドについて調べてみました。

freeコマンドの実行結果の例

             total       used       free     shared    buffers     cached
Mem:        515312     435600      79712          0     145228     209168
-/+ buffers/cache:      81204     434108
Swap:      1048568         64    1048504

 

それぞれの項目の説明

 

Mem: 物理メモリの情報
total 認識されている物理メモリの容量
used 使用されている物理メモリの容量
free 使用れていない物理メモリの容量
shared プロセス間通信を行うアプリケーションの為に確保される共有メモリの容量(/proc/sys/kernel/shm*とかで設定する)
buffers データはHDDへ書き出される前に物理メモリ上に一旦置かれる。この為に確保されているバッファの容量(/proc/sys/vm/*とかで設定する)
cached HDDから読み込まれたデータは物理メモリ上に一旦キャッシュされる(ページキャッシュ)。この為に確保されている容量
-/+ buffers/cache: 実際に使用可能か否かを考慮した物理メモリの情報
used 実際に使用している物理メモリの容量
free 実際に使用可能な物理メモリの容量
Swap: 使用可能なスワップメモリの容量
used 実際に使用しているスワップメモリの容量
free 実際に使用可能なスワップメモリの容量

まとめ

物理メモリの空き容量としてMem:freeを見てしまいがちだけど、Mem:buffersとMem:cachedは必要に応じて開放されるので実際には空き容量と考えることができる。
この実際に即した数値が-/+ buffers/cache:。

それぞれ、
-/+ buffers/cache:used = Mem:used – (Mem:buffers + Mem:cached)
-/+ buffers/cache:free = Mem:free + (Mem:buffers + Mem:cached)
の結果が表示されている。

上の例でいくと、空きメモリ容量は79712キロバイトしか空いてないのかなと思いがちですが、本当は434108キロバイトも空いてるんだと考えて良いです。