Improve packet throughput by enabling default queue RSS on the NIC card.
Default Queue Receive Side Scaling (DRSS) distributes packets received across several hardware queues, allowing inbound traffic to be processed by multiple hardware queues. DRSS reduces bottlenecks in a single queue by allotting traffic to other available hardware queues. DRSS is intended to serve broadcast, unknown, or multicast (BUM) traffic.
With DRSS enabled, several hardware queues are enabled on the chosen physical NIC port. Each queue is assigned a local logical core from the non-uniform memory access (NUMA) node. When inbound packets - multicast, unknown, or broadcast - arrive at a physical NIC port, they are load balanced across several hardware queues, depending on the availability of logical cores. This functionality improves packet throughput of physical NIC card.
For example, consider a physical NIC card has two ports. You want to assign more than one hardware queue to efficiently manage receive-side (Rx) traffic. It can be done by passing DRSS=4,0 value in the ESXi system parameters command. This parameter enables the first physical NIC port for DRSS.
- Ensure the NIC card supports Default Queue Receive Side Scaling.
- Install i40en ENS driver NIC driver.
- If the NIC has two ports, enable RSS on the first port of the physical NIC, by running the command.
esxcli system module parameters set -m -i40en_ens -p DRSS=4,0
Where, DRSS is enabled for 4 Rx queues on the first port and it is not enabled for Tx queues.The number of DRSS queues assigned depends on the number of physical CPUs available on the host.Note: Depending on the version of the NIC card, by default, the DRSS might be enabled or disabled.
- If NIC teaming is in use, then configuration of both NIC ports must be the same.
esxcli system module parameters set -m -i40en_ens -p DRSS=4,4
- Unload Load the NIC driver for module parameters to take effect.
- Load the NIC driver.
What to do next
Configure multiple context so that Enhanced Network Stack can improve packet throughput of vNIC queues.