20.11. CPU 型号和拓扑


本节涵盖了 CPU 模型的要求。请注意,每个虚拟机监控程序都有自己的策略,因此 guest 将默认查看其 CPU 功能。QEMU/KVM 呈现的 CPU 功能集合取决于客户机虚拟机配置中的 CPU 模型。qemu32qemu64 是基本的 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 中本节的组件如下:
表 20.9. CPU 型号和拓扑元素
元素描述
<cpu>此元素包含 vCPU 功能集的所有参数。
<匹配>指定 <cpu> 元素中显示的功能必须与可用的 vCPU 匹配。如果 <拓扑><cpu> 元素中嵌套的唯一元素,则可以省略 match 属性。match 属性的可能值有:
  • 最小值 - 列出的功能是最低要求。然后,vCPU 中可能会提供更多功能,但这是接受的最小值。如果没有满足最低要求,则此值将失败。
  • exact - 为客户机虚拟机提供的虚拟 CPU 必须完全与指定的功能完全匹配。如果未找到匹配项,则会导致错误。
  • 严格 - 除非主机物理机器 CPU 与规格完全匹配,否则不会创建 guest 虚拟机。
如果 <cpu> 元素中省略了 match 属性,则使用默认设置 match='exact'
<模式>此可选属性可用于使客户端虚拟机 CPU 更容易配置为尽可能与主机物理机器 CPU 关闭。mode 属性的可能值有:
  • Custom - 描述如何将 CPU 出现在客户端虚拟机中。如果没有指定 mode 属性,这是默认设置。这个模式会使持久的客户机虚拟机能够看到同一硬件,无论在其上启动 guest 虚拟机的主机是什么。
  • host-model - 这基本上是将主机物理机器 CPU 定义从功能 XML 复制到域 XML 的快捷方式。因为在启动域前复制 CPU 定义,可以在不同的主机物理机器上使用相同的 XML,同时仍可提供最佳的客户机虚拟机 CPU 每个主机物理机器支持。此模式中无法使用 match 属性或任何功能元素。如需更多信息,请参阅 libvirt 域 XML CPU 型号
  • 通过 此模式,guest 虚拟机可见的 CPU 与主机物理机器 CPU(包括 libvirt 中导致错误的元素)完全相同。这种模式明显的缺点是,客户端虚拟机环境无法在不同的硬件上重现,因此建议不要再现此模式。这个模式中不允许使用 模型 或功能元素。
  • 请注意,在 host-modelhost-passthrough 模式中,当调用 virDomainGetXMLDesc API 时,通过指定 VIR_DOMAIN_XML_UPDATE_CPU 标志时,可以确定在当前主机物理机器上使用的 CPU 定义。当运行客户机虚拟机时,在显示不同的硬件时容易对操作系统进行响应,并在具有不同功能的主机物理机器间迁移这些虚拟机,您可以使用此输出将 XML 重写到自定义模式,以实现更强大的迁移。
<model>指定客户机虚拟机请求的 CPU 模型。可用 CPU 模型列表及其定义可在 libvirt 数据目录中安装的 cpu_map.xml 文件中找到。如果虚拟机监控程序无法使用确切的 CPU 模型,libvirt 会在维护 CPU 功能列表的同时自动回退到虚拟机监控程序支持的最接近模型。可选的 fallback 属性可用于避免此行为,在这种情况下,尝试启动请求不支持的 CPU 模型的域将失败。支持 fallback 属性的值有: allow (这是默认值)和 forbid。可选的 vendor_id 属性可用于设置客户机虚拟机看到的供应商 ID。它的长度必须为 12 个字符。如果没有设置,则使用主机物理机器的厂商 id。典型的可能值包括 AuthenticAMDGenuineIntel
<vendor>指定客户机虚拟机请求的 CPU 供应商。如果缺少此元素,客户机虚拟机会在与给定功能匹配的 CPU 上运行,无论其供应商是什么。受支持的供应商列表可在 cpu_map.xml 中找到。
<topology>指定提供给客户端虚拟机的虚拟 CPU 请求的拓扑。必须为套接字、内核和线程指定三个非零值:CPU 插槽总数、每个插槽的内核数和每个内核的线程数。
<功能>可以包含零个或更多元素,用于对所选 CPU 模型提供的功能进行微调。已知功能名称列表可在与 CPU 型号相同的文件中找到。每个特性元素的含义取决于其策略属性,它必须设置为以下值之一:
  • force - 强制虚拟机 CPU 支持,无论主机物理 CPU 是否真正支持它。
  • require - 指定客户机虚拟机创建将失败,除非主机物理机器 CPU 支持该功能。这是默认设置
  • 可选 - 虚拟 CPU 支持这个功能,但仅在主机物理机器 CPU 支持时才支持该功能。
  • disable - 虚拟 CPU 不支持它。
  • forbid - 如果主机物理机器 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 开始,为每个单元或节点被分配 cellidnodeid
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.