Eric Dumazet 68835aba4d net: optimize INET input path further
Followup of commit b178bb3dfc30 (net: reorder struct sock fields)

Optimize INET input path a bit further, by :

1) moving sk_refcnt close to sk_lock.

This reduces number of dirtied cache lines by one on 64bit arches (and
64 bytes cache line size).

2) moving inet_daddr & inet_rcv_saddr at the beginning of sk

(same cache line than hash / family / bound_dev_if / nulls_node)

This reduces number of accessed cache lines in lookups by one, and dont
increase size of inet and timewait socks.
inet and tw sockets now share same place-holder for these fields.

Before patch :

offsetof(struct sock, sk_refcnt) = 0x10
offsetof(struct sock, sk_lock) = 0x40
offsetof(struct sock, sk_receive_queue) = 0x60
offsetof(struct inet_sock, inet_daddr) = 0x270
offsetof(struct inet_sock, inet_rcv_saddr) = 0x274

After patch :

offsetof(struct sock, sk_refcnt) = 0x44
offsetof(struct sock, sk_lock) = 0x48
offsetof(struct sock, sk_receive_queue) = 0x68
offsetof(struct inet_sock, inet_daddr) = 0x0
offsetof(struct inet_sock, inet_rcv_saddr) = 0x4

compute_score() (udp or tcp) now use a single cache line per ignored
item, instead of two.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-12-09 20:05:58 -08:00
..
2010-09-23 14:33:39 -07:00
2010-02-22 16:20:22 -08:00
2010-10-25 13:09:45 -07:00
2010-11-18 11:02:23 -08:00
2010-06-28 23:24:29 -07:00
2010-02-22 16:20:22 -08:00
2009-03-02 03:00:15 -08:00
2009-03-02 03:00:15 -08:00
2009-05-25 22:44:59 -07:00
2010-09-23 14:33:39 -07:00
2010-10-27 11:37:32 -07:00
2010-07-12 12:57:54 -07:00
2010-07-12 12:57:54 -07:00