
Solarflare
Server
Adapter
User
Guide
Solarflare
Adapters
on
Linux
Issue
20
©
Solarflare
Communications
2017
85
The
SARFS
feature
is
disabled
by
default
and
can
be
enabled
using
net
driver
module
parameters.
Driver
module
parameters
can
be
specified
in
a
user
created
file
(e.g.
sfc.conf)
in
the
/etc/modprobe.d
directory:
sxps_enabled
sarfs_table_size
sarfs_global_holdoff_ms
sarfs_sample_rate
If
the
kernel
supports
XPS,
this
should
be
enabled
when
using
the
SARFS
feature.
When
the
kernel
does
not
supports
XPS,
the
sxps_enabled
parameter
should
be
enabled
when
using
SARFS.
NOTE:
sxps_enabled
is
known
to
work
on
RHEL
version
up
to
and
including
RHEL6.5,
but
does
not
function
on
RHEL7
due
to
changes
in
the
interrupt
hint
policy.
Refer
to
for
a
description
of
the
SARFS
driver
module
parameters.
3.19
Transmit
Packet
Steering
(XPS)
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/<interface>/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:
#
echo
3
>
/sys/class/net/eth3/queues/tx
‐
0/xps_cpus
#
echo
c
>
/sys/class/net/eth3/queues/tx
‐
0/xps_cpus
If
hyperthreading
is
enabled,
each
hyperthread
is
identified
as
a
separate
CPU,
for
example
if
the
system
has
16
cores
but
32
hyperthreads
then
the
transmit
queues
should
be
paired
with
the
hyperthreaded
cores:
#
echo
30003
>
/sys/class/net/eth3/queues/tx
‐
0/xps_cpus
#
echo
c000c
>
/sys/class/net/eth3/queues/tx
‐
0/xps_cpus