ps 与 free、RAM 使用情况

ps 与 free、RAM 使用情况

我有一个带 VPSnoc 的 VPS,它表现出一些奇怪的行为。当我用“ps faux”总计 %MEM 列时,我得到大约 23% 的使用率,但当我运行 free 时,我得到 419580/524288 = 80% 的使用率。这是非进程使用的大量 RAM,比我管理的任何其他机器,甚至我朋友的同一提供商的 VPS 都要多得多。

我已经给 VPSnoc 支持发过几次电子邮件了,但他们似乎甚至无法理解系统上发生的这种事情非常奇怪。

我不会抱怨,除了偶尔会出现内存不足错误(例如当我尝试将 apache2 工作程序设置为 >7 个线程或 >8 个同时连接时),这些错误并不好。

这可能是配置问题,我可以修复/解决吗?或者这可能是正常现象吗?我不再希望 VPSnoc 会承认这个问题。

如果有帮助的话,他们使用 OpenVZ。

编辑:我调整了一些 MySQL 设置,这使得 ps 报告的 RAM 使用率从 7% 降至 4%,但 free 报告的 RAM 使用量下降了约 20%。我不再收到内存不足错误,但仍然希望更好地理解报告。free -m 的当前输出为:

             total       used       free     shared    buffers     cached
Mem:           512        320        191          0          0          0
-/+ buffers/cache:        320        191
Swap:            0          0          0

我现在更好地理解了可能存在的缓冲区/缓存差异,但此输出未显示任何差异(或从未在此框中显示过),并且不应该导致实际的内存不足错误。

答案1

http://www.linuxatemyram.com/了解什么是免费显示。

您是否启用了交换功能?

(编辑)并请发布免费的完整输出。

答案2

我使用这个脚本来获取有关内存使用情况的更多信息:http://www.pixelbeat.org/scripts/ps_mem.py

答案3

经过大量的调试和与主机的斗争后,我几乎可以肯定,这只是 OpenVZ 的一个错误,或者是他们使用它的方式的一个错误。似乎 ps 中的 %MEM 显示的是实际物理 RAM 的百分比,而 free 显示的是分配给我的 VPS RAM 中空闲的数量。

答案4

当您运行 时free,“已用”列的输出包括缓冲区和缓存,这对于 Linux 机器来说是正常的。Linux 拥有最先进的内存管理器之一,因此它会尝试利用“空闲”内存来帮助系统中较慢的部分,例如磁盘。检查此输出:

# free
             total       used       free     shared    buffers     cached
Mem:       1048576     924824     123752          0     102444     481004
-/+ buffers/cache:     341376     707200
Swap:      2096472          0    2096472

从这里看,系统似乎消耗了 88% 的内存,但其中约 52% 是操作系统缓存,另外 11% 是缓冲区。这需要一些时间来适应,但 Linux 会尽力利用“空闲”内存。

相关内容