RH 7.2:ps 和 top 中的内存使用情况不匹配;问题还是正常行为?

RH 7.2:ps 和 top 中的内存使用情况不匹配;问题还是正常行为?

当我在 Red Hat 7.2 机器上使用“top”命令时,它告诉我 4.0 GB 的 RAM 中大约有 3.9 GB 正在使用中,还有大约 135MB 的可用空间。

但是,当我使用“ps”命令列出所有进程及其内存利用率时,列表总共只有约 650MB。

这是预期的行为吗?还是有什么事情值得关注?我读到 Linux 将使用可用 RAM 来缓存磁盘中常用的文件,这是否可以解释“缺失”的 RAM 利用率?

谢谢!
IVR Avenger

答案1

你的猜测很可能是正确的。

top 给出的“可用内存”数字不包括用于文件系统缓存或缓冲区的内存。分配给文件系统缓存的内存是空闲的,因为如果某个进程需要其中的一部分内存,可以轻松将其释放,但 top 不会向您显示这一点。

free -m

将让您更好地了解您的进程在“-/+ buffers/cache”行上实际使用了多少内存(以 MB 为单位)。

当然,它仍然可能与您基于 ps 的输出的计算结果不完全相等,因为在 Linux 中计算内存使用情况很棘手,尤其是在共享内存方面。

在下面的例子中,作为可用内存的视图,1287MB 比 31MB 更为准确。

$ free -m
             total       used       free     shared    buffers     cached
Mem:          2002       1970         31          0         48       1207
-/+ buffers/cache:        714       1287
Swap:         1027          3       1023

答案2

top 经常存在过度报告共享内存的问题;这种现象的一个完美例子就是 Java 应用服务器或 apache。

相关内容