20.11. CPU 型号和拓扑
本节涵盖了 CPU 模型的要求。请注意,每个虚拟机监控程序都有自己的策略,因此 guest 将默认查看其 CPU 功能。QEMU/KVM 呈现的 CPU 功能集合取决于客户机虚拟机配置中的 CPU 模型。
qemu32
和 qemu64
是基本的 CPU 型号,但还有其他模型(具有额外的功能)。每个模型及其拓扑都使用域 XML 中的以下元素来指定:
图 20.13. CPU 模型和拓扑示例 1
<cpu match='exact'> <model fallback='allow'>core2duo</model> <vendor>Intel</vendor> <topology sockets='1' cores='2' threads='1'/> <feature policy='disable' name='lahf_lm'/> </cpu>
图 20.14. CPU 型号和拓扑示例 2
<cpu mode='host-model'> <model fallback='forbid'/> <topology sockets='1' cores='2' threads='1'/> </cpu>
图 20.15. CPU 型号和拓扑示例 3
<cpu mode='host-passthrough'/>
如果没有限制,则无法将限制放在 CPU 模型或其功能上,则可以使用如下 CPU 元素:
图 20.16. CPU 型号和拓扑示例 4
<cpu> <topology sockets='1' cores='2' threads='1'/> </cpu>
域 XML 中本节的组件如下:
元素 | 描述 |
---|---|
<cpu> | 此元素包含 vCPU 功能集的所有参数。 |
<匹配> | 指定 <cpu> 元素中显示的功能必须与可用的 vCPU 匹配。如果 <拓扑> 是 <cpu> 元素中嵌套的唯一元素,则可以省略 match 属性。match 属性的可能值有:
<cpu> 元素中省略了 match 属性,则使用默认设置 match='exact' 。 |
<模式> | 此可选属性可用于使客户端虚拟机 CPU 更容易配置为尽可能与主机物理机器 CPU 关闭。mode 属性的可能值有:
|
<model> | 指定客户机虚拟机请求的 CPU 模型。可用 CPU 模型列表及其定义可在 libvirt 数据目录中安装的 cpu_map.xml 文件中找到。如果虚拟机监控程序无法使用确切的 CPU 模型,libvirt 会在维护 CPU 功能列表的同时自动回退到虚拟机监控程序支持的最接近模型。可选的 fallback 属性可用于避免此行为,在这种情况下,尝试启动请求不支持的 CPU 模型的域将失败。支持 fallback 属性的值有: allow (这是默认值)和 forbid 。可选的 vendor_id 属性可用于设置客户机虚拟机看到的供应商 ID。它的长度必须为 12 个字符。如果没有设置,则使用主机物理机器的厂商 id。典型的可能值包括 AuthenticAMD 和 GenuineIntel 。 |
<vendor> | 指定客户机虚拟机请求的 CPU 供应商。如果缺少此元素,客户机虚拟机会在与给定功能匹配的 CPU 上运行,无论其供应商是什么。受支持的供应商列表可在 cpu_map.xml 中找到。 |
<topology> | 指定提供给客户端虚拟机的虚拟 CPU 请求的拓扑。必须为套接字、内核和线程指定三个非零值:CPU 插槽总数、每个插槽的内核数和每个内核的线程数。 |
<功能> | 可以包含零个或更多元素,用于对所选 CPU 模型提供的功能进行微调。已知功能名称列表可在与 CPU 型号相同的文件中找到。每个特性元素的含义取决于其策略属性,它必须设置为以下值之一:
|
20.11.1. 客户机虚拟机 NUMA 拓扑
可以使用
<numa>
元素和域 XML 中的以下内容来指定虚拟机 NUMA 拓扑:
图 20.17. 客户机虚拟机 NUMA 拓扑
<cpu> <numa> <cell cpus='0-3' memory='512000'/> <cell cpus='4-7' memory='512000'/> </numa> </cpu> ...
每个单元单元指定了一个 NUMA 单元或 NUMA 节点。
CPU
指定作为节点一部分的 CPU 或 CPU 范围。memory
指定节点内存(以 kibibytes 为单位)( 1024 字节的块)。从 0 开始,为每个单元或节点被分配 cellid
或 nodeid
。