[Tfug] Linux kernel tcp delay options 4e7uzube

Adrian choprboy at dakotacom.net
Thu Jun 6 15:24:45 MST 2013


On Thursday 06 June 2013 14:49, Bexley Hall wrote:
> Hi Adrian,
>
> > Yep, the best option would be for the app to use TCP_NODELAY when opening
> > its socket... but alas Cyrus doesn;t do this, at least not in the CentOS
> > 5.x package I have. There are lots of threads about this and dev comments
> > that Cyrus should do this from several years back... but it apparently
> > didn;t get in (which really suprises me that no one has fixed this in the
> > last 10 years since I last used Cyrus).
>
> Is there a counterargument as to why it "shouldn't"?  I.e., perhaps
> <someone> intended it for use in a type of application where this
> would be counterproductive?  Though one can argue for a configurable
> option -- perhaps even "client/account specific"!  (Having a *core*
> RDBMS service running in an OS should be a key requirement for any
> OS "heavy" enough to support it!  Shame that this hasn't been the
> case to date!)

I can't think of any of the top of my head. TCP ack delay/nagle is very useful 
for reducing packet load on very slow data streams (like typing or serial 
transfers) at the expense of latency. It waits for more data to try to send a 
single large packet instead of many small packets. On fast datastreams or 
large transfers it is irrelevant as the packet data is filled long before the 
timer expires.

With IMAP, the server doing lots of small "OK" response packets in response to 
every client command request. If the kernel holds every "OK" data packet 
waiting for more to fill a packet, it can introduce a lot of latency.


Adrian





More information about the tfug mailing list