Subject: Re: [RFC] Make TCP prequeue configurable

From: John Heffner <[email-masked]>
Date: Thu, 27 Sep 2007 22:26:02 -0400

Stephen Hemminger wrote:
> On Fri, 28 Sep 2007 00:08:33 +0200
> Eric Dumazet <[email-masked]> wrote:
> 
>> Hi all
>>
>> I am sure some of you are going to tell me that prequeue is not
>> all black :)
>>
>> Thank you
>>
>> [RFC] Make TCP prequeue configurable
>>
>> The TCP prequeue thing is based on old facts, and has drawbacks.
>>
>> 1) It adds 48 bytes per 'struct tcp_sock'
>> 2) It adds some ugly code in hot paths
>> 3) It has a small hit ratio on typical servers using many sockets
>> 4) It may have a high hit ratio on UP machines running one process,
>>     where the prequeue adds litle gain. (In fact, letting the user
>>     doing the copy after being woke up is better for cache reuse)
>> 5) Doing a copy to user in softirq handler is not good, because of
>>     potential page faults :(
>> 6) Maybe the NET_DMA thing is the only thing that might need prequeue.
>>
>> This patch introduces a CONFIG_TCP_PREQUEUE, automatically selected if 
>> CONFIG_NET_DMA is on.
>>
>> Signed-off-by: Eric Dumazet <[email-masked]>
>>
> 
> Rather than having a two more compile cases and test cases to deal
> with.  If you can prove it is useless, make a case for killing
> it completely.

I think it really does help in case (4) with old NICs that don't do rx 
checksumming.  I'm not sure how many people really care about this 
anymore, but probably some...?

OTOH, it would be nice to get rid of sysctl_tcp_low_latency.

   -John