[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4ACBE3E7.60404@hp.com>
Date: Tue, 06 Oct 2009 17:42:15 -0700
From: Rick Jones <rick.jones2@...com>
To: Eric Dumazet <eric.dumazet@...il.com>
CC: "David S. Miller" <davem@...emloft.net>,
Linux Netdev List <netdev@...r.kernel.org>
Subject: Re: [RFC net-next-2.6] net: speedup sk_wake_async()
Eric Dumazet wrote:
> Latency works, part 1
>
>
> An incoming datagram must bring into cpu cache *lot* of cache lines,
> in particular : (other parts omitted (hash chains, ip route cache...))
>
> On 32bit arches :
How about 64-bit?
> offsetof(struct sock, sk_rcvbuf) =0x30 (read)
> offsetof(struct sock, sk_lock) =0x34 (rw)
>
> offsetof(struct sock, sk_sleep) =0x50 (read)
> offsetof(struct sock, sk_rmem_alloc) =0x64 (rw)
> offsetof(struct sock, sk_receive_queue)=0x74 (rw)
>
> offsetof(struct sock, sk_forward_alloc)=0x98 (rw)
>
> offsetof(struct sock, sk_callback_lock)=0xcc (rw)
> offsetof(struct sock, sk_drops) =0xd8 (read if we add dropcount support, rw if frame dropped)
> offsetof(struct sock, sk_filter) =0xf8 (read)
>
> offsetof(struct sock, sk_socket) =0x138 (read)
>
> offsetof(struct sock, sk_data_ready) =0x15c (read)
>
>
> We can avoid sk->sk_socket and socket->fasync_list referencing on sockets
> with no fasync() structures. (socket->fasync_list ptr is probably already in cache
> because it shares a cache line with socket->wait, ie location pointed by sk->sk_sleep)
>
> This avoids one cache line load per incoming packet for common cases (no fasync())
>
> We can leave (or even move in a future patch) sk->sk_socket in a cold location
>
> Signed-off-by: Eric Dumazet <eric.dumazet@...il.com>
Got any netperf service demand changes?
rick jones
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists