目前,我正在Amazon EC2上运行一个GPU集群计算节点,每个实例都有22 GB的RAM。 top确认实例确实具有22 GB的RAM,但在空闲系统上,显示5-6 GB的RAM一直在使用中。 top和ps aux都不能识别这种用法所归属的进程。
5-6 GB对于操作系统来说似乎太大了,但也许我错了。 由于亚马逊的虚拟化,这可能是一个开销吗? 任何其他的想法或build议如何我可以跟踪这个?
当你看上面的时候 ,你看到的空闲内存就是内核caching之前的值。
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内核会在内部caching大部分内存,所以top只显示619748kB的空闲内存。 但是,如果你使用free命令来看它,你就会明白,实际上,大部分的内存在caching中是可用的。
$ free total used free shared buffers cached Mem: 3985464 3365716 619748 0 752796 1439152 -/+ buffers/cache: 1173768 2811696 Swap: 1951740 12 1951728
真正的空闲内存是在缓冲区/caching线上显示的内存。
total used free shared buffers cached -/+ buffers/cache: 1173768 2811696
这款机器为2.8GB的免费内存。