Enabling Support for NetQueue on the Intel 82598 10 Gigabit Ethernet Controller
Details
The ixgbe driver supports adapters based on the Intel 82598 10 Gigabit Ethernet controller. This driver utilizes VMware's NetQueue technology to enable Intel Virtual Machine Device Queues (VMDq).
Select the checkbox for VMkernel.Boot.netNetqueueEnabled.
Enable the ixgbe module in the service console of the ESX Server host:
# esxcfg-module -e ixgbe
Set the required NetQueue options for the ixgbe module:
MSI-X enables the Ethernet controller to direct interrupt messages to multiple processor cores. This feature is required for NetQueue to function with VMDq. In the examples below, the parameter InterruptType with a value of 2 specifies MSI-X.
A value for VMDQ must exist to indicate the number of receive queues. A value of 16 for VMDQ sets the number of receive queues to the maximum. The Intel 82598 10 Gigabit Ethernet Controller provides 32 transmit queues and 64 receive queues per port, which can be mapped to a maximum of 16 processor cores. The range of values for the VMDQ parameter is 1 to 16.
For a single port and the maximum number of receive queues, use the command: # esxcfg-module -s "InterruptType=2 VMDQ=16" ixgbe
For two ports, add the values in a comma-separated list for each parameter as shown in the following example: # esxcfg-module -s "InterruptType=2,2 VMDQ=16,16" ixgbe
Reboot the ESX Server system.
Note: If you are using jumbo frames, you also need to change the values for netPktHeapMinSize to 32 and netPktHeapMaxSize to 128. For details, see http://kb.vmware.com/kb/1004593.
To verify that VMDq has been successfully enabled:
Verify NetQueue has been enabled:
# cat /etc/vmware/esx.conf
Confirm the following line has been added into the file: /vmkernel/netNetqueueEnabled = "TRUE"
Verify the options configured for the ixgbe module:
# esxcfg-module -g ixgbe
The output should be similar to the following example:
The enabled value should be equal to 1, which indicates the ixgbe module is enabled. InterruptType should be equal to 2 and include an entry for each port. (This is a 2-port example.) VMDQ should be 16 to enable the maxiumum number of receive queues and should also have an entry for each port.
Query which ports have loaded the driver using esxcfg-nics -l. Then query the statistics using ethtool. If VMDq is enabled, statistics for multiple receive queues will be shown (rx_queue_0 through rx_queue_15 in the example below).
# esxcfg-nics -l
Name PCI Driver Link Speed Duplex MTU Description vmnic0 04:00.00 bnx2 Up 1000Mbps Full 1500 Broadcom Corporation Broadcom NetXtreme II BCM5708 1000Base-T vmnic1 08:00.00 bnx2 Down 0Mbps Half 1500 Broadcom Corporation Broadcom NetXtreme II BCM5708 1000Base-T vmnic2 0b:00.00 ixgbe Up 10000MbpsFull 9000 Intel Corporation 82598EB 10 Gigabit AF Dual Port Network Connection vmnic3 0b:00.01 ixgbe Up 10000MbpsFull 9000 Intel Corporation 82598EB 10 Gigabit AF Dual Port Network Connection vmnic4 0d:00.00 ixgbe Up 10000MbpsFull 1500 Intel Corporation 82598EB 10 Gigabit AF Dual Port Network Connection vmnic5 0d:00.01 ixgbe Up 10000MbpsFull 1500 Intel Corporation 82598EB 10 Gigabit AF Dual Port Network Connection