Q: What are Virtual Machine Device Queues?
With VMDq, the network adapter can create multiple separate queues, distributing the processing load.
February 1, 2012
A: Virtual Machine Device Queues (VMDq) is a technology that allows the network adapter to create multiple separate queues, distributing the processing load across multiple cores.
Without VMDq, traffic is processed by a single processing core. Incoming traffic is processed in the following sequence on a physical adaptor linked to a virtual switch with many virtual machines (VMs):
Data is received on the network adapter.
The network adapter sends an interrupt to a Virtual Machine (VM) manager, which in Hyper-V's case is the Windows Server 2008 R2 management partition. The interrupt tells the OS that data needs to be processed. All interrupts for a specific NIC port go to a single processing core within the VM manager.
The VM manager looks at the traffic, and based on the MAC address or VLAN, routes it to the correct VM through the VMBus (for synthetic adapters).
The VM receives an interrupt notifying it about the network traffic, which it processes.
This means that all the network traffic over a physical NIC port is processed by a single processing core. For modern processing cores, handling a maxed-out 1Gbps NIC port isn’t a problem. However, if you have a 10Gbps NIC, a single processing core won’t be able to handle all the traffic from a 10Gbps port. The core will act as a bottleneck, reducing the throughput.
With VMDq, the network adapter can create multiple separate queues, so that different processing cores can process each of the virtual queues, distributing the processing load and removing the VM manager’s processing bottleneck.
Additionally the VM manager assigns a VMDq to each VM (depending on how many VMDqs are available), which removes the need for the VM manager to perform inspection and sorting to ascertain which VM the incoming traffic should be delivered to. Instead, all the virtual switch has to do is copy the network traffic from the VMDq to the respective VM.
Intel has some great information on VMDq. See the Intel site for details.
Got issues? Get more answers at John Savill's FAQs for Windows.
About the Author
You May Also Like