Salesforce

Networked connections slower on Hyper-V

« Go Back

Information

 
TitleNetworked connections slower on Hyper-V
URL NameNetworked-connections-slower-on-Hyper-V
Article Number000182574
EnvironmentProduct: Progress OpenEdge
Version: 10.2B08, 11.3.2 and later
OS: Windows 2012 R2
Other: Hyper-V
Question/Problem Description
Networked connections slower on Hyper-V
TCP clients run slower connecting to a Hyper-V than a VMWare or physical machine from the Application Server
TCP clients performance is the same for the Hyper-V server as the VMWare and non-VM servers connecting locally
Network settings enabled in Hyper-V for guest VM
Steps to Reproduce
Clarifying Information
Example: 
TCP connection code running slower to Hyper-V
  • The same source code in TCP mode connecting from each the “db server” connected to the database on this server: the elapse time is the same for the Hyper-V server as the VMWare and non-VM servers (9 seconds)
  • The same source code in TCP mode connecting from the Application server to each “db server”: the elapse time is the 3 times slower for the Hyper-V server as the VMWare and non-VM servers
Error Message
Defect Number
Enhancement Number
Cause
This test environment once again proves the underlying performance penalty of Hyper-V.

While Hyper-V is supported, there a multiple areas in this architecture that cause worse performance than systems without Hyper-V.
  • One of these is the way technology shares resources, for example how memory is shared between virtual machines causes the applications running on those machines to run into compromised resources which slows things down.
  • Another is the network layers ... which from these tests appears to be the specific penalty.
This has nothing to do with OpenEdge, the underlying architecture is transparent to our communication layers.

Further research shows this appears to be specific to VMQ enabled on the virtual switch and/or physical NIC.

Specifically: Requirements for VMQ
(REF: https://technet.microsoft.com/en-us/library/gg162704(v=ws.10).aspx)
  1. The management operating system must be running Windows Server 2008 R2.
  2. The virtual machines must be running Windows 7 or Windows Server 2008 R2 or running Windows Server 2008 or Windows Vista with the Integration Services Setup Disk installed. Virtual machines running earlier versions of Windows cannot use VMQ.
  3. The physical network adapter handling the traffic on the management operating system must support VMQ.   This third requirement appears to influence the bottleneck on NICs even when they support VMQ.
Example: Broadcom Network Adapters

(REF: http://www.dell.com/support/article/us/en/04/SLN132131 )
Windows Server: Slow Network Performance on Hyper-V Virtual Machines with Virtual Machine Queue Enabled

(REF: https://support.microsoft.com/en-us/kb/2902166 )
Poor network performance on virtual machines on a Windows Server 2012 Hyper-V host if VMQ is enabled

Specific to Broadcom Network Adapters installed in the host when Virtual Machine Queue (VMQ) is enabled on the physical network adapter used by the VMs. VMQ is a packet filtering technology in Hyper-V meant to reduce overhead of packet routing with supported hardware and guest operating systems. It is designed to improve network performance on VMs by expediting the transfer of network data from the physical adapter to the appropriate VM. However, it must be supported by the virtual NIC. And even if supported, as in the case of Broadcom network adapters, this results in significantly decreased network performance on all VMs that utilize a virtual switch bound to the adapter.
Resolution
This performance problem has nothing to do with OpenEdge, the underlying architecture is transparent to our communication layers. The following information is recorded as a known 'first step' advice, after-which Vendor engagement is required to further assist.

The first troubleshooting step is to ensure that the adapter driver and firmware are up to date on the Hyper-V host.

If the adapter driver and firmware are up to date and the problem persists: 

1. Disable VMQ on the network adapters: 

To disable VMQ on a virtual switch, use the Set-VMNetworkAdapter PowerShell:
$ Set-VMNetworkAdapter –ManagementOS -Name <VirtualNetworkAdapterName> -VmqWeight 0

To disable VMQ on a physical network adapter:
Uncheck the appropriate box in the Advanced tab of the network adapter's properties page


2. Change the MAC addresses of the virtual switch(es)

Either Modify in Hyper-V Manager or use one of the following Set-VMNetworkAdapter PowerShell cmdlets:

Use a static MAC address:
$   Set-VMNetworkAdapter –ManagementOS -Name <VirtualNetworkAdapterName> -StaticMacAddress <MacAddress>

Use a dynamic MAC address:
$   Set-VMNetworkAdapter –ManagementOS -Name <VirtualNetworkAdapterName> -DynamicMacAddress
Workaround
Notes
Keyword Phrase
Last Modified Date11/20/2020 6:57 AM

Powered by