qemu 进程内存使用量大于客户机内存使用量

qemu 进程内存使用量大于客户机内存使用量

我有一台具有 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 中的一部分已被推送到交换区。

相关内容