顶部没有准确显示内存使用情况

顶部没有准确显示我的内存使用情况,还是我的VPS提供商做了一些奇怪的事情? 正如你在图中所看到的,它使用了90%的内存,但是当你看看实际使用内存的进程时,它甚至不会超过30%。 我知道当进程拥有共享内存的时候top不能正确显示,但是例如使用共享内存的httpd prodcesses即使在总结时也几乎不占用任何可用内存的百分比。

内存使用后,图片中的顶部命令被sorting,所以没有大的进程隐藏。

http://i.imgur.com/GGBXCN9.png (显然我没有足够的声望发布图片是问题。)

以文本格式输出顶部输出:

Tasks: 49 total, 1 running, 48 sleeping, 0 stopped, 0 zombie Cpu(s): 17.7%us, 1.1%sy, 0.0%ni, 81.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.3%st Mem: 2097152k total, 1858988k used, 238164k free, 0k buffers Swap: 2097152k total, 140740k used, 1956412k free, 1089504k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 812 mysql 20 0 513m 241m 5104 S 4.7 11.8 108:32.39 mysqld 882 root 20 0 344m 219m 6116 S 0.0 10.7 1:08.81 clamd 26111 root 20 0 851m 34m 9720 S 0.0 1.7 1:30.03 java 22155 cpanelro 20 0 94272 10m 2392 S 0.0 0.5 0:00.04 cpsrvd-ssl 22260 cpanelro 20 0 94092 9792 2272 S 0.0 0.5 0:00.02 cpsrvd-ssl 21175 cpanelro 20 0 94092 9704 2276 S 0.0 0.5 0:00.03 cpsrvd-ssl 7491 root 20 0 47732 8520 2176 S 0.0 0.4 0:00.10 leechprotect 623 named 20 0 245m 5256 1940 S 0.3 0.3 11:58.59 named 1639 root 20 0 46644 5172 1408 S 0.0 0.2 1:46.64 tailwatchd 1472 root 20 0 93828 4972 1352 S 0.0 0.2 0:17.42 cpsrvd-ssl 23781 root 20 0 38800 4928 2160 S 0.0 0.2 0:00.57 zsh 17788 nobody 20 0 69072 4336 2488 S 0.0 0.2 0:00.21 httpd 917 root 20 0 68588 4288 3000 S 0.0 0.2 0:28.16 httpd 21152 nobody 20 0 69124 4224 2456 S 0.0 0.2 0:00.05 httpd 20549 nobody 20 0 68992 3716 1996 S 0.0 0.2 0:00.07 httpd 20550 nobody 20 0 68992 3536 1792 S 0.0 0.2 0:00.06 httpd 21996 nobody 20 0 68992 3508 1788 S 0.0 0.2 0:00.02 httpd 20544 nobody 20 0 68992 3484 1804 S 0.0 0.2 0:00.05 httpd 21995 nobody 20 0 68992 3432 1704 S 0.3 0.2 0:00.02 httpd 22228 nobody 20 0 68992 3396 1704 S 0.0 0.2 0:00.00 httpd 22226 nobody 20 0 68588 3300 1924 S 0.0 0.2 0:00.00 httpd 21154 nobody 20 0 68720 3172 1716 S 0.0 0.2 0:00.03 httpd 

免费更新-m:

 free -m total used free shared buffers cached Mem: 2048 1864 183 0 0 1063 -/+ buffers/cache: 800 1247 Swap: 2048 137 1910 

请记住,“积极”和“消耗”记忆是有区别的。 Linux往往会将大量的数据存储在内存中,以备将来使用。 但是进程可能不会主动使用这个内存 – 在这种情况下,他们报告“已用”内存的数量较less。

如果一个进程突然需要更多的内存,那么内核将释放一些caching的数据,并允许进程使用它。

所以在技术上,内存既是“使用”又是“自由”的。

你应该熟悉“ 自由 ”命令。 我也喜欢使用htop而不是top,因为它显示了这些差异。

这是一个以前的问题,答案很好。 给它一个阅读,你应该更好地理解如何解释“顶级”的数据。