I think TCP_NODELAY is critical to performance. Actuall after spending a large number of unfruitful hours on glusterfs, I wrote my own simple shared storage with BerkeleyDB backend, and I found that enabling TCP_NODELAY on my system gives me nearly 10x readback throughput. Thanks for pointing this out, I'll definitely try that.

- Wei

Mark Mielke wrote:
On 09/29/2009 03:39 AM, David Saez Padros wrote:
The
second is 'option transport.socket.nodelay on' in each of your
protocol/client _and_ protocol/server volumes.

where is this option documented ?

I'm a little surprised TCP_NODELAY isn't set by default? I set it on all servers I write as a matter of principle.

The Nagle algorithm is for very simple servers to have acceptable performance. The type of servers that benefit, are the type of servers that do writes of individual bytes (no buffering).

Serious servers intended to perform well should be able to easily beat the Nagle algorithm. writev(), sendmsg(), or even write(buffer) where the buffer is built first, should all beat the Nagle algorithm in terms of increased throughput and reduced latency. On Linux, there is also TCP_CORK. Unless GlusterFS does small writes, I suggest TCP_NODELAY be set by default in future releases.

Just an opinion. :-)

Cheers,
mark


_______________________________________________
Gluster-users mailing list
Gluster-users@gluster.org
http://gluster.org/cgi-bin/mailman/listinfo/gluster-users

Reply via email to