Issue 1: Host Node
So today we had to figure out why one of our newly created virtual’s was taking 18 seconds to load a simple phpinfo() page. This was the same page that now loads between 200-300 milliseconds. What was the problem? On our Windows Server 2012 we had Virtual Machine Queues (VMQ) enabled on our broadcom network cards. You have two options, you can disable the feature, or you can contact broadcom for an updated driver if one is available for your specific model. You may want to even disable it for now, until there is a driver available.
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.
How do you disable VMQ on a virtual?
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 the Settings 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.+1 this post if it helped you!