CentOS 5.7 专用服务器。未运行占用大量内存的进程。已安装 12GB RAM。
Mem: 12462256k total, 12425344k used, 36912k free, 395528k buffers
Swap: 1999864k total, 344k used, 1999520k free, 10795472k cached
我联系了我们的服务器提供商,他们说:
缓存内容约为 10 GB,这是系统经常访问的信息,这样服务器在需要信息时就可以更快地访问它。这些信息总是可以被释放,内存可以分配给其他需要。
那有意义吗?
我检查了另一台只有 4GB RAM 的服务器。它也处于“无所事事”状态,但可以肯定的是,99% 的 RAM 被标记为“已使用”。但在这种情况下,只有极少部分被标记为“缓存”。
Mem: 3969436k total, 3945568k used, 23868k free, 352740k buffers
Swap: 2097144k total, 1206984k used, 890160k free, 53232k cached
有人能理解这一点吗?
答案1
服务器专用于运行什么?虽然确实很奇怪,但我在 VirtualBox VM 服务器中看到了这种行为。不过,我认为服务器提供商的答案是足够的。他们似乎正在使用可用的 RAM 作为快速存储位置。一定有一个应用程序(或系统驱动程序)占用了您的 RAM。
“Top” 有点难导航。试试“htop”,您可以更轻松地查看内容。RAM 使用量表上有颜色编码,因此您可以查看用户或系统是否正在使用这部分 RAM。
答案2
你可能在想,“我希望有更多空闲的 RAM,以便以后使用”。但你不需要有空闲的 RAM现在以便以后使用。事实上,如果现在正在使用,以后使用它会更容易——你根本不需要做任何事情就可以以后使用它。所以你的问题基本上是“为什么事情这么好?它们不应该更糟吗?”
空闲的 RAM 是纯粹的成本。如果你让 1GB 空闲 10 分钟,那么你就永远失去了在这段时间内使用该内存的机会。你以后不能使用额外的 1GB。因此,现代操作系统只有在别无选择的情况下才会让 RAM 空闲,因为这样就浪费了。只需要大约 32MB,这是在无法直接从一种用途转换到另一种用途的情况下需要 RAM 的情况(例如,在磁盘中断期间)。
答案3
当然,Linux 使用所有 RAM:既用于应用程序,也用于文件系统缓存。您最好使用“cat /proc/meminfo”进行检查。查看“Cached”和“Buffers”行