![虚拟化 Debian 9 与裸机 Debian 9 对“可用内存”的解释不同](https://linux22.com/image/738661/%E8%99%9A%E6%8B%9F%E5%8C%96%20Debian%209%20%E4%B8%8E%E8%A3%B8%E6%9C%BA%20Debian%209%20%E5%AF%B9%E2%80%9C%E5%8F%AF%E7%94%A8%E5%86%85%E5%AD%98%E2%80%9D%E7%9A%84%E8%A7%A3%E9%87%8A%E4%B8%8D%E5%90%8C.png)
我在两个 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
?在得出这些结论时,我是否忽略了与内存相关的关键虚拟化概念?谢谢!