Linux free 显示高内存使用率,但 top 没有

新手上路,请多包涵

在 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 内存。

原文由 DarVar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

不要看“Mem”这一行,看它下面的那一行。

Linux 内核消耗尽可能多的内存来提供 I/O 缓存(和其他非关键缓冲区,但缓存将是这种用途的大部分)。当进程请求时,该内存将被放弃给进程。 “-/+ buffers/cache”行显示了在考虑 I/O 缓存后调整的值,即进程使用的内存量和进程可用的量(在本例中,使用 578MB 和7411MB 免费)。

“Mem”和“-/+ buffers/cache”行之间已用内存的差异显示内核为缓存而使用了多少:I/O 缓存中的 7734MB - 578MB = 7156MB。如果进程需要此内存,内核将简单地缩小 I/O 缓存的大小。

原文由 cdhowie 发布,翻译遵循 CC BY-SA 3.0 许可协议

另外,如第一行所示 total used free shared buffers cached Mem: 7989 7734 254 0 28 7128 -/+ buffers/cache: 578 7411

如果我们添加 (cached[7128] + buffers[28] + free[254]),我们将得到大约第二行的 free[7411] 值 7128 + 28 + 254 = 7410

原文由 Gnana 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题