我有一台具有 24 GB RAM 的物理机,它使用 libvirt-qemu 托管一些虚拟机。
在创建虚拟机时,我分配了很多内存,没有交换,这样分配的内存总量可以大于主机上的物理内存,交换是在主机级别全局管理的。我在互联网上找到了这个建议,这对我来说很有意义。
我最近发现我们有内存问题,在给机器添加物理内存之前,我htop
在主机和来宾中启动,有些地方我不太明白。
客人
客人 1
- 总计:16G
- 使用:2.5G
- 二手+缓存:13G
客人 2
- 总计:16G
- 使用:1.8G
- 二手+缓存:3.6G
客人 3
- 总计:10G
- 使用:0.5G
- 已用+缓存:1G
...(忽略一些较小的客人)
主持人
- 总计:23.5G
- 使用:23.2G
- 二手+缓存:23.5G
- 交换总量:18.6G
- 使用:12.5G
主机上的进程列表(我只按数字顺序复制了来宾 1、2 和 3):
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
2212 libvirt-q 20 0 21.3G 9.6G 3476 S 118. 41.0 1867h qemu-system-x86_64 -enable-kvm -name guest=guest_1 ...
2391 libvirt-q 20 0 21.2G 2455M 1020 S 4.0 10.2 56h49:10 qemu-system-x86_64 -enable-kvm -name guest=guest_2 ...
40694 libvirt-q 20 0 14.7G 7545M 1668 S 1.3 31.4 94h35:35 qemu-system-x86_64 -enable-kvm -name guest=guest_3 ...
...
我想了解的是为什么来宾 1 当前使用2.5G但相应的 qemu 进程在主机上使用9.6G物理 RAM。
如果这很重要,所有机器都是 Debian。主持人是 debian Stratch,客人是 Stretch 和 Jessie。
根据您在上面发布的数据,您的客人 1 正在使用主机分配给它的 13G 内存(在进程分配和缓存分配之间分配)。您的主机仅显示 9.6 G 驻留,因此我认为其中一些 13GB 已被推出以进行交换。