web-dev-qa-db-ja.com

Ubuntuシステムに空きメモリがないのはなぜですか?

したがって、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が使用されているのですか?

2
Wells Oliver

KahWee Tengが言ったように、それは悪いことではありません。ほとんどのRAMがキャッシュに使用されているようですが、これは非常に良いことです。詳細については、こちらを参照してください。

http://www.linuxatemyram.com/

3
EEAA

それは必ずしも悪いことではありません。少なくともあなたのアプリケーションはそれらを使用しています。とは言うものの、6GBはまだ多く使用されています。 PostgreSQLの設定を微調整しましたか?

ちなみに、一番上のメモリは空きメモリになりません。

あなたはメモリについてもっと読みたいと思うかもしれません:

1
KahWee Teng

これは、Linuxがメモリを完全に解放しないためです。将来必要になった場合に備えて、メモリにキャッシュします。ディスクがいっぱいの場合、最後に使用されたメモリセグメントが解放されます。それはある種の微調整です。 (forums.gentoo.org/viewtopic.php?t=175419)それは私よりもはるかに状況を説明しています:>

0

バッファ+キャッシュ。

このサンプルの「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%に達すると、問題が発生します(つまり、羊)。

0
Fran Garcia