よく、free + buffers + cached の合計がメモリの空きだと聞きます。
free
total used free shared buffers cached
Mem: 4151320 3768568 382752 0 68868 3202144
-/+ buffers/cache: 497556 3653764 ←これ
Swap: 2096472 285728 1810744
でも、ps の RSSを合計してみると、かなり違います。
ps -e -o rss | perl -n -e 'BEGIN{$a=0;} $a += $_; END{print $a,"\n";}'
1911572
◆freeで見ると : 4GBのメモリ - 空きは 3.65 = 使用量はおよそ400MBぐらい
◆RSS合計で見ると: 使用量は1.9GB
結局のところ、どれだけメモリを使っているのでしょうか。
IBM Linux のメモリー・フットプリントを削減する - Japan
各プロセスが使っている共有ライブラリが重複してカウントされるので、ps での合計サイズは free で見たときよりも大きくまります。
psコマンドのRSS列からメモリ使用量を求めるにJULYさんの回答にあるようにも共有メモリを考慮する必要があります。
共有メモリについてはipcs(8)で調べることができます。
[root@dev ~]# ipcs -m ------ 共有メモリセグメント -------- キー shmid 所有者 権限 バイト nattch 状態 0x00000000 65536 root 600 393216 2 対象 0x00000000 98305 root 600 393216 2 対象 0x00000000 131074 root 600 393216 2 対象 0x00000000 163843 root 600 393216 2 対象 0x00000000 196612 root 600 393216 2 対象 0x00000000 229381 root 600 393216 2 対象 0x00000000 262150 root 600 393216 2 対象 0x00000000 294919 root 777 393216 2 対象 0x00000000 327688 root 600 393216 2 対象 0x00000000 360457 root 600 393216 2 対象 0x00000000 393226 root 600 393216 2 対象 0x00000000 425995 root 600 393216 2 対象 [root@dev ~]#
nattchは共有メモリに結び付けられたプロセスの数なのでRSSの合計からバイト x nattchを差し引くことで多少はfreeの数字に近づくかもしれません。(ここは検証していないので外していたらごめんなさい)
結局は「free + buffers + cached」で概ね実害はないと思います。ただ、buffersとcachedの役割は文字通りで、buffersやcachedからプロセスに割り当てが行なわれると、それなりに(?)パフォーマンスが悪くなるかもしれません。
コメント(0件)