为什么顶部的 %MEM 值加起来不等于总使用的内存?

为什么顶部的 %MEM 值加起来不等于总使用的内存?

我目前正在调试 VPS 的性能问题,为此,我试图了解哪些进程占用的内存最多。阅读 top 后,我得到了以下信息:

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。为什么?我误解了它们的含义吗?

谢谢

答案1

我试图了解哪个进程占用最多的内存。

这很简单:红宝石

当你把%MEM值加起来时,它只会达到大约50-60%

实际上,按照图示将各列相加可得出69.2%

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

  • 此外,内核会占用一定量的内存,某些类型的 VPS(例如 Xen、KVM)将在启动时保留一些额外内存供其内部使用。Pastebin 的输出dmesg也是如此。

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

在此处输入图片描述

另请查看memtop

在此处输入图片描述

答案2

linuxtop命令显示所使用的整个ram内存,不仅是您的内存,还有系统的内存。linuxcaches从您的硬盘上删除一些区域以加快您的计算机速度。建议使用任何其他内存监视器。

相关内容