From: Jakub Sitnicki <jakub@cloudflare.com>
To: Paolo Abeni <pabeni@redhat.com>
Cc: Florian Westphal <fw@strlen.de>,
netdev@vger.kernel.org,
Steffen Klassert <steffen.klassert@secunet.com>,
kernel-team@cloudflare.com
Subject: Re: [PATCH RFC net-next] net: Use fixed slots for skb extensions
Date: Thu, 27 Aug 2026 14:28:59 +0200 [thread overview]
Message-ID: <87wltbu4qc.fsf@cloudflare.com> (raw)
In-Reply-To: <73331a07-46a3-4349-98b1-b388bcd783d0@redhat.com> (Paolo Abeni's message of "Thu, 27 Aug 2026 09:42:24 +0200")
On Thu, Aug 27, 2026 at 09:42 AM +02, Paolo Abeni wrote:
> On 8/26/26 11:02 PM, Florian Westphal wrote:
>> Jakub Sitnicki <jakub@cloudflare.com> wrote:
>>> Replace the dynamic skb extension allocator (->chunks + per-object offset[]
>>> array) with fixed per-id slots with offsets computed at compile time.
>>
>> Why is that better than
>>
>> struct skb_ext {
>> refcount_t refcnt;
>> struct secpath s;
>> struct nf_bridge_info b;
>> ...
>>
>> ?
>
> I *think* the layout above would possibly be better (with compiler's
> guard around each struct definition).
>
>> Yes, initially this was krealloc()'d area. But the other assumption
>> was that most skbs will carry no extension at all, or, in some configs
>> one maybe two (IPsec gateway for instance).
>>
>> Thats why the first added extension is also at the beginning of the
>> memory blob (that needs to be accessed anyway), regardless of the ID.
>>
>> I don't insist on keeping offsets[], if you feel like microbenchmarking
>> different use-cases to see if it makes a difference to have a fixed
>> memory layout feel free to explore that.
>
> Both options for different skb ext layouts save a few bytes from the
> final `struct skb_ext` size. This is IMHO quite relevant as the total
> size is approaching the memory partition size (IIRC it's almost 256
> bytes), and the bpf ext could make skb_ext require the next one (512).
>
> That in turn should impact performances quite noticeably (IIRC we
> observed measurable regression for bulk transfers due to similar changes
> in the past), as the number of slabs required to support the same number
> of in-flight packets will double, putting more pressure on the memory
> allocator and possibly hitting the slab slow-path.
>
> Still WRT optimizing skb_ext size, I think that it should be feasible to
> optimize the layout proposed by Florian by taking in account that some
> exts are 'mutually exclusive' i.e. on top of my head mptcp and bridge
> should never be attached to the same skb, and I *guess* can_skb_ext is
> mutually exclusive with most of the others.
Right, we could have unions for the mutually exclusive options.
> The layout could be adapted to such constraints, and there could be
> run-time checks (under DEBUG_NET) to verify such constrains at skb_add
> time leveraging `present_extensions` and a static matrix describing the
> mutual exclusive status for all extensions.
Having checks like that that sounds like the right first step that can
be done independently of skb_ext layout changes. I can give that a shot.
Thanks for feedback.
next prev parent reply other threads:[~2026-08-27 12:29 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-25 16:01 [PATCH RFC net-next] net: Use fixed slots for skb extensions Jakub Sitnicki
2026-08-26 21:02 ` Florian Westphal
2026-08-26 21:25 ` Florian Westphal
2026-08-27 7:42 ` Paolo Abeni
2026-08-27 8:34 ` Oliver Hartkopp
2026-08-27 12:28 ` Jakub Sitnicki [this message]
2026-08-27 13:23 ` Florian Westphal
2026-08-27 12:24 ` Jakub Sitnicki
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=87wltbu4qc.fsf@cloudflare.com \
--to=jakub@cloudflare.com \
--cc=fw@strlen.de \
--cc=kernel-team@cloudflare.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=steffen.klassert@secunet.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox