【linux】メモリの使用状況を確認する freeコマンド
問題
freeコマンドを実行すると、次のようにメモリの使用状況を表示してくれる。
total used free shared buffers cached Mem: 510532 301568 208964 0 56756 141376 -/+ buffers/cache: 103436 407096 Swap: 2048276 0 2048276
どこをどう見ればよい?
解説
| 項目 | 説明 |
|---|---|
| Mem | ページキャッシュとバッファキャッシュを考慮しないメモリサイズ |
| total | OSが認識している物理的なメモリサイズ。RAIDカードやNICなどを装着しているときは、それらのためにメモリが使われるので実際の搭載メモリサイズよりも少なくなります。 |
| used | 使用しているメモリサイズ。これにはバッファキャッシュやページキャッシュなどOSがディスクキャッシュのために使用しているメモリも含まれます。 |
| free | 空きメモリサイズ。この値にはバッファキャッシュとページキャッシュが含まれていません。一般にLinuxは使い続けるほど、メモリをキャッシュに割り当てます。そのため使い続けるほどfreeの値はゼロに近づきます。この値が少ないからといって空きメモリがないわけではないことに注意してください。 |
| shared | 共有メモリに割り当てられたメモリ。これは古い機能の名残であり、無視してよい。 |
| buffers | バッファキャッシュに割り当てたメモリ。バッファキャッシュはブロックデバイス用のキャッシュです。 |
| cached | ページキャッシュに割り当てたメモリ。ページキャッシュはファイルに対するキャッシュです。 |
| -/+buffers/cache | ページキャッシュとバッファキャッシュを考慮したメモリサイズ |
| used | 1行目のusedからページキャッシュとバッファキャッシュを引いた値。OSとアプリケーションが純粋に使用しているメモリサイズを表します。 |
| free | 1行目のfreeにページキャッシュとバッファキャッシュを足した値。キャッシュに割り当てられているメモリを自由に割り当て可能なメモリと考えれば、この値が空きメモリサイズになります。 |
| Swap | スワップに割り当てたサイズ。 |
| total | スワップに割り当てたディスクサイズ。 |
| used | 割り当てた中で使用中のサイズ。 |
| free | 割り当てた中で使用していないサイズ。 |
下図の場合、
total used free shared buffers cached Mem: 510532 301568 208964 0 56756 141376 -/+ buffers/cache: 103436 407096 Swap: 2048276 0 2048276
shared は無視。
ここがOSと各アプリケーションが使用しているメモリ。
linuxがキャッシュなどを活用して賢く動作しているとき、freeは0に近づいていく。
こちらが空きメモリと考えてよい。