Hello!

On Sun, Feb 03, 2008 at 05:32:16PM +0300, Tomash Brechko wrote:

Hello,

In memcached.c there's a line,

 setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, (void *)&flags, sizeof(flags));

We should realise that this is a serious performance killer for
streaming.  For instance, C::M::F has multi-update commands that are
capable to bundle several requests into one network packet.  However
replies are always sent _one at a time_.  I.e. tons of packets with
single 'STORED' etc. (>40 bytes header and 6 bytes of data---not the
best ratio).  Not to say the the greater number of packets means a
huge increase of latency in a congested network.

memcached should have in its TODO "Disable TCP_NODELAY and enable
TCP_CORK/TCP_NOPUSH for streaming".  The server may tell if the

Just a quick note: the code to set/clear TCP_NOPUSH was here before iov work was merged from facebook at r320 (i.e. in 1.1.* branch).

Maxim Dounin

Reply via email to