我目前正在 Amazon EC2 上运行单个 GPU 集群计算节点,该节点显示每个实例有 22 GB 的 RAM。top
确认该实例确实有 22 GB 的 RAM,但在空闲系统上似乎始终有 5-6 GB 的 RAM 在使用中。两者都top
无法ps aux
确定此使用归因于哪些进程。
在我看来,5-6 GB 对于操作系统来说似乎太大了,但也许我错了。这可能是由于 Amazon 上的虚拟化而产生的开销吗?还有其他关于如何追踪此问题的想法或建议吗?
答案1
当你看着顶部,你看到的空闲内存是内核缓存之前的值。
top - 12:59:25 up 1 day, 15:47, 5 users, load average: 0.04, 0.10, 0.12
Tasks: 161 total, 1 running, 160 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.5%us, 1.8%sy, 0.0%ni, 94.2%id, 0.4%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 3985464k total, 3369908k used, 615556k free, 752964k buffers
Swap: 1951740k total, 12k used, 1951728k free, 1439160k cached
我的笔记本电脑总共有 3985464 千字节内存。但 Linux 内核会在内部缓存其中的大部分,因此顶部只显示 619748kB 的可用内存。但是如果你使用自由的命令,你明白,事实上,大部分内存可用......在缓存中。
$ free
total used free shared buffers cached
Mem: 3985464 3365716 619748 0 752796 1439152
-/+ buffers/cache: 1173768 2811696
Swap: 1951740 12 1951728
真正的可用内存是缓冲区/缓存线。
total used free shared buffers cached
-/+ buffers/cache: 1173768 2811696
本机有2.8GB可用内存。