While rolling out a new Hyper-V infrastructure we noticed quite a delay (latency) when running either through the console or RDP. After confirming integration services were installed, updated and enabled we turned to the NIC as a possible cause. After doing some research on the driver and firmware revisions we determined that the VMQ (Virtual Machine Queues) on the Broadcom drivers can cause issues with Hyper-V on Windows Sever 2012 and Windows Server 2008 R2. Updating the drivers may help in some instances but in ours the fix was to disable VMQ:
How do you disable VMQ on the Host node?
- If you have more than one network adapter, like we do, simply go to Device Manager , on Windows Server 2012 I usually press the Windows Key [or Apple Key if you use a mac like I do, sorry Windows Servers I manage], then simply type out Device Manager, and choose the Settings section, it should be the first option.
- Once you have the Device Manager opened you simply expand the Network adapters section.
- Right click on your network Adapters listed (one at a time) and choose Properties, select the Advanced tab then scroll until you see “Virtual Machine Queues” [If you’re like me pressing the [ V ] key on your keyboard should bring you there]. With VMQ highlighted make sure the Value says Disable.
Issue 2: Virtual
Just after disabling VMQ on the host nodes I noticed a single virtual machine still having a slow response time where all the other virtual’s on the same host node were fine. What was the problem? Within the settings of this specific virtual the option for VMQ was enabled. This is a Windows Server 2012 Hyper-V setting you can enable or disable, this is not present on Windows Server 2008 R2.
Note that you do not have to shut down your virtual.
- Open the Hyper-V Manager. Select your Hyper-V from your list and choose theSettings link. You can right click on the virtual and choose settings as well.
- Under each Network Adapter you have on the virtual expand them until you see Hardware Acceleration. Select Hardware Acceleration and ensure the check mark next to Enable virtual machine queue.
- Click on Apply, then OK.
What is VMQ?
What is so great about VMQ? It delivers packet data from the external virtual machine network directly to the virtual machines. This reduces the overhead of routing the packets from the hyper-v host to the virtual machine. So you’re saving yourself from having to do more work if it’s enabled.
VMQ only works if:
- The Hyper-V host is running Windows Server 2008 R2, or Windows Server 2012.
- The virtual machines must also run Windows Server 2008 R2, or Windows Server 2012.
- You also must have an Adapter that supports VMQ.
I hope this helps anyone going through the same issue.