我正在运行两个虚拟机(Ubuntu 18.04),两者都有 0.5 GiB 内存。一个在 AWS 上,一个在 Azure 上。我发现尽管两个系统都有 512 MiB 内存,但 AWS 系统有 479 MiB 可用内存:
~$ free --mebi
total used free shared buff/cache available
Mem: 479 131 17 1 330 334
Swap: 0 0 0
而Azure系统只有392 MiB:
~$ free --mebi
total used free shared buff/cache available
Mem: 392 289 28 2 74 89
Swap: 0 0 0
我发现这两个系统之间最大的区别是 Azure 系统在启动时保留了更多的内存:
亚马逊AWS:
~$ dmesg | grep "Memory"
[ 0.000000] Memory: 467376K/523892K available (12300K kernel code, 2394K rwdata, 3924K rodata, 2376K init, 2376K bss, 56516K reserved, 0K cma-reserved)
天蓝色:
~$ dmesg | grep "Memory"
[ 0.000000] Memory: 376860K/523832K available (14348K kernel code, 2578K rwdata, 4252K rodata, 2320K init, 2296K bss, 146972K reserved, 0K cma-reserved)
有没有办法可以枚举每个驱动程序、内核模块和内核本身使用和保留的内存?或者更广泛地说,有人知道为什么 Azure VM 使用更多内存吗?