Linuxのメモリ空き容量の計算方法が分かりません。


よく、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

結局のところ、どれだけメモリを使っているのでしょうか。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/10/05 23:20:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:JULY No.1

回答回数966ベストアンサー獲得回数247

ポイント60pt

IBM Linux のメモリー・フットプリントを削減する - Japan

各プロセスが使っている共有ライブラリが重複してカウントされるので、ps での合計サイズは free で見たときよりも大きくまります。

id:huruyosi No.2

回答回数30ベストアンサー獲得回数3

ポイント10pt

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からプロセスに割り当てが行なわれると、それなりに(?)パフォーマンスが悪くなるかもしれません。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません