forked from mirrors/linux
net: move early demux fields close to sk_refcnt
sk_rx_dst/sk_rx_dst_ifindex/sk_rx_dst_cookie are read in early demux,
and currently spans two cache lines.
Moving them close to sk_refcnt makes more sense, as only one cache
line is needed.
New layout for this hot cache line is :
struct sock {
struct sock_common __sk_common; /* 0 0x88 */
/* --- cacheline 2 boundary (128 bytes) was 8 bytes ago --- */
struct dst_entry * sk_rx_dst; /* 0x88 0x8 */
int sk_rx_dst_ifindex; /* 0x90 0x4 */
u32 sk_rx_dst_cookie; /* 0x94 0x4 */
socket_lock_t sk_lock; /* 0x98 0x20 */
atomic_t sk_drops; /* 0xb8 0x4 */
int sk_rcvlowat; /* 0xbc 0x4 */
/* --- cacheline 3 boundary (192 bytes) --- */
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
29fbc26e6d
commit
43f51df417
1 changed files with 5 additions and 3 deletions
|
|
@ -390,6 +390,11 @@ struct sock {
|
||||||
#define sk_flags __sk_common.skc_flags
|
#define sk_flags __sk_common.skc_flags
|
||||||
#define sk_rxhash __sk_common.skc_rxhash
|
#define sk_rxhash __sk_common.skc_rxhash
|
||||||
|
|
||||||
|
/* early demux fields */
|
||||||
|
struct dst_entry *sk_rx_dst;
|
||||||
|
int sk_rx_dst_ifindex;
|
||||||
|
u32 sk_rx_dst_cookie;
|
||||||
|
|
||||||
socket_lock_t sk_lock;
|
socket_lock_t sk_lock;
|
||||||
atomic_t sk_drops;
|
atomic_t sk_drops;
|
||||||
int sk_rcvlowat;
|
int sk_rcvlowat;
|
||||||
|
|
@ -432,9 +437,6 @@ struct sock {
|
||||||
#ifdef CONFIG_XFRM
|
#ifdef CONFIG_XFRM
|
||||||
struct xfrm_policy __rcu *sk_policy[2];
|
struct xfrm_policy __rcu *sk_policy[2];
|
||||||
#endif
|
#endif
|
||||||
struct dst_entry *sk_rx_dst;
|
|
||||||
int sk_rx_dst_ifindex;
|
|
||||||
u32 sk_rx_dst_cookie;
|
|
||||||
|
|
||||||
struct dst_entry __rcu *sk_dst_cache;
|
struct dst_entry __rcu *sk_dst_cache;
|
||||||
atomic_t sk_omem_alloc;
|
atomic_t sk_omem_alloc;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue