
Issue 11
© Solarflare Communications 2014
89
Solarflare Server Adapter
User Guide
Transmit Packet Steering
Transmit Packet Steering (XPS) is supported in Linux 2.6.38 and later. XPS is a mechanism for
selecting which transmit queue to use when transmitting a packet on a multi-queue device.
XPS is configured on a per transmit queue basis where a bitmap of CPUs identifies the CPUs that may
use the queue to transmit.
Kernel Configuration
Before using XPS the kernel must be compiled with the kconfig symbol
CONFIG_XPS
enabled.
Configure CPU/Hyperthreads
Within in each
/sys/class/net/eth3/queues/tx-N
directory there exists an
’xps_cpus’
file
which contains a bitmap of CPUs that can use the queue to transmit. In the following example
transmit queue 0 can be used by the first two CPUs and transmit queue 1 can be used by the
following two CPUs:
If hyperthreading is enabled, each hyperthread is identified as a seperate CPU, for example if the
system has 16 cores but 32 hyperthreads then the transmit queues should be paired with the
hyperthreaded cores:
XPS - Example Configuration
System Configuration:
• Single Solarflare adapter
• 2 x 8 core processors with hyperthreading enabled to give a total of 32 cores
• rss_cpus=8
• Only 1 interface on the adapter is configured
• The IRQ Balance service is disabled
# echo 3 > /sys/class/net/eth3/queues/tx-0/xps_cpus
# echo c > /sys/class/net/eth3/queues/tx-0/xps_cpus
# echo 30003 > /sys/class/net/eth3/queues/tx-0/xps_cpus
# echo c000c > /sys/class/net/eth3/queues/tx-0/xps_cpus