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.
是一个权衡
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.
是一个权衡