したがって、free
は、合計12318288バイト、11916148使用済み、および402140空き(事実上何もない)を報告します。
次に、top
は次のようになります。
Mem: 12318288k total, 11916596k used, 401692k free, 53756k buffers
Swap: 11894776k total, 40596k used, 11854180k free, 11291256k cached
ただし、MEM%でソートした場合の最初のいくつかのプロセスは次のとおりです。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1288 postgres 20 0 6361m 6.0g 6.0g S 0 51.3 4:14.82 postgres
1285 postgres 20 0 6358m 125m 125m S 0 1.0 0:04.04 postgres
490 www-data 20 0 232m 30m 4536 S 0 0.3 0:00.42 Apache2
493 www-data 20 0 229m 27m 4412 S 0 0.2 0:00.30 Apache2
499 www-data 20 0 227m 25m 4552 S 0 0.2 0:01.30 Apache2
500 www-data 20 0 227m 25m 4272 S 0 0.2 0:00.65 Apache2
491 www-data 20 0 225m 23m 4328 S 0 0.2 0:00.22 Apache2
583 www-data 20 0 226m 23m 4272 S 0 0.2 0:00.17 Apache2
32603 nobody 20 0 145m 21m 876 S 0 0.2 0:00.46 memcached
Postgresに割り当てられた6GB以外にメモリを占有しているようには見えないのに、なぜ12GBのRAMが使用されているのですか?
KahWee Tengが言ったように、それは悪いことではありません。ほとんどのRAMがキャッシュに使用されているようですが、これは非常に良いことです。詳細については、こちらを参照してください。
それは必ずしも悪いことではありません。少なくともあなたのアプリケーションはそれらを使用しています。とは言うものの、6GBはまだ多く使用されています。 PostgreSQLの設定を微調整しましたか?
ちなみに、一番上のメモリは空きメモリになりません。
あなたはメモリについてもっと読みたいと思うかもしれません:
これは、Linuxがメモリを完全に解放しないためです。将来必要になった場合に備えて、メモリにキャッシュします。ディスクがいっぱいの場合、最後に使用されたメモリセグメントが解放されます。それはある種の微調整です。 (forums.gentoo.org/viewtopic.php?t=175419)それは私よりもはるかに状況を説明しています:>
バッファ+キャッシュ。
このサンプルの「free-m」出力を参照してください。
$ free -m
total used free shared buffers cached
Mem: 1936 1413 522 0 14 500
-/+ buffers/cache: 898 1037
Swap: 2047 259 1788
合計RAMは2Gb、使用済み(1413)== 898(プロセス)+ 14(バッファー)+ 500(キャッシュ)
LinuxはRAMをキャッシュ/バッファリングに多用しているため、RAMを100%使用するのはごく普通のことです。プロセスで使用されるメモリが100%に達すると、問題が発生します(つまり、羊)。