我有一台具有 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 Statch,客户机是 Stretch 和 Jessie。
答案1
我想知道为什么 Guest 1 当前使用 2.5G 但相应的 qemu 进程在主机上使用 9.6G 物理 RAM。
根据您上面发布的数据,您的客户机 1 正在使用主机分配给它的 13G 内存(分为进程分配和缓存分配)。您的主机仅显示 9.6 G 常驻内存,因此我推测这 13GB 中的一部分已被推送到交换区。