我们如何能够通过总结在Linux进程和释放内存占用的内存为RAM大小达到? [重复](how w

2019-10-21 07:07发布

这个问题已经在这里有一个答案:

  • 我怎样才能找到我的Linux机器的总物理内存(RAM),适合于通过shell脚本解析? 11个回答

我想知道如何计算总RAM,我们如何能够通过总结的“猫PROC / meminfo中”命令的输出,在RAM大小达到

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

任何一个可以帮助

Answer 1:

你需要一个工具,需要共享内存考虑这样做。

例如, 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一起将导致共享MEM段分别计算多次这样的数字不会加起来)。

因此,用户态进程这里占用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 用户态过程,上述 + 346Mb 内核 打散为 MEM + 16Mb的自由
(给予或采取几MB)



文章来源: how we can reach at RAM size by summing up the memory occupied by processes and free memory in linux? [duplicate]