4.2. 启用 Hyper-V enlightenments


Hyper-V enlightenments 为 KVM 提供了一个模拟 Microsoft Hyper-V hypervisor 的方法,这可以提高 Windows 虚拟机的性能。

您可以启用 Hyper-V enlightenments,它在 RHEL 10 主机中运行的 Windows 虚拟机(VM)中提供更好的性能。

流程

  1. 使用 virsh edit 命令打开虚拟机的 XML 配置。例如:

    # virsh edit windows-vm
    Copy to Clipboard Toggle word wrap
  2. 将以下 <hyperv> 子部分添加到 XML 的 <features> 部分:

    <features>
      [...]
      <hyperv>
        <relaxed state='on'/>
        <vapic state='on'/>
        <spinlocks state='on' retries='8191'/>
        <vendor_id state='on' value='KVM Hv'/>
        <vpindex state='on'/>
        <runtime state='on' />
        <synic state='on'/>
        <stimer state='on'>
          <direct state='on'/>
        </stimer>
        <frequencies state='on'/>
        <reset state='on'/>
        <tlbflush state='on'/>
        <reenlightenment state='on'/>
        <ipi state='on'/>
        <evmcs state='on'/>
      </hyperv>
      [...]
    </features>
    Copy to Clipboard Toggle word wrap

    如果 XML 已包含 <hyperv> 子部分,请按上所示进行修改。

  3. 按如下方式更改配置的 clock 部分:

    <clock offset='localtime'>
      ...
      <timer name='hypervclock' present='yes'/>
    </clock>
    Copy to Clipboard Toggle word wrap
  4. 保存并退出 XML 配置。
  5. 如果虚拟机正在运行,请重新启动它。

验证

  • 使用 virsh dumpxml 命令显示正在运行的虚拟机的 XML 配置。如果包括以下段,则虚拟机上启用了 Hyper-V enlightenments 。

    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <vendor_id state='on' value='KVM Hv'/>
      <vpindex state='on'/>
      <runtime state='on' />
      <synic state='on'/>
      <frequencies state='on'/>
      <reset state='on'/>
      <tlbflush state='on'/>
      <reenlightenment state='on'/>
      <stimer state='on'>
        <direct state='on'/>
      </stimer>
      <ipi state='on'/>
      <evmcs state='on'/>
    </hyperv>
    
    <clock offset='localtime'>
      ...
      <timer name='hypervclock' present='yes'/>
    </clock>
    Copy to Clipboard Toggle word wrap

4.2.2. 可配置 Hyper-V enlightenments

您可以配置特定的 Hyper-V 功能来优化 Windows 虚拟机。下表提供了有关这些可配置 Hyper-V 功能及其值的信息。

Expand
表 4.1. 可配置 Hyper-V 功能
Enlightenment描述

evmcs

在 L0(KVM)和 L1(Hyper-V) hypervisor 之间实施半虚拟化协议,从而使 L2 更快地退出到 hypervisor 。

注意

这个功能只供 Intel 处理器使用。

on, off

frequencies

启用 Hyper-V frequency Machine Specific Registers (MSR)。

on, off

ipi

启用半虚拟化处理器间中断(IPI)支持。

on, off

reenlightenment

仅在迁移期间发生时间戳计数器(TSC)频率更改时通知。它还允许 guest 继续使用旧频率,直到准备好切换至新频率。

on, off

relaxed

禁用 Windows 完整性检查,当虚拟机在负载较重的主机上运行时,该检查通常会导致 BSOD 。这和 Linux 内核选项 no_timer_check 类似,它会在 Linux 在 KVM 中运行时自动启用。

on, off

runtime

设定运行客户机代码以及代表客户端代码的处理器时间。

on, off

spinlocks

  • 虚拟机的操作系统用来通知 Hyper-V,调用虚拟处理器正在尝试获取一个可能由同一分区中其他虚拟处理器占有的资源。
  • Hyper-V 用来向虚拟机的操作系统指明在向 Hyper-V 指示过度旋转情形之前应该尝试获取 spinlock 的次数。

on, off

stimer

为虚拟处理器启用合成计时器。请注意,某些 Windows 版本在未提供这种启示时将恢复使用 HPET(或在 HPET 不可用时使用 RTC),这可能导致大量 CPU 消耗,即使虚拟 CPU 处于空闲状态。

on, off

stimer-direct

当通过正常的中断发送过期事件时,启用合成计时器。

on, off.

synic

与 stimer 一起激活合成计时器。Windows 8 以周期性模式使用此功能。

on, off

time

启用以下虚拟机可用的特定于 Hyper-V 的时钟源,

  • 基于 MSR 的 82 个 Hyper-V 时钟源(HV_X64_MSR_TIME_REF_COUNT, 0x40000020)
  • 参考通过 MSR 启用的 TSC 83 页面(HV_X64_MSR_REFERENCE_TSC,0x40000021)

on, off

tlbflush

清除虚拟处理器的 TLB。

on, off

vapic

启用虚拟 APIC,其提供 MSR 对高使用率、内存映射高级可编程中断控制器(APIC)寄存器的加速访问。

on, off

vendor_id

设置 Hyper-V 厂商 id。

  • on, off
  • id 值 - 最多 12 个字符的字符串

vpindex

启用虚拟处理器索引。

on, off

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat