为什么我的 Ubuntu 系统中没有可用内存?

为什么我的 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 呢?

答案1

正如 KahWee Teng 所说,这不是一件坏事。看起来你的大部分 RAM 都被用作缓存,这是一件非常好的事情。有关更多详细信息,请参见此处:

http://www.linuxatemyram.com/

答案2

这不一定是坏事。至少您的应用程序正在使用它们。话虽如此,6GB 仍然用得很多。您是否调整了 PostgreSQL 的配置?

顺便说一下,top 中的内存与 free 中的内存加起来并不多。

您可能想阅读有关记忆的更多文章:

答案3

这是因为 Linux 不会完全释放内存。它会将内存缓存到内存中,以备将来需要。如果磁盘已满,则将释放最后使用的内存段。这是一种调整。(forums.gentoo.org/viewtopic.php?t=175419)它比我更好地解释了这种情况 :>

答案4

缓冲区 + 缓存。

请参阅此示例“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

总内存为 2Gb,已使用 (1413) == 898 (进程) + 14 (缓冲区) + 500 (缓存)

Linux 大量使用 RAM 来缓存/缓冲内容,因此使用 100% 的 RAM 非常正常。只要进程使用的内存达到 100%(即 RAM 用完),就会出现问题。

相关内容