From: Jesper Dangaard Brouer <hawk@kernel.org>
To: "Toke Høiland-Jørgensen" <toke@redhat.com>,
"Lorenzo Bianconi" <lorenzo@kernel.org>,
"Stanislav Fomichev" <stfomichev@gmail.com>
Cc: Daniel Borkmann <daniel@iogearbox.net>,
bpf@vger.kernel.org, netdev@vger.kernel.org,
Jakub Kicinski <kuba@kernel.org>,
Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <borkmann@iogearbox.net>,
Eric Dumazet <eric.dumazet@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Paolo Abeni <pabeni@redhat.com>,
sdf@fomichev.me, kernel-team@cloudflare.com,
arthur@arthurfabre.com, jakub@cloudflare.com,
Magnus Karlsson <magnus.karlsson@intel.com>,
Maciej Fijalkowski <maciej.fijalkowski@intel.com>,
Willem Ferguson <wferguson@cloudflare.com>,
Jesse Brandeburg <jbrandeburg@cloudflare.com>
Subject: Re: Performance impact of disabling VLAN offload [was: Re: [PATCH bpf-next V1 7/7] net: xdp: update documentation for xdp-rx-metadata.rst]
Date: Thu, 19 Jun 2025 14:09:11 +0200 [thread overview]
Message-ID: <cd4f2982-00ff-4e7b-88e1-6f6697da2c2f@kernel.org> (raw)
In-Reply-To: <875xgu4d6a.fsf@toke.dk>
On 17/06/2025 17.10, Toke Høiland-Jørgensen wrote:
>> Later we will look at using the vlan tag. Today we have disabled HW
>> vlan-offloading, because XDP originally didn't support accessing HW vlan
>> tags.
>
> Side note (with changed subject to disambiguate): Do you have any data
> on the performance impact of disabling VLAN offload that you can share?
> I've been sort of wondering whether saving those couple of bytes has any
> measurable impact on real workloads (where you end up looking at the
> headers anyway, so saving the cache miss doesn't matter so much)?
>
Our production setup have two different VLAN IDs, one for INTERNAL-ID
and one for EXTERNAL-ID (Internet) traffic. On (many) servers this is
on the same physical net_device.
Our Unimog XDP load-balancer *only* handles EXTERNAL-ID. Thus, the very
first thing Unimog does is checking the VLAN ID. If this doesn't match
EXTERNAL-ID it returns XDP_PASS. This is the first time packet data
area is read which (due to our AMD-CPUs) will be a cache-miss.
If this were INTERNAL-ID then we have caused a cache-miss earlier than
needed. The NIC driver have already started a net_prefetch. Thus, if
we can return XDP_PASS without touching packet data, then we can
(latency) hide part of the cache-miss (behind SKB-zero-ing). (We could
also CPUMAP redirect the INTERNAL-ID to a remote CPU for further gains).
Using the kfunc (bpf_xdp_metadata_rx_vlan_tag[1]) for reading VLAN ID
doesn't touch/read packet data.
I hope this makes it clear why reading the HW offloaded VLAN tag from
the RX-descriptor is a performance benefit?
--Jesper
[1] https://docs.kernel.org/networking/xdp-rx-metadata.html
next prev parent reply other threads:[~2025-06-19 12:09 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-03 17:45 [PATCH bpf-next V1 0/7] xdp: Propagate RX HW hints for XDP_REDIRECTed packets via xdp_frame Jesper Dangaard Brouer
2025-06-03 17:45 ` [PATCH bpf-next V1 1/7] net: xdp: Add xdp_rx_meta structure Jesper Dangaard Brouer
2025-06-03 17:46 ` [PATCH bpf-next V1 2/7] selftests/bpf: Adjust test for maximum packet size in xdp_do_redirect Jesper Dangaard Brouer
2025-06-03 17:46 ` [PATCH bpf-next V1 3/7] net: xdp: Add kfuncs to store hw metadata in xdp_buff Jesper Dangaard Brouer
2025-06-16 21:55 ` Jakub Kicinski
2025-06-03 17:46 ` [PATCH bpf-next V1 4/7] net: xdp: Set skb hw metadata from xdp_frame Jesper Dangaard Brouer
2025-06-03 17:46 ` [PATCH bpf-next V1 5/7] net: veth: Read xdp metadata from rx_meta struct if available Jesper Dangaard Brouer
2025-06-03 17:46 ` [PATCH bpf-next V1 6/7] bpf: selftests: Add rx_meta store kfuncs selftest Jesper Dangaard Brouer
2025-06-06 21:57 ` Alexei Starovoitov
2025-06-06 22:16 ` Lorenzo Bianconi
2025-06-03 17:46 ` [PATCH bpf-next V1 7/7] net: xdp: update documentation for xdp-rx-metadata.rst Jesper Dangaard Brouer
2025-06-06 2:45 ` Stanislav Fomichev
2025-06-10 13:48 ` Daniel Borkmann
2025-06-10 20:12 ` Toke Høiland-Jørgensen
2025-06-10 22:26 ` Lorenzo Bianconi
2025-06-11 3:40 ` Stanislav Fomichev
2025-06-13 10:59 ` Jesper Dangaard Brouer
2025-06-16 15:34 ` Stanislav Fomichev
2025-06-17 16:15 ` Jesper Dangaard Brouer
2025-06-17 20:47 ` Stanislav Fomichev
2025-06-16 12:37 ` Lorenzo Bianconi
2025-06-16 15:45 ` Stanislav Fomichev
2025-06-16 16:40 ` Lorenzo Bianconi
2025-06-17 11:50 ` Toke Høiland-Jørgensen
2025-06-17 14:47 ` Jesper Dangaard Brouer
2025-06-17 15:10 ` Performance impact of disabling VLAN offload [was: Re: [PATCH bpf-next V1 7/7] net: xdp: update documentation for xdp-rx-metadata.rst] Toke Høiland-Jørgensen
2025-06-19 12:09 ` Jesper Dangaard Brouer [this message]
2025-06-19 12:23 ` Toke Høiland-Jørgensen
2025-06-13 11:18 ` [PATCH bpf-next V1 7/7] net: xdp: update documentation for xdp-rx-metadata.rst Daniel Borkmann
2025-06-16 11:51 ` Toke Høiland-Jørgensen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cd4f2982-00ff-4e7b-88e1-6f6697da2c2f@kernel.org \
--to=hawk@kernel.org \
--cc=arthur@arthurfabre.com \
--cc=ast@kernel.org \
--cc=borkmann@iogearbox.net \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=eric.dumazet@gmail.com \
--cc=jakub@cloudflare.com \
--cc=jbrandeburg@cloudflare.com \
--cc=kernel-team@cloudflare.com \
--cc=kuba@kernel.org \
--cc=lorenzo@kernel.org \
--cc=maciej.fijalkowski@intel.com \
--cc=magnus.karlsson@intel.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sdf@fomichev.me \
--cc=stfomichev@gmail.com \
--cc=toke@redhat.com \
--cc=wferguson@cloudflare.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.