人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: the_yakisoba
●カテゴリ:インターネット ウェブ制作
✍キーワード:BEGIN cache Linux Perl print
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● JULY
●60ポイント

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

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


2 ● huruyosi
●10ポイント

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.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ