Subject: Re: RFC: Nagle latency tuning

From: Arnaldo Carvalho de Melo <[email-masked]>
Date: Tue, 9 Sep 2008 10:00:29 -0300

Em Tue, Sep 09, 2008 at 10:22:08AM +0400, Evgeniy Polyakov escreveu:
> Hi.
> 
> On Tue, Sep 09, 2008 at 01:56:12AM -0400, Chris Snook ([email-masked]) wrote:
> > The easiest way to see the problem is to open a TCP socket to an echo 
> > daemon on loopback, make a bunch of small writes totaling less than your 
> > loopback MTU (accounting for overhead), and see how long it takes to get 
> > your echoes.  You can probably do this with netcat, though I haven't 
> > tried.  People don't expect loopback to have 40 ms latency when the box 
> > is lightly loaded, so they'd really like to tweak that down when it's 
> > hurting them.
> 
> Isn't Nagle without corking a very bad idea? Or you can not change the
> application?

In one such case, finantial app building logical packets via several
small buffer send calls I got it working with a "autocorking" LD_PRELOAD
library, libautocork:

http://git.kernel.org/?p=linux/kernel/git/acme/libautocork.git

git://git.kernel.org/pub/scm/linux/kernel/git/acme/libautocork.git

Details/test cases:

http://git.kernel.org/?p=linux/kernel/git/acme/libautocork.git;a=blob_plain;f=tcp_nodelay.txt

How to use it, what you get from using it:

http://git.kernel.org/?p=linux/kernel/git/acme/libautocork.git;a=blob_plain;f=libautocork.txt

- Arnaldo