NIC Device Driver Tuning
NIC Device Drivers
Often the version of the device driver that comes with your Linux distribution is an older version, and may not support all the latest features. This page has info on updating your device drivers.
To find your current driver version, do:
ethtool -i ethN
mlx5_core driver (NVIDIA/Mellanox) Updates
The latest drivers are available at: https://developer.nvidia.com/doca-downloads
- Here is the updated driver for Ubuntu 22.04
New driver features to try out (ConnectX-7 only):
DOCA_v2.10.0 (released Feb 2025) of the NVIDIA 'doca-ofed' driver now supports Hardware Generic Receive Offload (GRO) (previous versions of the driver were sender-side only). As described in the release notes: "Hardware Generic Receive Offload (GRO) reduces CPU overhead and improves throughput by offloading the task of reassembling incoming network packets from the CPU."
To set this, do:
/usr/sbin/ethtool -K ethN rx-gro-hw on
Note that this only works if your ring buffer size is no more than 2K, and in fact the default ring buffer size of 1024 appears to be optimal with this version of the driver.
With rx-gro-hw enabled, the table below shows throughput improvement between 2 ESnet test hosts on a LAN. WAN throughput is not impacted, as the bottleneck is on the sender.
RX GRO HW setting | 1500B MTU | 9000B MTU |
off (default) | 20 Gbps | 41 Gbps |
on | 36 Gbps | 63 Gbps |
Note that this version of the driver shows up in ethtool -i as:
driver: mlx5_core
version: 25.01-0.6.0
You'll also want to make sure your firmware is up to date. This is easy to do with the mlxup tool.
Other drivers:
If you have details on other drivers, please email us with details, and we'll add that info here.