什么在使用我的 Amazon EC2 实例上的内存?

Joe*_*ery 9 amazon-ec2

我目前正在 Amazon EC2 上运行单个 GPU 集群计算节点,该节点被列为每个实例具有 22 GB 的 RAM。top确认该实例确实有 22 GB 的 RAM,但在空闲系统上,似乎始终使用 5-6 GB 的 RAM。既top不能也ps aux不能识别这种使用可归因于的进程。

对我来说,5-6 GB 对于操作系统来说似乎太大了,但也许我错了。由于亚马逊上的虚拟化,这可能是开销吗?关于如何追踪此问题的任何其他想法或建议?

Ril*_*ndo 7

您看到大量内存被使用的原因是 Linux 将其中大部分用于文件缓存。

这可能会为您澄清一些事情:

http://www.linuxatemyram.com/


Jul*_*ent 5

当您查看top 时,您看到的空闲内存是内核缓存之前的值。

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
Run Code Online (Sandbox Code Playgroud)

我的笔记本电脑总共有 3985464 KB 的内存。但是 linux 内核会在内部缓存大部分内容,因此top仅显示 619748kB 的可用内存。但是,如果您使用free命令查看它,您就会明白,事实上,大部分内存都是可用的……在缓存中。

$ free
             total       used       free     shared    buffers     cached
Mem:       3985464    3365716     619748          0     752796    1439152
-/+ buffers/cache:    1173768    2811696
Swap:      1951740         12    1951728
Run Code Online (Sandbox Code Playgroud)

真正的空闲内存是显示在缓冲区/缓存行上的内存

             total       used       free     shared    buffers     cached
-/+ buffers/cache:    1173768    2811696
Run Code Online (Sandbox Code Playgroud)

本机为2.8GB的空闲内存。