Tuning Recommendations - UG1739

AMD Solarflare X4 Series Ethernet Adapter User Guide (UG1739)

Document ID
UG1739
Release Date
2025-10-24
Revision
1.0 English

The following tables provide recommendations for tuning settings for different applications.

Recommended Throughput Tuning

The following table shows recommended tuning settings for throughput.

Table 1. Throughput Tuning Settings
Tuning Parameter How?
MTU Size Configure to maximum supported by network:
ip link set dev <interface> mtu <size>
Interrupt moderation Leave at default (Enabled).
TCP/IP Checksum Offload Leave at default (Enabled).
TCP Segmentation Offload Leave at default (Enabled).
TCP Large Receive Offload Leave at default (Enabled).
performance_profile Set to throughput.
TCP Protocol Tuning

Leave at default.

Receive Side Scaling (RSS) Application dependent.
Interrupt affinity and irqbalance service

Interrupt affinity settings are application dependent.

Disable irqbalance service:

systemctl stop irqbalance
systemctl disable irqbalance

Reload the drivers to use the driver default interrupt affinity.

Buffer Allocation Method

Leave at default. Some applications might benefit from specific setting.

The AMD Solarflare driver now supports a single optimized buffer allocation strategy and any value set by the rx_alloc_method parameter is ignored.

PCIe Lane Configuration Ensure the adapter is in an x8 slot, and that current speed (not the supported speed) reads back either as "x8" followed by the maximum speed that is mutually supported by the server and the adapter, or as “x8 and Unknown”.
CPU Speed Service (cpuspeed) Leave enabled.
Memory bandwidth Ensure memory uses all memory channels on system motherboard.

Recommended Latency Tuning

The following table shows recommended tuning settings for latency.

Table 2. Latency Tuning Settings
Tuning Parameter How?
MTU Size Configure to maximum supported by network:
ip link set dev <interface> mtu <size>
Interrupt moderation Disable with:
ethtool -C <interface> rx-usecs-irq 0
TCP/IP Checksum Offload Leave at default (Enabled).
TCP Segmentation Offload Leave at default (Enabled).
TCP Large Receive Offload Disable using sysfs:
echo 0 > /sys/class/net/<interface>/device/lro
TCP Protocol Tuning Leave at default, but changing does not impact latency.
Receive Side Scaling Application dependent.
Interrupt affinity and irqbalance service

Interrupt affinity settings are application dependent.

Disable irqbalance service:

systemctl stop irqbalance
systemctl disable irqbalance

Reload the drivers to use the driver default interrupt affinity.

Buffer Allocation Method

Leave at default. Some applications might benefit from specific setting.

The AMD Solarflare driver now supports a single optimized buffer allocation strategy and any value set by the rx_alloc_method parameter is ignored.

PCIe Lane Configuration Ensure the adapter is in an x8 slot, and that current speed (not the supported speed) reads back either as "x8" followed by the maximum speed that is mutually supported by the server and the adapter, or as “x8 and Unknown”.
CPU Speed Service (cpuspeed) Disable with:
systemctl stop cpuspeed
systemctl disable cpuspeed
CPU Power Service (cpupower) Disable with:
systemctl stop cpupower
systemctl disable cpupower
Tuned Service Experiment using the network-latency or cpu-partitioning profiles. Alternatively, disable this with:
systemctl stop tuned
systemctl disable tuned
Busy poll (Linux 3.11 and later) Enable with a value of 50µs:
sysctl net.core.busy_poll=50 \
    && sysctl net.core.busy_read=50
Memory bandwidth Ensure memory uses all memory channels on system motherboard.

Recommended Forwarding Tuning

The following table shows recommended tuning settings for forwarding.

Table 3. Forwarding Tuning Settings
Tuning Parameter How?
MTU Size Configure to maximum supported by network:
ip link set dev <interface> mtu <size>
Interrupt moderation Configure an explicit interrupt moderation interval by setting the following driver options (see Module Parameters):
irq_adapt_enable=0
tx_irq_mod_usec=150
TCP/IP Checksum Offload Leave at default (Enabled).
TCP Segmentation Offload Leave at default (Enabled).
TCP Large Receive Offload Disable using sysfs:
echo 0 > /sys/class/net/<interface>/device/lro
performance_profile Set to latency.
TCP Protocol Tuning

Leave at default.

Receive Side Scaling (RSS)

Leave the rss_cpus option at the default, to use all CPUs for RSS.

Ensure the rss_numa_local driver option is set to its default value of 1 (see Module Parameters).

Interrupt affinity and irqbalance service

Interrupt affinity. Affinitize each interface to its own CPU (if possible select CPUs on the same Package). Refer to Interrupt Affinity.

Disable irqbalance service:

systemctl stop irqbalance
systemctl disable irqbalance
Buffer Allocation Method

Leave at default. Some applications might benefit from specific setting.

The AMD Solarflare driver now supports a single optimized buffer allocation strategy and any value set by the rx_alloc_method parameter is ignored.

Buffer Recycling Make receive buffer recycling more aggressive by setting the following driver option (see Module Parameters):
rx_recycle_ring_size=256
PIO When supported (X2-series adapters and earlier), disable PIO by setting the following driver option (see Module Parameters):
piobuf_size=0
Transmit push Disable transmit push by setting the following driver option (see Module Parameters):
tx_push_max_fill=0
Direct copying Disable copying directly from the network stack for transmits by setting the following driver option (see Module Parameters):
tx_copybreak=0
Ring sizes

Change the number of descriptor slots on each ring by setting the following driver options (see Module Parameters):

tx_ring=512
rx_ring=512
Note: As the tx_irq_mod_usec interrupt moderation interval increases, the number of required tx_ring and rx_ring descriptor slots also increases. Insufficient descriptor slots cause dropped packets.