qemu:客户内存的大页面

qemu: hugepages for guest memory

qemu-kvm 使用 -mem-prealloc -mem-path /mnt/hugepages/libvort/qemu 参数启动。这是否意味着客户机内存将从主机上的大页面中分配?

此外,libvirt 在域 xml 中定义了以下内容:

<memoryBacking>
    <hugepages/>
    <locked/>
</memoryBacking>

这基本上告诉管理程序使用 hugepages 作为它的客户内存,这些页面将被锁定在主机的内存中(不允许换出)。

这些选项是否可以协同工作(-mem-prealloc 和 libvirt 的 xml 指令),并且一个补充另一个?

<hugepages/> 元素将导致客户 RAM 从默认大页面大小池中分配,并将导致在 QEMU 启动时立即分配这些大页面。大页面始终锁定在主机 RAM 中。

<locked/> 元素用于控制与客户 RAM 分开的其他 QEMU 内存分配。它确保所有非访客 RAM 页面也被锁定到主机 RAM 中。

如果您试图过度使用主机 RAM,那么在主机端使用大页面是最大化性能的好主意,因为它可以改善页面 table命中率。无论来宾 OS 是否反过来使用大页面都是如此。此性能优势将适用于所有工作负载和所有来宾 OS.

当您 试图过度使用主机 RAM 时的 KSM 功能(即 运行 许多来宾的总 RAM 超过可用的主机 RAM)。它尝试在来宾之间共享 RAM 页面,以避免在过度使用期间交换的风险。不过,KSM 在 CPU 消耗方面有相当大的损失,因此它是否对特定工作负载有用 and/or 来宾 OS.

是一个权衡