Re: [patch 1/3] net: dst: Prevent false sharing vs. dst_entry::__refcnt
From: Thomas Gleixner
Date: Tue Feb 28 2023 - 16:31:49 EST
Eric!
On Tue, Feb 28 2023 at 16:17, Eric Dumazet wrote:
> On Tue, Feb 28, 2023 at 3:33 PM Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:
>> perf top identified two affected read accesses. dst_entry::lwtstate and
>> rtable::rt_genid.
>>
>> dst_entry:__refcnt is located at offset 64 of dst_entry, which puts it into
>> a seperate cacheline vs. the read mostly members located at the beginning
>> of the struct.
>
> This will probably increase struct rt6_info past the 4 cache line
> size, right ?
pahole says: /* size: 256, cachelines: 4, members: 11 */
> It would be nice to allow sharing the 'hot' cache line with seldom
> used fields.
Sure.
> Instead of mere pads, add some unions, and let rt6i_uncached/rt6i_uncached_list
> use them.
If I understand correctly, you suggest to move
rt6_info::rt6i_uncached[_list], rtable::rt_uncached[_list]
into struct dst_entry and fixup the usage sites, right?
I don't see why that would need a union. dst_entry::rt_uncached[_list]
would work for both, no?
Thanks,
tglx