搜索

23.12. CPU 型号和拓扑

download PDF
这部分论述了 CPU 型号的要求。请注意,每个虚拟机监控程序都有自己的策略,用于客户机默认看到的 CPU 功能。KVM 向客户机呈现的 CPU 功能集合取决于客户机虚拟机配置中选择的 CPU 模型。qemu32qemu64 是基本的 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 的这一部分的组件如下:
表 23.8. CPU 模型和拓扑元素
元素 描述
<cpu> 这是描述客户机虚拟机 CPU 要求的主要容器。
<匹配> 指定如何为客户机虚拟机提供虚拟 CPU 如何符合这些要求。如果拓扑是 <cpu> 中的唯一元素,则可以省略 match 属性。match 属性的可能值有:
  • 最小值 - 指定 CPU 模型和功能描述了最低请求的 CPU。
  • exact - 提供给客户机虚拟机的虚拟 CPU 将与规格完全匹配。
  • strict - 除非主机物理机器 CPU 完全匹配,否则不会创建客户机虚拟机。
请注意,可以省略 match 属性,并将默认为 完全匹配
<模式> 此可选属性可用于方便配置客户机虚拟机 CPU,尽可能地接近主机物理机器 CPU。mode 属性的可能值有:
  • Custom - 描述如何将 CPU 呈现给客户机虚拟机。如果没有指定 mode 属性,这是默认设置。这个模式使得持久的 guest 虚拟机将看到同一硬件,无论 guest 虚拟机启动的主机是哪一个。
  • host-model - 将主机物理机器 CPU 定义从功能 XML 复制到域 XML 中的快捷方式。因为在启动域前复制 CPU 定义,不同主机物理机器上可以使用相同的 XML,同时仍提供最佳的客户机虚拟机 CPU 每台主机物理机器支持。match 属性和任何功能元素不能在此模式中使用。如需更多信息,请参阅 libvirt 上游网站
  • 通过这种模式通过 host-passthrough,对客户机虚拟机可见的 CPU 与主机物理机器 CPU 完全相同,包括在 libvirt 中导致错误的元素。显而易见,此模式是 guest 虚拟机环境无法在不同的硬件上重现,因此建议使用这种模式非常谨慎。此模式中不允许使用 模型 和功能 元素。
<model> 指定客户机虚拟机请求的 CPU 型号。在 libvirt 的数据目录中安装的 cpu_map.xml 文件可以找到可用 CPU 模型列表及其定义。如果虚拟机监控程序无法使用确切的 CPU 模型,则 libvirt 会自动回退到虚拟机监控程序支持的最接近的模型,同时保持 CPU 功能列表。可选 fallback 属性可用于禁止此行为,在这种情况下,尝试启动请求不支持的 CPU 模型的域将失败。fallback 属性支持的值有: allow (默认值)和 forbid。可选的 vendor_id 属性可用于设置客户机虚拟机可见的供应商 ID。长度必须为 12 个字符。如果没有设置,则使用主机物理机器的供应商 iID。典型的可能值为 AuthenticAMDGenuineIntel
<vendor> 指定客户机虚拟机请求的 CPU 供应商。如果缺少此元素,无论其供应商如何,客户机虚拟机在 CPU 匹配的 CPU 上运行。支持的厂商列表可在 cpu_map.xml 中找到。
<topology> 指定提供给客户端虚拟机的虚拟 CPU 的请求拓扑。为插槽、内核和线程分配三个非零值:CPU 插槽总数、每个插槽的内核数和每个内核的线程数量。
<功能> 可以包含零或更多元素,用于微调由所选 CPU 模型提供的功能。已知功能名称列表可在 cpu_map.xml 文件中找到。每个功能元素的含义取决于其策略属性,必须设置为以下值之一:
  • force - 强制支持虚拟机,无论主机物理机器 CPU 是否实际支持。
  • require - 指明客户机虚拟机创建将失败,除非主机物理机器 CPU 支持该功能。这是默认设置,
  • 可选 - 虚拟 CPU 支持此功能,但只有主机物理机器 CPU 支持该功能。
  • disable - 虚拟 CPU 不支持此功能。
  • forbid - 如果主机物理机器 CPU 支持该功能,则客户机虚拟机创建将失败。

23.12.1. 更改指定 CPU 的 Feature Set

虽然 CPU 模型具有一项固有功能集,但可以根据需要对功能允许或禁止各个功能组件,从而实现 CPU 更为个性化的配置。

过程 23.1. 启用和禁用 CPU 功能

  1. 要开始,请关闭 guest 虚拟机。
  2. 通过运行 virsh edit [domain] 命令打开 guest 虚拟机的配置文件。
  3. 更改功能或 <模型中> 的参数,使其包含属性值 "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>
    
    
  4. 完成更改后,保存配置文件并启动客户机虚拟机。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.