[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <516EC34B.1040503@gmail.com>
Date: Wed, 17 Apr 2013 11:44:11 -0400
From: Vlad Yasevich <vyasevich@...il.com>
To: Daniel Borkmann <dborkman@...hat.com>
CC: David Laight <David.Laight@...LAB.COM>, davem@...emloft.net,
netdev@...r.kernel.org, linux-sctp@...r.kernel.org
Subject: Re: [PATCH net-next 4/9] net: sctp: sctp_outq: consolidate chars
into bitfield
On 04/17/2013 05:26 AM, Daniel Borkmann wrote:
> On 04/17/2013 10:43 AM, David Laight wrote:
>>> __u32 outstanding_bytes;
>>>
>>> - /* Are we doing fast-rtx on this queue */
>>> - char fast_rtx;
>>> -
>>> - /* Corked? */
>>> - char cork;
>>> -
>>> - /* Is this structure empty? */
>>> - char empty;
>>> + __u8 fast_rtx:1, /* Are we doing fast-rtx on this queue */
>>> + cork:1, /* Corked? */
>>> + empty:1; /* Is this structure empty? */
>>> };
>>
>> Use of bitfields just makes the code slower.
>> The only real excuse for using them is to reduce the size
>> of a structure that is allocated a lot.
>
> sctp_outq is _embedded_ into an sctp_association structure, which
> has [size: 2280, cachelines: 36, members: 76]! A next step would be
> to try to reorder its elements carefully and see if we can reduce
> the size by filling some holes.
I remember attempting this undertaking that led me down the rabbit hole
so fast that my head started to spin. It is a badly needed project, but
be prepared to spend a lot of time on it.
Not sure if the space saving is worth the bad code generated for
bit-fields, especially considering that empty and cork are used on
almost every packet.
-vlad
> --
> To unsubscribe from this list: send the line "unsubscribe linux-sctp" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
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