Re: [PATCH v4] netdev attribute to control xdpgeneric skb linearization
From: Toke Høiland-Jørgensen <hidden>
Date: 2020-02-28 11:20:40
Also in:
lkml
Luigi Rizzo [off-list ref] writes:
Add a netdevice flag to control skb linearization in generic xdp mode.
The attribute can be modified through
/sys/class/net/<DEVICE>/xdpgeneric_linearize
The default is 1 (on)
Motivation: xdp expects linear skbs with some minimum headroom, and
generic xdp calls skb_linearize() if needed. The linearization is
expensive, and may be unnecessary e.g. when the xdp program does
not need access to the whole payload.
This sysfs entry allows users to opt out of linearization on a
per-device basis (linearization is still performed on cloned skbs).
On a kernel instrumented to grab timestamps around the linearization
code in netif_receive_generic_xdp, and heavy netperf traffic with 1500b
mtu, I see the following times (nanoseconds/pkt)
The receiver generally sees larger packets so the difference is more
significant.
ns/pkt RECEIVER SENDER
p50 p90 p99 p50 p90 p99
LINEARIZATION: 600ns 1090ns 4900ns 149ns 249ns 460ns
NO LINEARIZATION: 40ns 59ns 90ns 40ns 50ns 100ns
v1 --> v2 : added Documentation
v2 --> v3 : adjusted for skb_cloned
v3 --> v4 : renamed to xdpgeneric_linearize, documentation
Signed-off-by: Luigi Rizzo <redacted>Acked-by: Toke Høiland-Jørgensen <redacted>