增加 VMBus 缓冲区大小来提升虚拟机网络吞吐量

        今天在 Windows Server Performance Team Blog 看到一篇非常有价值的文章《Increase VMBus buffer sizes to increase network throughput to guest VMs》,主要介绍了如何通过增加 VMBus 的缓冲区来提升虚拟机网络的吞吐量。由于原文的介绍已经相当详细,小弟我也就不班门弄斧!简单来讲,Hyper-V 提供的 VMBus 架构是非常优越的,由于虚拟网络的数据交换是通过 VMBus 到物理网卡的,所以 Virtual Switch 能够提供充足的缓冲,我们可以利用该特性有效的改善传统网络中出现的因吞吐量导致的数据包丢失问题。在 Windows Server 2008 R2 上默认的缓冲区大小为 1mb,它能提供 655 个数据包缓冲(每个缓冲区 1600 个字节)。根据原文的建议可以将其缓冲增加到 2mb(最大有效值是 4mb),能够满足大多数的情况。除非你有足够大的内存,否则不建议设置到 4mb。

        要增加 VMBus 缓冲区的大小只需要修改虚拟机的网卡(Microsoft 虚拟机总线网络适配器)注册表相关项增加两个 DWORD 值即可。执行此操作前我们需要先确认虚拟机网卡的“驱动程序关键字”便于在注册表中定位,为此在虚拟机中打开硬件管理找到网卡适配器进入其属性下的详细信息选项卡页面,在属性列表中选取“驱动程序关键字”,将该值记录下来。

image

        接下来打开注册表编辑器,根据之前记录下来的值定位到类似下面的注册表位置上,并添加名为:ReceiveBufferSizeSendBufferSize 的 DWORD 键,设置其值为:800

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{GUID}\{index}

image

        最后重新启动虚拟机即可。由于本人英语水平有限,无法完全正确地翻译原文介绍,以及表达我个人的理解意思,文中有错误的解释欢迎大家指正。

ms_virtualization_logo Microsoft Hardware-Assisted Virtualization Detection Tool

        除了微软最新的虚拟化平台,目前几乎所有的虚拟化平台都要求 CPU 支持 Hardware-Assisted Virtualization ,如:AMD-V、Intel VT 以及 VIA VT。为了检测我们的 CPU 是否支持该项技术,我们经常要在不同硬件厂商的主页里寻找检测工具,而且检测结果的标识结果让用户难以理解!

        现在我们可以使用微软官方发布的工具对我们的 CPU 进行检测,以检查是否满足 Windows Virtual PC 的硬件需求,该工具的用途主要是检测 CPU 是否支持硬件虚拟化技术,所以检测结果并不能用于鉴定当前硬件是否也满足 Hyper-V 的需求。

HAV Detection Tool

        Microsoft Hardware-Assisted Virtualization Detection Tool 的官方下载地址是:http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=0ee2a17f-8538-4619-8d1c-05d27e11adb2

        当执行 MDT2010 的刷新、替换、Sysprep 和 捕获任务时,可能会出现如下的错误警告,这是因为 MDT 不允许同一个用户使用多个用户名连接到服务器或共享资源。

  

无命名

  

        在 MDT 官方 Blog 看到了解决办法需要修改 ZTIUtility.vbs,找到下面的字段范围:

  

Case Else
    
' Case &h800704C3 ' Multiple connections to a server or shared resource by the same user, using more than one user name, are not allowed.
    
' Case &h8007052E ' Logon failure: unknown user name or bad password.
    
' There was a some kind of fatal error.
    
If ErrDesc <> "" then
    
             MapNetworkDriveEx = ErrDesc
    
Else
    
             MapNetworkDriveEx = "Unable to map UNC Path " & sShare & " :" & "( 0x" & hex(HasError) & " ) "
    
End if
    
oLogging.CreateEntry MapNetworkDriveEx & "", iLogType
    
Exit function
    
End select

  

        然后使用下面的字段进行替换:

  

Case Else
    
Err.Clear
    
On Error Resume Next
    
oNetwork.MapNetworkDrive  chr(sDrive)&":", sShare, False
    
HasError = err.number
    
ErrDesc = err.Description
    
On Error Goto 0
    
If Err.Number <> 0 Then
    
' There was a some kind of fatal error.
    
             If ErrDesc <> "" then
    
                                        MapNetworkDriveEx = ErrDesc
    
             Else
    
                                        MapNetworkDriveEx = "Unable to map UNC Path " & sShare & " :" & "( 0x" & hex(HasError) & " ) "
    
             End if
    
             oLogging.CreateEntry MapNetworkDriveEx & "", iLogType
    
                           Exit function
    
Else
    
      MapNetworkDriveEx = chr(sDrive)&":"
    
      Exit Function
    
End If
                   
End select

  

        此外提供一篇官方的 KB 供大家参考:http://support.microsoft.com/kb/977566/zh-cn,本博也提供一个修改好的 ZTIUtility.vbs 供大家替换。

Tags: ,
分页: 219/472 第一页 上页 214 215 216 217 218 219 220 221 222 223 下页 最后页 [ 显示模式: 摘要 | 列表 ]