Re: strange TCP stack behiviour with write()es in pieces

From: David Schwartz (davids@webmaster.com)
Date: Thu Jan 03 2002 - 15:43:00 EST


On Thu, 3 Jan 2002 14:22:52 +0100, Michal Moskal wrote:

>> If you can design an algorithm that makes that only two times slower,
>>then
>> the world will be excited and interested and perhaps that algorithm will
>>replace TCP. But until that time, we're stuck with what we have.

>With negle disabled it works 17/15 times slower, which is much less then
>two. Similary with UNIX domain sockets.

        However, with Nagle disabled, there is no bound to how poor network
efficiency can be. If you do a single byte write every tenth of a second, you
will send out a packet for each single byte.

        You can only disable Nagle if you can assume that the application is smart
enough to do the coalescing. After all, someone has to. Since we're talking
about an app that can't coalesce, you cannot disable Nagle. (Unless you
consider it acceptable to send one byte of data in each packet.)

        Again, an application *must* *not* disable Nagle unless it (the app) takes
responsibility for ensuring that data is sent in large enough chunks to
ensure network efficiency. So you can disable nagle if you want to, but not
until *AFTER* you make sure your application coalesces writes.

        DS

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Jan 07 2002 - 21:00:22 EST