23.12. CPU 型号和拓扑
这部分论述了 CPU 型号的要求。请注意,每个虚拟机监控程序都有自己的策略,用于客户机默认看到的 CPU 功能。KVM 向客户机呈现的 CPU 功能集合取决于客户机虚拟机配置中选择的 CPU 模型。
qemu32
和 qemu64
是基本的 CPU 模型,但也有其他模型(带有附加功能)可用。每个模型及其拓扑的使用域 XML 中的以下元素指定:
图 23.14. 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>
图 23.15. CPU 型号和拓扑示例 2
<cpu mode='host-model'> <model fallback='forbid'/> <topology sockets='1' cores='2' threads='1'/> </cpu>
图 23.16. CPU 模型和拓扑示例 3
<cpu mode='host-passthrough'/>
如果没有限制在 CPU 模型或其功能上有限制,则可使用以下更简单的
<cpu>
元素:
图 23.17. CPU 型号和拓扑示例 4
<cpu> <topology sockets='1' cores='2' threads='1'/> </cpu>
图 23.18. PPC64/PSeries CPU 型号示例
<cpu mode='custom'> <model>POWER8</model> </cpu>
图 23.19. aarch64/virt CPU 型号示例
<cpu mode='host-passthrough'/>
域 XML 的这一部分的组件如下:
元素 | 描述 |
---|---|
<cpu> | 这是描述客户机虚拟机 CPU 要求的主要容器。 |
<匹配> | 指定如何为客户机虚拟机提供虚拟 CPU 如何符合这些要求。如果拓扑是 <cpu> 中的唯一元素,则可以省略 match 属性。match 属性的可能值有:
match 属性,并将默认为 完全匹配 。 |
<模式> | 此可选属性可用于方便配置客户机虚拟机 CPU,尽可能地接近主机物理机器 CPU。mode 属性的可能值有:
|
<model> | 指定客户机虚拟机请求的 CPU 型号。在 libvirt 的数据目录中安装的 cpu_map.xml 文件可以找到可用 CPU 模型列表及其定义。如果虚拟机监控程序无法使用确切的 CPU 模型,则 libvirt 会自动回退到虚拟机监控程序支持的最接近的模型,同时保持 CPU 功能列表。可选 fallback 属性可用于禁止此行为,在这种情况下,尝试启动请求不支持的 CPU 模型的域将失败。fallback 属性支持的值有: allow (默认值)和 forbid 。可选的 vendor_id 属性可用于设置客户机虚拟机可见的供应商 ID。长度必须为 12 个字符。如果没有设置,则使用主机物理机器的供应商 iID。典型的可能值为 AuthenticAMD 和 GenuineIntel 。 |
<vendor> | 指定客户机虚拟机请求的 CPU 供应商。如果缺少此元素,无论其供应商如何,客户机虚拟机在 CPU 匹配的 CPU 上运行。支持的厂商列表可在 cpu_map.xml 中找到。 |
<topology> | 指定提供给客户端虚拟机的虚拟 CPU 的请求拓扑。为插槽、内核和线程分配三个非零值:CPU 插槽总数、每个插槽的内核数和每个内核的线程数量。 |
<功能> | 可以包含零或更多元素,用于微调由所选 CPU 模型提供的功能。已知功能名称列表可在 cpu_map.xml 文件中找到。每个功能元素的含义取决于其策略属性,必须设置为以下值之一:
|
23.12.1. 更改指定 CPU 的 Feature Set
虽然 CPU 模型具有一项固有功能集,但可以根据需要对功能允许或禁止各个功能组件,从而实现 CPU 更为个性化的配置。
过程 23.1. 启用和禁用 CPU 功能
- 要开始,请关闭 guest 虚拟机。
- 通过运行 virsh edit [domain] 命令打开 guest 虚拟机的配置文件。
- 更改功能或
<模型中>
的参数,使其包含属性值"allow"
以强制允许该功能,或"forbid"
以拒绝对这个功能的支持。<>
图 23.20. 启用或禁用 CPU 功能示例
<!-- original feature set --> <cpu mode='host-model'> <model fallback='allow'/> <topology sockets='1' cores='2' threads='1'/> </cpu> <!--changed feature set--> <cpu mode='host-model'> <model fallback='forbid'/> <topology sockets='1' cores='2' threads='1'/> </cpu>
图 23.21. 启用或禁用 CPU 功能示例 2
<!--original feature set--> <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> <!--changed feature set--> <cpu match='exact'> <model fallback='allow'>core2duo</model> <vendor>Intel</vendor> <topology sockets='1' cores='2' threads='1'/> <feature policy='enable' name='lahf_lm'/> </cpu>
- 完成更改后,保存配置文件并启动客户机虚拟机。