虚拟化 Debian 9 与裸机 Debian 9 对“可用内存”的解释不同

虚拟化 Debian 9 与裸机 Debian 9 对“可用内存”的解释不同

我在两个 Debian 9 系统上拥有相同的软件套件和大致大小的数据集,但有一个很大的区别:os-1在裸机上运行并且具有更好的硬件,而os-2通过 VMWare 进行虚拟化,可用资源稍微少一些。

在操作过程中,当我尝试将总体内存使用情况分解为每个软件所用内存时,我已经无法再关联两个操作系统的内存使用情况报告。特别是:

“top” 和 “free -m” 开启os-1

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
15451 mysql     20   0 9127356 998548 157856 S   0.0  2.4   3246:27 mysqld                                           
   42 root      20   0  271064 176612 176332 S   0.0  0.4  42:19.55 systemd-journal                                  
21979 mongodb   20   0 1616012 129260  35476 S   0.5  0.3 340:30.57 mongod                                           
  130 Debian-+  20   0  126644  78248   5820 S   0.0  0.2  83:17.46 snmpd                                            
  896 root      20   0  370140  36400  28452 S   0.0  0.1   3:06.93 apache2                                          
 1523 www-data  20   0  370212  11472   3480 S   0.0  0.0   0:00.00 apache2

# free -m
              total        used        free      shared  buff/cache   available
Mem:          40000        1131       32612        2398        6256       38868
Swap:          8191          85        8106

“top” 和 “free -m” 开启os-2

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                         
 62285 mysql     20   0 2893200 690956      0 S   0.3  8.5  14097:36 mysqld                                          
 79420 mongodb   20   0 1815116 320700   2300 S   0.7  3.9 245:25.68 mongod                                          
104939 www-data  20   0  445412  39284  16596 S   0.7  0.5   0:21.56 apache2                                         
 97338 www-data  20   0  444964  38704  16480 S   0.3  0.5   0:41.19 apache2                                         
 97313 www-data  20   0  444836  38504  16416 S   0.7  0.5   0:40.33 apache2                                         
 97315 www-data  20   0  444636  38476  16608 S   0.7  0.5   0:42.21 apache2                                         
110249 www-data  20   0  444628  38236  16076 S   0.3  0.5   0:12.58 apache2      

# free -m
              total        used        free      shared  buff/cache   available
Mem:           7969        6067        1170          88         731        1571
Swap:          2927           0        2927

根据我的以下观察:

  • os-1的报告表明,总体使用量大致等于其进程的 RSS 数字之和(即 ~1.1GB),而不是其 VSZ 之和,这相当于“已使用”内存超过 11 GB。公平起见,让我们继续!
  • os-2的报告显示,总体使用量远高于其进程 RSS 值的总和(6GB?!)。我无法再解释这个数字了。

... 下一步该怎么做才能解释报告的高内存使用率的根本原因os-2?在得出这些结论时,我是否忽略了与内存相关的关键虚拟化概念?谢谢!

相关内容