どうも。横浜です。
本日は業務上マシーンの現在のメモリー使用状況を調べる必要があったので、作業内容を残しておこうかと思います。
まず、そもそも何故メモリーの使用状況を調べようかと思ったかというと、トイスタを運営しているサーバーの状態監視をnet-snmpとcactiで行っているのですが、これを見ていると常にメモリーの使用率が90%以上なんですよね・・・そこでこれはいくらなんでもおかしいということで、こういった基礎的なことを初心に戻って再度確認しようと思ったわけです。で、実際、マシーンにログインしてコンソールより、
[root@localhost.localdomain yokohama]# free
そうすると、以下のような画面が出るわけです。
| total | used | free | shared | buffers | cached | |
| Mem: | 1025268 | 861812 | 163456 | 0 | 101120 | 561948 |
| -/+ buffers/cache: | 198744 | 826524 | ||||
| Swap: | 1052248 | 16176 | 1036072 | |||
ここでfreeの部分を見るとドキ!っとしてしまいます。
『残り163M !?』。。。
しかしここは冷静に見つめなおします。
まず、 ここで表記されている数字の単位はKなので、free領域が大体163Mなのは間違いが無いでしょう。しかし、カーネルは現在稼動しているプロセスに対して必要なメモリーを割り振った余りを、bufferとcacheに割り振ります。これは余計なディスクIOを減らすための工夫です。
と言うことは実際にあまっているメモリーの容量は、
free + buffer + cachedの合計であり、163456 + 101120 + 561948 = 826524K
と、約826Mとなるわけです。このマシーンの搭載メモリー量は1Gなので、約80%が空き状態になっているということです。いや、しかし一瞬ドキッとしましたが、結果、cactiで表示されているグラフも、freeとbuffersとcachedの合計が、余り領域と見ればいいわけです。

