Linux免费显示高内存使用率,但顶部没有
在RedHat Linux 6.2上,我运行的是free -m
,它显示几乎所有的8GB
使用
total used free shared buffers cached Mem: 7989 7734 254 0 28 7128 -/+ buffers/cache: 578 7411 Swap: 4150 0 4150
但同时在top -M
我看不到任何使用所有这些内存的进程:
top - 16:03:34 up 4:10, 2 users, load average: 0.08, 0.04, 0.01 Tasks: 169 total, 1 running, 163 sleeping, 5 stopped, 0 zombie Cpu(s): 0.7%us, 0.3%sy, 0.0%ni, 98.6%id, 0.4%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 7989.539M total, 7721.570M used, 267.969M free, 28.633M buffers Swap: 4150.992M total, 0.000k used, 4150.992M free, 7115.312M cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1863 sroot 20 0 398m 24m 9.8m S 0.3 0.3 3:12.87 App1 1 sroot 20 0 2864 1392 1180 S 0.0 0.0 0:00.91 init 2 sroot 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 sroot RT 0 0 0 0 S 0.0 0.0 0:00.07 migration/0 4 sroot 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 5 sroot RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 6 sroot RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 7 sroot RT 0 0 0 0 S 0.0 0.0 0:00.08 migration/1 8 sroot RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/1
我也试过这个ps mem脚本,但是它显示了大约400MB的内存使用。
不要看“Mem”行,看下面的那个。
Linux内核消耗尽可能多的内存来提供I / Ocaching(以及其他非关键caching,但是caching将是这种使用的大部分)。 这个内存在他们请求的时候放弃进程。 在“ – / + buffers / cache”这一行显示了I / Ocaching后的调整值,即进程使用的内存量和进程可用的数量(在这种情况下,使用了578MB, 7411MB免费)。
“Mem”和“ – / + buffers / cache”行之间的已用内存的差异表明内核对于高速caching使用了多less内存:I / O高速caching中有7734MB – 578MB = 7156MB。 如果进程需要这个内存,内核将简单地缩小I / Ocaching的大小。
另外,由于第一行显示了total used free shared buffers cached Mem: 7989 7734 254 0 28 7128 -/+ buffers/cache: 578 7411
如果我们添加(高速caching[7128] +缓冲区[28] +空闲[254]),我们将近似获得第二行的空闲值[7411]值7128 + 28 + 254 = 7410