![Linux 服务器内存使用情况和缓存可用性](https://linux22.com/image/649640/Linux%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%86%85%E5%AD%98%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5%E5%92%8C%E7%BC%93%E5%AD%98%E5%8F%AF%E7%94%A8%E6%80%A7.png)
这是一个已经讨论过的话题,但有一点我不太确定。
我想看看我的服务器内存是否合适(操作系统是 centos 6)。我运行将在服务器上作为生产运行的进程,并检查内存使用情况。
检查剩余的可用内存量,我读了很多帖子,发现缓存内存被 top 或 free 等工具视为已使用内存,而对于需要的进程来说,它是可用的内存。(我发现 free -m 输出更清晰,因为它显示缓冲区/缓存行)
这总是正确的吗?因为我读过一些帖子说将缓存内存解释为可用内存并不总是正确的,例如当系统使用 initramfs(而不是 initrd,如果我理解得没错的话?)时。我尝试挖掘一些关于 initramfs 和 initrd 的阅读材料,但我不得不承认这让我有些头疼 :/
所以现在我有点困惑:
- 我如何才能获得剩余可用内存的“实际”数量:我应该检查我的系统是否依赖于 initramfs 而不是 initrd 来查看显示为缓存内存的内容是否可以算作可用内存?
- 进程是否可以以不同的方式使用内存,以便其消耗(进程运行时)仅出现在缓存内存显示上,而不出现在已用内存显示上?
非常感谢,
如果说得不清楚,我很抱歉,我心里没有这样想
答案1
对于大多数用途,将缓存内存视为可用内存是完全可以的。但对于 RAMdisk 文件系统(如 initramfs),一小部分内存将专用于 RAMdisk。这部分内存不被视为可用,但在大多数情况下,此 RAMdisk 足够小,在内存消耗方面相对不重要。如果出于某种原因您需要随时确切知道有多少可用内存,则需要确定 RAMdisk 的确切大小或选择不使用 RAMdisk 系统。