Skip to content
  • Eric Dumazet's avatar
    net: optimize INET input path further · 68835aba
    Eric Dumazet authored
    Followup of commit b178bb3d
     (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: default avatarEric Dumazet <>
    Signed-off-by: default avatarDavid S. Miller <>