为什么顶部的%MEM值不累加到已使用的总内存中?


18

我目前正在调试VPS的性能问题,为此,我试图了解哪个进程占用了最多的内存。阅读顶部,这是我得到的:

Mem:    366544k total,   321396k used,    45148k free,      380k buffers
Swap:  1048572k total,   592388k used,   456184k free,     7756k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                  
12339 ruby      20   0  844m  74m 2440 S    0 20.8   0:24.84 ruby                                                                                     
12363 ruby      20   0  844m  73m 1576 S    0 20.6   0:00.26 ruby                                                                                     
21117 ruby      20   0  171m  33m 1792 S    0  9.3   2:03.98 ruby                                                                                     
11846 ruby      20   0  858m  21m 1820 S    0  6.0   0:09.15 ruby                                                                                     
21277 ruby      20   0  219m  11m 1648 S    0  3.2   2:00.98 ruby                                                                                     
  792 root      20   0  266m  10m 1024 S    0  3.0   1:40.06 ruby                                                                                     
  532 mysql     20   0  234m 4760 1040 S    0  1.3   0:41.58 mysqld                                                                                   
  793 root      20   0  250m 4616  984 S    0  1.3   1:20.55 ruby                                                                                     
  586 root      20   0  156m 4532  848 S    0  1.2   6:17.10 god                                                                                      
12315 ruby      20   0  175m 2412 1900 S    0  0.7   0:07.55 ruby                                                                                     
 3844 root      20   0 44036 2132 1028 S    0  0.6   1:08.22 ruby                                                                                     
10939 ruby      20   0  179m 1884 1724 S    0  0.5   0:08.33 ruby                                                                                     
 4660 ruby      20   0  229m 1592 1440 S    0  0.4   2:55.46 ruby                                                                                     
 3879 nobody    20   0 37428  964  520 S    0  0.3   0:01.99 nginx 

如您所见,我的内存已使用了大约90%(这是我的问题),但是当您将%MEM值相加时,它只会达到大约50-60%。同样,RES总计不超过350mb。为什么?我误会了他们的意思吗?

谢谢


我认为top会根据显示大小调整显示的行数,因此所有过程可能都不可见。
Samik 2012年

Answers:


6

我试图了解哪个进程消耗最多的内存。

很简单:红宝石

当您将%MEM值相加时,仅达到约50-60%

实际上,将显示的列相加得出69.2%

  • 正如Samik所指出的那样,这当然并不包括您系统上的所有进程-尝试将bin的输出粘贴top -b -n 1到文件中,以获取完整输出并与我们共享,以便我们更好地帮助您。

  • 另外,内核会占用一定数量的内存,并且某些VPS(例如Xen,KVM)会在启动时保留一些额外的内存供内部使用。也粘贴输出dmesg

为了获得更好的指标和易用性,我建议您使用htop安装htop而不是top,并启用“隐藏userland线程”选项:

在此处输入图片说明

另请参阅memtop

在此处输入图片说明


这是完整的顶部输出:paste.ubuntu.com/1055673和dmesg:paste.ubuntu.com/1055674使用htop给我不同的输出!我看到3个22.4%MEM进程,实际上,许多进程是重复的(mysqld也很多次)。无论如何,我都喜欢输出,更清洁……Memtop也很酷,我可以更好地了解哪个红宝石应用程序消耗了最多的内存;)
2012年

0

linux top命令显示了ram所使用的全部内存,不仅为您,还为系统。linux caches从硬盘的某些区域开始,以加快计算机的速度。建议使用其他任何内存监视器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.