Messages in this thread | | | From | Thomas Gleixner <> | Subject | Re: [patch 1/3] net: dst: Prevent false sharing vs. dst_entry::__refcnt | Date | Tue, 28 Feb 2023 22:31:40 +0100 |
| |
Eric!
On Tue, Feb 28 2023 at 16:17, Eric Dumazet wrote: > On Tue, Feb 28, 2023 at 3:33 PM Thomas Gleixner <tglx@linutronix.de> 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
| |