9.3.2. NUMA vCPU 固定
vCPU 固定提供与在裸机系统上任务固定的类似优势。由于 vCPU 作为主机操作系统上的用户空间任务运行,固定可提高缓存效率。其中一个例子是,所有 vCPU 线程都在同一个物理插槽中运行,因此共享 L3 缓存域。
注意
在 Red Hat Enterprise Linux 7.0 到 7.2 中,只能获得活跃的 vCPU。但是,在 Red Hat Enterprise Linux 7.3 中,还提供固定不活跃的 vCPU。
将 vCPU 固定与 numatune 相结合可以避免 NUMA 未命中。NUMA 丢失的性能影响非常重要,通常从 10% 性能命中启动或更高。应将 vCPU 固定和 numatune 配置在一起。
如果虚拟机正在执行存储或网络 I/O 任务,则将所有 vCPU 和内存固定到物理连接到 I/O 适配器的同一物理套接字是有益的。
注意
lstopo 工具可用于视觉化 NUMA 拓扑。它还有助于验证 vCPU 是否已绑定到同一物理套接字上的核心。有关 lstopo 的更多信息,请参见以下知识库文章https://access.redhat.com/site/solutions/62879。
重要
固定导致存在比物理内核更多的 vCPU 数量 增加了复杂性。
以下示例 XML 配置中有一个域进程固定到物理 CPU 0-7。vCPU 线程固定为自己的 cpuset。例如,vCPU0 固定到物理 CPU 0,vCPU1 固定到物理 CPU 1,以此类推:
vcpu 和 vcpupin 标签之间有一个直接的关系。如果没有指定 vcpupin 选项,则该值将自动确定并继承自父 vcpu 标签选项。以下配置显示了缺少 vcpu 5 的
<vcpupin>。因此,vCPU5 会固定到物理 CPU 0-7,如父标签 <vcpu> 中指定的:
重要
<vcpupin>、<numatune> 和 <emulatorpin> 应该配置为实现最佳、确定的性能。 有关 <numatune> 标签的详情请参考 第 9.3.3 节 “域进程”。有关 <emulatorpin> 标签的详情请参考 第 9.3.6 节 “使用 emulatorpin”。