Hyper-V 虚拟机网络慢的原因及解决方案参考

news2024/12/24 21:38:28

Hyper-V VM 上的网络性能不佳

有几次我遇到过这样一种情况,即从运行Windows Server 的Hyper-V主机上的虚拟机复制文件的速度要慢得多。在本文中,我尝试描述几种不同的方法来提高在Windows Server (以及最新的Windows 10和11版本)上运行的Hyper-V虚拟机的网络性能。

在 Hyper-V vSwitch 中接收分段合并 (RSC)

首先,您应该注意 Windows Server 2019/2022(和 Windows 10 1809+)上的 Hyper-V 中出现的接收段合并 (RSC) 功能。接收分段合并在虚拟交换机级别 (vSwitch) 使用。

RSC 允许通过将多个 TCP 段组合成更大的段来减少 CPU 负载并提高网络吞吐量。 网络性能得到提高,因为大型分段的处理速度比许多较小的分段更快。

在以前的 Hyper-V 版本 (Windows Server 2016/2012R2) 中,NIC 级别仅支持硬件接收段合并模式。

如果启用了 RSC 支持,则可能会导致某些硬件配置中出现额外的网络延迟。

默认情况下, Windows Server 2019 上的所有外部交换机启用 RSC。

您可以使用以下命令检查是否为虚拟交换机启用了 RSC:

Get-VMSwitch | Select-Object *RSC*

可以使用以下命令禁用对客户端网络适配器上的 IPv4 流量使用 RSC:

Disable-NetAdapterRsc -Name "Ethernet" -IPv4

检查禁用 RSC 后 Hyper-V VM 中的复制速度是否提高。如果网络速度有所提高,则可以在 VM 连接到的虚拟交换机上禁用 RSC。

您可以使用 iperf 工具检查网络吞吐量。

要禁用特定虚拟交换机的软件 RSC,请运行以下命令:

Set-VMSwitch -Name vSwitchName -EnableSoftwareRsc $false

check if RSC is enable on hyper-v switch

您可以即时启用/禁用RSC,它不会影响任何活动连接。

或者,您可以在Windows主机上完全禁用RSC:

netsh int tcp set global rsc=disabled

网络适配器驱动程序中的虚拟机队列 (VMQ) 模式

在某些情况下,如果在物理 Hyper-V 主机的网络适配器驱动程序中启用了 VMQ(虚拟机队列),则可能会导致 Hyper-V 虚拟机中的网络性能不佳。

VMQ 是一项硬件功能,如果您的硬件不支持它在驱动程序中启用,则可能会导致数据包丢失和网络延迟增加。

该问题是 Broadcom 千兆网络适配器的典型问题,在所有 Hyper-V 版本 (Windows Server 2012 R2/2016/2019) 中都会出现。

VMQ 旨在通过将数据包从物理网络适配器直接转发到虚拟机来提高网络性能。

可以在网络适配器驱动程序的属性中禁用 VMQ。

disable VMQ (Virtual Machine Queue) in NIC driver settings

或者,可以使用 PowerShell 显示支持 VMQ 的网络适配器列表及其状态:

Get-NetAdapterVmq

要禁用特定网卡的 VMQ,请运行以下命令(网络适配器将在几秒钟内不可用):

Set-NetAdapterVmq -Name “NICName” -Enabled $False

check if vmq is enabled in NIC - powershell

禁用 VMQ 后,最好重新启动主机并检查网络性能。

确保在 Windows 中禁用 
QoS 带宽限制策略。

在Windows Server 2019上优化Hyper-V的TCP设置

将当前的TCP设置保存在Hyper-V主机上,并应用新设置,这些设置将使Windows Server 2019中的TCP设置几乎与Windows Server 2016中的TCP设置相似。

保存当前设置:

​
Get-NetTCPSetting -SettingName Datacenter,DatacenterCustom,InternetCustom,Internet|select SettingName,CongestionProvider,CwndRestart,ForceWS|Export-csv c:\backup\ws2019_network_stack_settings_nettcp_backup.csv

​
默认情况下,在Windows Server 2019和Windows 10 1709 +中,使用TCP的CUTRIC实现。此算法针对具有高延迟的高速网络进行了优化(默认情况下在 Linux 内核 2.6.19 及更高版本中也使用它)。

Windows TCP stack on Windows Server 2019 based on CUBIC

仅在 Windows Server 2019 或 Hyper-V 2019 中应用以下设置。

为 LAN 应用新的 NetTCP 设置:

Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled

对于广域网:

Set-NetTCPSetting -SettingName InternetCustom,Internet -CongestionProvider CTCP
Set-NetTCPSetting -SettingName InternetCustom,Internet -DelayedAckTimeoutMs 50
Set-NetTCPSetting -SettingName InternetCustom,Internet -ForceWS Disabled

在 TCP 堆栈级别禁用网络 RSS 和 RSC 网络优化方法:

netsh int tcp show global
netsh int tcp set global RSS=Disabled
netsh int tcp set global RSC=Disabled

或在网卡级别:

Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Recv Segment Coalescing (IPv4)" -DisplayValue "Disabled" -NoRestart
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Recv Segment Coalescing (IPv6)" -DisplayValue "Disabled" -NoRestart
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Receive Side Scaling" -DisplayValue "Disabled" –NoRestart

为所有虚拟机禁用 vRSS:

Get-VM | Set-VMNetworkAdapter -VrssEnabled $FALSE

在网卡上禁用大型发送卸载 (LSO):
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Large Send Offload Version 2 (IPv4)" -DisplayValue "Disabled" -NoRestart
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Large Send Offload Version 2 (IPv6)" -DisplayValue "Disabled" -NoRestart
Get-NetAdapter | Restart-NetAdapter

您还可以在网络适配器属性的“高级”选项卡中禁用这些选项:

  • 接收段合并 (IPv4/IPv6) = 禁用
  • 大型发送卸载 v2 (IPv4/IPv6) = 已禁用

disable recv segment coalescing on hyper-v

这些TCP堆栈设置将使Windows Server 2019网络协议设置类似于以前的Windows Server版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/875142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

S7-200 SMART 通信端口以及连接方式

每个S7-200 SMART CPU都提供一个以太网端口和一个RS485端口(端口0),标准型CPU额外支持SB CM01信号板(端口1),信号板可通过STEP 7-Micro/WIN SMART软件组态为RS232通信端口或RS485通信端口。 CPU 通信端口引脚分配 1.S7-200 SMART CPU 集成的 RS485 通信…

seata server 1.6版本安装及配置

文章目录 下载安装并启动数据库导入数据库修改配置文件 服务注册配置中心手动添加脚本导入 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 Seata 是一款开源的分布式事务解决方案&#…

QT报表Limereport v1.5.35编译及使用

1、编译说明 下载后QT CREATER中打开limereport.pro然后直接编译就可以了。编译后结果如下图: 一次编译可以得到库文件和DEMO执行程序。 2、使用说明 拷贝如下图编译后的lib目录到自己的工程目录中。 release版本的重新命名为librelease. PRO文件中配置 QT …

c语言每日一练(7)

前言:每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情…

Oracle常用基础知识

整体介绍 SQL语言是一种数据库语言 1、DDL:数据定义语言 create-创建 drop-删除 alter-修改 rename-重命名 truncate-截断 2、DML:数据操作语句 insert-插入 delete-删除 update-更新 select-查询 3、DCL:数据控制语句 grant-授权 rev…

c++字符串函数

在 C 中有大量用于操作 C-style 字符串的函数&#xff0c;它们集成在头文件 <cstring> 中。其常见的函 函数作用strcpy(s1,s2) 复制字符串 s2 到 s1strcat(s1,s2) 将字符串 s2 连接到 s1 末尾strlen(s) 计算字符串 s 长度strcmp(s1,s2) 比较字符串 s1 和 s2 …

deepin 深度操作系统正式适配苹果 M1 芯片

导读近日消息&#xff0c;据深度操作系统官方消息&#xff0c;在已经发布的 deepin V23 beta 版本中&#xff0c;深度操作系统正式适配 Apple Mac mini M1 了。 官方表示&#xff0c;Mac mini M1 是苹果于 2020 年 11 月发布的迷你电脑主机&#xff0c;它搭载了最高 3.2GHz …

走进知识图谱(三)【世界知识图谱篇】其他的知识表示学习模型

除了上篇文章介绍到的基于复杂关系建模的知识表示方法&#xff0c;我们还有多种基于平移模型而改进的知识图谱知识表示方法&#xff0c;并且它们都是对关系的深入建模。可以将它们归为两类&#xff0c;分别是知识图谱结构建模和知识图谱多源信息融合建模。这也对应了之前说的&a…

Mac远程桌面连接软件 Jump Desktop 8

Jump Desktop是一款功能强大的远程桌面连接软件&#xff0c;可让您从任何地方远程访问和控制您的计算机或服务器。它提供了快速、安全和可靠的远程连接&#xff0c;使您能够轻松访问您的文件、应用程序和数据&#xff0c;无论您身在何处。 以下是Jump Desktop的一些主要特点和功…

【图像分类】理论篇(3)交叉熵损失函数的理解与代码实现

理论公式 计算实例 图像分类实例&#xff1a; 我们希望根据图片动物的轮廓、颜色等特征&#xff0c;来预测动物的类别&#xff0c;有三种可预测类别:猫、狗、猪。假设我们当前有两个模型&#xff08;参数不同)&#xff0c;这两个模型都是通过sigmoid/softmax的方式得到对于每个…

又有大动作!美的集团计划在港交所上市,推进全球化布局

撰稿|行星 来源|贝多财经 8月9日&#xff0c;美的集团&#xff08;SZ:000333&#xff09;发布《关于研究论证重大事项的公告》&#xff0c;称其正在对境外发行证券&#xff08;H股&#xff09;并上市事项进行前期论证。若能成功发行&#xff0c;美的集团将实现“AH”两地上市…

用Python做一个滑雪小游戏

游戏是让人娱乐和放松的好方式&#xff0c;而编写和玩自己的游戏则是一种特别有趣的体验。在本文中&#xff0c;我们将使用Python和pygame库来创建一个简单的滑雪小游戏。通过这个小游戏项目&#xff0c;我们将学习如何使用Python编程语言来制作自己的游戏&#xff0c;并且享受…

timeout limit is 100 seconds错误

使用SERVER 2019进行开发&#xff0c;出现100秒超时的问题&#xff0c; Load operation failed for query GetDOC_STAFFWithPhoto. The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing 解决办法&#xff1a; 方法一&#xff1a;浏览…

卫星--夏令营

几何问题&#xff1a;就是用几何数学知识解题即可 但是越是数学编程题&#xff0c;越容易忽略数学题中的细节 1.地球半径你算进去了吗? 2.sin三角函数&#xff0c;M_PI标准圆周率在cmath文件里 3.有可能给出的夹角超过180呢&#xff0c;没给数据要求&#xff0c;就要自己考…

React源码解析18(5)------ 实现函数组件【修改beginWork和completeWork】

摘要 经过之前的几篇文章&#xff0c;我们实现了基本的jsx&#xff0c;在页面渲染的过程。但是如果是通过函数组件写出来的组件&#xff0c;还是不能渲染到页面上的。 所以这一篇&#xff0c;主要是对之前写得方法进行修改&#xff0c;从而能够显示函数组件&#xff0c;所以现…

数字后端笔试题(1)DCG后congestion问题

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 已知某模块的DCG结果显示存在congestion&#xff0c;有congestion部分逻辑结构如下图: 问题1: 如何分析该电路有congestion问题的原因&#xff1f; 答&#xff1a;data selecti…

Android Studio实现列表展示图片

效果&#xff1a; MainActivity 类 package com.example.tabulation;import android.content.Intent; import android.os.Bundle; import android.view.View;import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; im…

概念解析 | 知识蒸馏(Knowledge Distillation)

教师指点弟子 - 深度神经网络知识蒸馏技术详解 注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:知识蒸馏(Knowledge Distillation)。 Knowledge Distillation(知识蒸馏)Review–20篇paper回顾- 知乎 知识蒸馏(Knowledge Dist…

福利!百度Workshop实战课,即刻搭建AI原生应用!| IDCF

你是否希望掌握大模型开发的秘诀&#xff1f;你是否渴望得到实践操作的机会&#xff1f;如果你的心中充满热情和期待&#xff0c;那么&#xff0c;WAVE SUMMIT 2023特别设置的Workshop将会是你的知识启航站&#xff01; 本次Workshop专注于AI开发与大模型应用&#xff0c;邀请…

yolov5 转换为rknn模型在3588上运行

为了把yolov5在rk3588上跑起来&#xff0c;在网上搜罗了一圈,踩了一些坑。由于瑞芯微的文档有升级&#xff0c;导致和网络的文章有出入&#xff0c;所以做个记录。 rknn-toolkit 转换文档&#xff1a; 瑞芯微的转换文档在 rknn-toolkit/example/pytorch/yolov5/REAME.md 里 …