Thread (11 messages) 11 messages, 3 authors, 2008-02-01

Re: [PATCH 6/6] [TCP]: Reorganize struct tcp_sock to save 16 bytes on 64-bit arch

From: Arnaldo Carvalho de Melo <hidden>
Date: 2008-01-31 20:17:51

Em Thu, Jan 31, 2008 at 08:57:53PM +0100, Eric Dumazet escreveu:
Arnaldo Carvalho de Melo a écrit :
quoted
/home/acme/git/net-2.6/net/ipv6/tcp_ipv6.c:
  struct tcp_sock  |  -16
  struct tcp6_sock |  -16
 2 structs changed

Now it is at:

/* size: 1552, cachelines: 25 */
/* paddings: 2, sum paddings: 8 */
/* last cacheline: 16 bytes */

As soon as we stop using skb_queue_list we'll get it down to 24 cachelines.

Signed-off-by: Arnaldo Carvalho de Melo <redacted>
---
 include/linux/tcp.h |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/include/linux/tcp.h b/include/linux/tcp.h
index 08027f1..f48644d 100644
--- a/include/linux/tcp.h
+++ b/include/linux/tcp.h
@@ -304,7 +304,6 @@ struct tcp_sock {
 	u32	rtt_seq;	/* sequence number to update rttvar	*/
  	u32	packets_out;	/* Packets which are "in flight"	*/
-	u32	retrans_out;	/* Retransmitted packets out		*/
 /*
  *      Options received (usually on last packet, some only on SYN packets).
  */
@@ -332,6 +331,8 @@ struct tcp_sock {
  	struct tcp_sack_block recv_sack_cache[4];
 +	u32	retrans_out;	/* Retransmitted packets out		*/
+
Hum... retrans_out should sit close to packets_out (or lost_out/sacked_out 
???), please.

'struct tcp_sock' is very large on 64 bits, so I would prefer to make sure 
most paths dont need to touch all 24 cache lines (or 25 cache lines).
That is perfectly fine, I'll replace my patch with another, that states
this beyond doubt.

- Arnaldo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help