* [PATCH 6/6] [TCP]: Reorganize struct tcp_sock to save 16 bytes on 64-bit arch
@ 2008-01-31 18:31 Arnaldo Carvalho de Melo
2008-01-31 19:57 ` [PATCH 6/6] [TCP]: Reorganize struct tcp_sock to save 16 bytes Eric Dumazet
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Arnaldo Carvalho de Melo @ 2008-01-31 18:31 UTC (permalink / raw)
To: dccp
/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 <acme@redhat.com>
---
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 */
+
struct sk_buff *highest_sack; /* highest skb with SACK received
* (validity guaranteed only if
* sacked_out > 0)
@@ -372,7 +373,6 @@ struct tcp_sock {
unsigned int keepalive_time; /* time before keep alive takes place */
unsigned int keepalive_intvl; /* time interval between keep alive probes */
- int linger2;
unsigned long last_synq_overflow;
@@ -398,6 +398,8 @@ struct tcp_sock {
u32 probe_seq_end;
} mtu_probe;
+ int linger2;
+
#ifdef CONFIG_TCP_MD5SIG
/* TCP AF-Specific parts; only used by MD5 Signature support so far */
struct tcp_sock_af_ops *af_specific;
--
1.5.3.8
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH 6/6] [TCP]: Reorganize struct tcp_sock to save 16 bytes
2008-01-31 18:31 [PATCH 6/6] [TCP]: Reorganize struct tcp_sock to save 16 bytes on 64-bit arch Arnaldo Carvalho de Melo
@ 2008-01-31 19:57 ` Eric Dumazet
2008-01-31 20:17 ` Arnaldo Carvalho de Melo
2008-01-31 20:33 ` Arnaldo Carvalho de Melo
2 siblings, 0 replies; 4+ messages in thread
From: Eric Dumazet @ 2008-01-31 19:57 UTC (permalink / raw)
To: dccp
Arnaldo Carvalho de Melo a écrit :
> /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 <acme@redhat.com>
> ---
> 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).
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH 6/6] [TCP]: Reorganize struct tcp_sock to save 16 bytes
2008-01-31 18:31 [PATCH 6/6] [TCP]: Reorganize struct tcp_sock to save 16 bytes on 64-bit arch Arnaldo Carvalho de Melo
2008-01-31 19:57 ` [PATCH 6/6] [TCP]: Reorganize struct tcp_sock to save 16 bytes Eric Dumazet
@ 2008-01-31 20:17 ` Arnaldo Carvalho de Melo
2008-01-31 20:33 ` Arnaldo Carvalho de Melo
2 siblings, 0 replies; 4+ messages in thread
From: Arnaldo Carvalho de Melo @ 2008-01-31 20:17 UTC (permalink / raw)
To: dccp
Em Thu, Jan 31, 2008 at 08:57:53PM +0100, Eric Dumazet escreveu:
> Arnaldo Carvalho de Melo a écrit :
>> /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 <acme@redhat.com>
>> ---
>> 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
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH 6/6] [TCP]: Reorganize struct tcp_sock to save 16 bytes
2008-01-31 18:31 [PATCH 6/6] [TCP]: Reorganize struct tcp_sock to save 16 bytes on 64-bit arch Arnaldo Carvalho de Melo
2008-01-31 19:57 ` [PATCH 6/6] [TCP]: Reorganize struct tcp_sock to save 16 bytes Eric Dumazet
2008-01-31 20:17 ` Arnaldo Carvalho de Melo
@ 2008-01-31 20:33 ` Arnaldo Carvalho de Melo
2 siblings, 0 replies; 4+ messages in thread
From: Arnaldo Carvalho de Melo @ 2008-01-31 20:33 UTC (permalink / raw)
To: dccp
Em Thu, Jan 31, 2008 at 06:17:20PM -0200, Arnaldo Carvalho de Melo escreveu:
> Em Thu, Jan 31, 2008 at 08:57:53PM +0100, Eric Dumazet escreveu:
> > 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.
David, I just removed this patch from my net-2.6 tree, if you are ok
with the others, please pull.
- Arnaldo
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2008-01-31 20:33 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-31 18:31 [PATCH 6/6] [TCP]: Reorganize struct tcp_sock to save 16 bytes on 64-bit arch Arnaldo Carvalho de Melo
2008-01-31 19:57 ` [PATCH 6/6] [TCP]: Reorganize struct tcp_sock to save 16 bytes Eric Dumazet
2008-01-31 20:17 ` Arnaldo Carvalho de Melo
2008-01-31 20:33 ` Arnaldo Carvalho de Melo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox