Linux:查找正在使用的总内存...无需 free(1) 或 /proc

Linux:查找正在使用的总内存...无需 free(1) 或 /proc

首先,问题是:我需要找出 Linux 系统(CentOS)上总共使用了多少内存(加减一兆字节),但任何通用解决方案都应该有效。我想以某种方式解析 ps aux,但添加 VSZ RSS 不起作用。

现在,对于“你为什么要给自己设置障碍”的解释,如果你关心的话……

我位于 OpenVZ 容器内。通常,free -m 或 cat /proc/meminfo 可以正常工作,但主机操作系统有一个错误。提供商不想将所有容器都关闭以进行修补,因此我不得不忍受一段时间。不幸的是,如果我重新启动 VPS,我必须打开一张票以重置计数器,否则在我看来我的 VPS 有 10GB 的 RAM,其中包括 meminfo 和 free。本周,我自然会进行各种测试和重新启动。

VPS 确实只有 1GB/2GB 的突发空间。如果一切顺利,我看到有 2048M 可用,并且 free -m 输出正常。

我确实需要找到一个解决方案,不依赖于 proc 就能显示正在使用的正确内存......如果可能的话。

答案1

抱歉,我觉得你运气不好。如果主机有 bug 导致你无法看到正确的内存量,那么我认为没有办法解决这个问题。如果你的内核无法确定内存量,那么还有什么办法呢?

也许你可以用一些内核参数欺骗你的内核,使它只有 2 GB 可用?如果你运行 32 位系统,你可以得到一个只分配 1 GB 的内核。如果我没记错的话,你可以配置一个 32 位内核来分配最多 1 GB(我认为更接近 750MB)、4 GB 或 64 GB(bigmem),后者会带来性能损失。而且你实际上无法为每个进程分配超过 4 GB 的内存。

看:http://www.kernel.org/doc/Documentation/kernel-parameters.txt

mem=nn[KMG] [KNL,BOOT] Force usage of a specific amount of memory
        Amount of memory to be used when the kernel is not able
        to see the whole system memory or for test.

看看是否可以找到可以使用的其他参数。

相关内容