当我在我的 Red Hat 7.2 机器上使用“top”命令时,它告诉我 4.0 gig 的 RAM 中有大约 3.9 正在使用中,并且大约有 135meg 空闲。
然而,当我使用“ps”命令列出所有进程及其内存使用情况时,列表加起来只有大约 650 兆。
这是预期的行为,还是有什么事情应该引起关注?我读到 Linux 将使用空闲 RAM 来缓存磁盘中经常使用的文件,这是否可以解释“缺失”的 RAM 利用率?
谢谢!
IVR 复仇者
当我在我的 Red Hat 7.2 机器上使用“top”命令时,它告诉我 4.0 gig 的 RAM 中有大约 3.9 正在使用中,并且大约有 135meg 空闲。
然而,当我使用“ps”命令列出所有进程及其内存使用情况时,列表加起来只有大约 650 兆。
这是预期的行为,还是有什么事情应该引起关注?我读到 Linux 将使用空闲 RAM 来缓存磁盘中经常使用的文件,这是否可以解释“缺失”的 RAM 利用率?
谢谢!
IVR 复仇者
你的猜测很可能是正确的。
top 给出的“可用内存”数字不包括用于文件系统缓存或缓冲区的内容。分配给文件系统缓存的内存是免费的,因为如果一个进程需要其中的一些,它可以很容易地可用,但 top 不会显示这个。
在“-/+ 缓冲区/缓存”行上,您可以更好地了解您的进程实际使用了多少内存(以 MB 为单位)。
当然,它仍然不可能完全等于基于 ps 输出的计算,因为在 Linux 中计算内存使用量很棘手,尤其是在共享内存方面。
在以下示例中,1287MB 作为可用内存的视图比 31MB 更准确。
top 经常存在过度报告共享内存的问题;这种现象的一个完美例子是 Java Application Server 或 apache。