Message ID | e47b71de54fd3e580544be56fc1bb2985c77b0f4.1687081558.git.christophe.jaillet@wanadoo.fr (mailing list archive) |
---|---|
State | Accepted |
Commit | 92b08290859b09a2ead2dc553aaaadb015748536 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] mptcp: Reorder fields in 'struct mptcp_pm_add_entry' | expand |
Hi Christophe, On 18/06/2023 11:46, Christophe JAILLET wrote: > Group some variables based on their sizes to reduce hole and avoid padding. > On x86_64, this shrinks the size of 'struct mptcp_pm_add_entry' > from 136 to 128 bytes. > > It saves a few bytes of memory and is more cache-line friendly. Good catch and thank you for having shared this patch, it looks good to me! Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net> Cheers, Matt
Sun, Jun 18, 2023 at 11:46:46AM CEST, christophe.jaillet@wanadoo.fr wrote: >Group some variables based on their sizes to reduce hole and avoid padding. >On x86_64, this shrinks the size of 'struct mptcp_pm_add_entry' >from 136 to 128 bytes. > >It saves a few bytes of memory and is more cache-line friendly. > >Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Hello: This patch was applied to netdev/net-next.git (main) by Jakub Kicinski <kuba@kernel.org>: On Sun, 18 Jun 2023 11:46:46 +0200 you wrote: > Group some variables based on their sizes to reduce hole and avoid padding. > On x86_64, this shrinks the size of 'struct mptcp_pm_add_entry' > from 136 to 128 bytes. > > It saves a few bytes of memory and is more cache-line friendly. > > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> > > [...] Here is the summary with links: - [net-next] mptcp: Reorder fields in 'struct mptcp_pm_add_entry' https://git.kernel.org/netdev/net-next/c/92b08290859b You are awesome, thank you!
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c index a12a87b780f6..a56718ffdd02 100644 --- a/net/mptcp/pm_netlink.c +++ b/net/mptcp/pm_netlink.c @@ -25,9 +25,9 @@ static int pm_nl_pernet_id; struct mptcp_pm_add_entry { struct list_head list; struct mptcp_addr_info addr; + u8 retrans_times; struct timer_list add_timer; struct mptcp_sock *sock; - u8 retrans_times; }; struct pm_nl_pernet {
Group some variables based on their sizes to reduce hole and avoid padding. On x86_64, this shrinks the size of 'struct mptcp_pm_add_entry' from 136 to 128 bytes. It saves a few bytes of memory and is more cache-line friendly. Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> --- Using pahole Before: ====== struct mptcp_pm_add_entry { struct list_head list; /* 0 16 */ struct mptcp_addr_info addr; /* 16 12 */ /* XXX 4 bytes hole, try to pack */ struct timer_list add_timer; /* 32 88 */ /* --- cacheline 1 boundary (64 bytes) was 56 bytes ago --- */ struct mptcp_sock * sock; /* 120 8 */ /* --- cacheline 2 boundary (128 bytes) --- */ u8 retrans_times; /* 128 1 */ /* size: 136, cachelines: 3, members: 5 */ /* sum members: 125, holes: 1, sum holes: 4 */ /* padding: 7 */ /* last cacheline: 8 bytes */ }; After: ===== struct mptcp_pm_add_entry { struct list_head list; /* 0 16 */ struct mptcp_addr_info addr; /* 16 12 */ u8 retrans_times; /* 28 1 */ /* XXX 3 bytes hole, try to pack */ struct timer_list add_timer; /* 32 88 */ /* --- cacheline 1 boundary (64 bytes) was 56 bytes ago --- */ struct mptcp_sock * sock; /* 120 8 */ /* size: 128, cachelines: 2, members: 5 */ /* sum members: 125, holes: 1, sum holes: 3 */ }; --- net/mptcp/pm_netlink.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)