Hyper-V VMQ 网络性能提升指导
2026-07-10
在现代数据中心网络架构中,多核CPU的高效利用以及虚拟化环境下的网络性能优化一直是核心的技术挑战。传统物理服务器通过网卡上的RSS(接收端缩放)技术,智能地将网络流量分发到多个CPU核心上,从而显著提升了网络吞吐量和CPU利用率。然而,虚拟化的引入使得网络流量路径变得更加复杂——物理网卡必须同时为宿主机和多个虚拟机(VM)提供服务,导致传统的RSS技术难以直接适配虚拟交换机的分层架构。为此,Hyper-V虚拟化平台推出了虚拟机队列(VMQ)技术,在继承RSS多核负载均衡理念的同时,针对虚拟化场景进行了专门优化。
传统物理服务器网卡的 RSS 技术
在介绍 VMQ 之前,我们先来看一下传统物理服务器上的网卡是如何接收网络数据的。多核 CPU 问世初期,网卡尚不支持将网络流量中断分发到多个逻辑核心,而是全部由单个逻辑核心处理,这导致 CPU 利用率不均衡,网络流量处理效率下降。如今,大多数网卡均支持 RSS(接收端缩放)技术,使具备多个硬件接收队列的网卡能够将接收到的数据分散到多个队列中。在多核物理服务器上,RSS 技术会将这些队列产生的中断定向至不同的 CPU 逻辑核心,从而提升数据接收效率。RSS 的目标是将各个队列分配至最优的 CPU 逻辑核心,以均衡网络流量带来的 CPU 开销。
Hyper-V VMQ 的工作原理
在虚拟化环境中,情况比物理环境更为复杂。首先,当物理网卡被转换为虚拟交换机时,其 RSS 功能将失效。其次,由于多个虚拟机运行在同一台物理主机上,并共享同一块物理网卡接收数据包,因此需要一种同样高效的方法,在保障虚拟机网络性能的同时,均衡网络相关的 CPU 开销。VMQ 正是为此而设计。VMQ 是一种特殊队列,其功能类似于网卡上的硬件队列,并采用与 RSS 类似的机制,将队列中断分发至不同的 CPU 逻辑核心。然而,VMQ 在数据包过滤与分配方面的逻辑,与硬件队列有所不同:在纯物理环境中,物理网卡仅需考虑自身的数据队列;而在虚拟化环境中,虚拟交换机必须同时兼顾物理主机与各虚拟机的队列均衡。
在解释VMQ的工作原理之前,我们首先来了解一下数据包在虚拟交换机内的路由路径。Hyper-V虚拟交换机具有两种类型的队列——VMQ和默认队列。 默认队列中的数据需经过多个处理阶段,包括虚拟交换机路由、过滤、扩展、访问控制列表以及转发路径,最终才通过虚拟机总线进行分发。
VMQ 首先收集虚拟机(VM)中虚拟网卡(vNIC)的 MAC 地址,再通过为启用 VMQ 的虚拟机配置的 VMQ MAC 过滤器,将流量分发至对应队列。未启用 VMQ 的虚拟机,或其流量不匹配 VMQ MAC 过滤器的虚拟机,其流量仍保留在默认队列中。与需经过完整路由、过滤、扩展、访问控制及转发路径的默认队列不同,VMQ 会绕过其中部分步骤,以最小的路由开销直接将数据传输至虚拟机总线(VM bus)。数据到达 VM bus 后,虚拟机内的 vNIC 利用虚拟接收端缩放(vRSS)技术,将队列中断分发至虚拟 CPU。
VMQ 的功能是什么?
如果在虚拟网卡(vNIC)上启用了 VMQ,虚拟交换机将绕过多层路由代码,确保数据快速、准确地转发至虚拟机。与未启用 VMQ 的场景相比,这不仅降低了路由过程中的 CPU 资源消耗,还减少了数据传输延迟。
VMQ 提供以下功能:
通过将多个虚拟机的网络流量分配到多个处理器上,提高网络吞吐量。
注意:在 Hyper-V 中,子分区也称为虚拟机(VM)。
通过将数据包过滤任务卸载到网卡硬件来降低CPU占用率。
通过使用DMA将数据直接传输到虚拟机内存,防止网络数据重复。
对网络数据进行分段,以提供安全的环境。
支持实时迁移。
动态 VMQ 与静态 VMQ
VMQ 可分为动态和静态两类。静态 VMQ 指 VMQ 与 CPU 逻辑核心之间的绑定关系是固定的。例如,分配给 VM1 的 VMQ 映射到逻辑 CPU1,而分配给 VM2 的 VMQ 映射到逻辑 CPU2。该映射关系在 VM1 和 VM2 的整个生命周期内保持不变,即 VM1 的数据始终由逻辑 CPU1 处理,VM2 的数据始终由逻辑 CPU2 处理。然而,当处理某虚拟机网络流量的 CPU 变得繁忙时,静态 VMQ 可能导致该虚拟机的网络处理速度下降。
为解决这一问题,从 Windows Server 2012 R2 开始引入了动态虚拟机队列(Dynamic VMQ)。动态 VMQ 更加智能——与静态 VMQ 不同,它可根据负载及关联的逻辑 CPU 动态调整虚拟机的网络处理。例如,若逻辑 CPU2 相对空闲,则虚拟机 VM1 和 VM2 的队列均可关联至逻辑 CPU2。
如何管理虚拟机队列(VMQ)?
为虚拟机启用或禁用 VMQ 操作十分简单。默认情况下,Hyper-V 已启用 VMQ。但可根据虚拟机的实际需求以及网卡(NIC)的实际性能,选择启用或禁用该功能。在某些情况下,VMQ 可能导致虚拟机网络性能显著下降。若出现此类问题,可通过以下步骤在主机网卡上禁用 VMQ:
1. 打开主机的管理工具——计算机管理,导航至 设备管理器,然后展开 网络适配器 列表。
2. 右键单击与 Hyper-V 关联的物理网卡,然后选择属性。
3. 在网络接口卡(NIC)属性对话框中,切换到高级选项卡,在属性列表中找到虚拟机队列选项,将其值更改为已禁用,然后单击确定。
如果虚拟机(VM)数量过多,而网卡上的虚拟机队列(VMQ)数量不足,则可以为 VMQ 分配权重,以优先处理网络数据。权重较高的虚拟机在 VMQ 中将获得更高优先级,反之亦然。默认情况下,VMQ 权重设置为 100,如下例所示:
PS C:\> Get-VMNetworkAdapter -VMName VM01 | fl VMQweight VMQWeight : 100
要更改虚拟机的 VMQ 权重,请使用以下 PowerShell 命令:
PS C:\> Get-VMNetworkAdapter -VMName vmname -VMQweight 50
使用Vinchin解决方案备份Hyper-V虚拟机
在某些场景下,Vinchin备份与恢复等专业备份软件可提供更优化的性能和更高级的功能。
Vinchin 备份与恢复 是一款先进的数据保护解决方案,支持 VMware、Hyper-V、XenServer、Red Hat 虚拟化、Oracle、Proxmox 等多种主流虚拟化平台,以及数据库、NAS、文件服务器、Linux 与 Windows 服务器。它提供无代理备份、永久增量备份、虚拟机到虚拟机迁移(V2V)、即时恢复、细粒度恢复、备份加密、压缩、重复数据删除以及勒索软件防护等高级功能。这些功能对于保障数据安全及优化存储资源利用率至关重要。
使用 Vinchin 备份与恢复工具备份 Hyper-V 虚拟机仅需 4 个步骤:
1. 选择备份对象。

2. 选择备份目标位置。

3. 配置备份策略。

4. 审核并提交任务。

亲身体验这一综合系统的强大功能,免费试用15天! 留下您的具体需求,您将获得一套完全适配您IT环境的定制化解决方案。
下载免费试用版
适用于多种数据备份
* 15天全功能免费安全下载
Hyper-V 虚拟机队列常见问题解答
1. 什么是 VMMQ?
虚拟机多队列(VMMQ)通过将网络流量分配到多个 CPU 核心,改进了虚拟机队列(VMQ),从而提升了 10GbE 及更高速网卡上高带宽工作负载的性能。
2. 我应该使用多少个 RSS 队列?
应使用的接收端缩放(RSS)队列数量取决于您的网络适配器、CPU核心数以及工作负载。为避免过多的上下文切换,请将RSS队列数量设置为等于或少于可用CPU核心数。
结论
VMQ 技术将物理网卡的硬件队列逻辑延伸至虚拟化层,从而实现虚拟机网络流量的高效分发与 CPU 负载均衡。其核心价值在于绕过虚拟交换机复杂的路由路径,同时借助动态队列分配机制,降低网络延迟并提升多虚拟机并发环境下的吞吐量。尽管 VMQ 配置不当可能在某些场景下引发性能问题,但其特性使其成为构建高性能虚拟化网络的关键技术。