我们如何通过总结linux中进程占用的内存和可用内存来达到RAM大小?

时间:2014-11-19 13:04:53

标签: linux memory linux-kernel

我想知道如何计算总RAM,我们如何通过总结“cat proc / meminfo”命令的输出来达到RAM大小

Memtotal = MemFree +?...........

任何人都可以提供帮助

1 个答案:

答案 0 :(得分:0)

您需要一个将共享内存考虑在内的工具来执行此操作。

例如,smem

# smem -t
  PID User     Command                         Swap      USS      PSS      RSS
...
10593 root     /usr/lib/chromium-browser/c        0    22868    26439    49364 
11500 root     /usr/lib/chromium-browser/c        0    22612    26486    49732 
10474 browser  /usr/lib/chromium-browser/c        0    39232    43806    61560 
 7777 user     /usr/lib/thunderbird/thunde        0    89652    91118   102756 
-------------------------------------------------------------------------------
  118 4                                       40364   594228   653873  1153092 

PSS这里是一个有趣的专栏,因为它考虑了共享内存(将RSS加在一起会导致共享内存片段被多次计数,因此数字不会加起来)。< / p>

所以userland进程总共需要654Mb。

# smem -tw
Area                           Used      Cache   Noncache 
firmware/hardware                 0          0          0 
kernel image                      0          0          0 
kernel dynamic memory        345784     297092      48692 
userspace memory             654056     181076     472980 
free memory                   15828      15828          0 
----------------------------------------------------------
                            1015668     493996     521672 

内核使用346Mb,并且有16Mb空闲 总体而言,大约一半的内存用于缓存(494Mb)。

所以1Gb RAM总计 = 654Mb userland进程,分解如上 + 346Mb 内核mem + 16Mb free
(给或拿几个Mb)