From e863bffe3d3edc669e9c0bfad2e771b5ab0e8271 Mon Sep 17 00:00:00 2001 From: nick Date: Thu, 31 May 2012 11:33:31 +0100 Subject: [PATCH] Set TCP_NODELAY on our socket. This decreases average NBD read request RTT from 0.3ms to 0.001ms --- src/serve.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/serve.c b/src/serve.c index 7382cfa..a83d53f 100644 --- a/src/serve.c +++ b/src/serve.c @@ -15,6 +15,9 @@ #include #include +#include +#include + static const int block_allocation_resolution = 4096;//128<<10; static inline void dirty(struct mode_serve_params *serve, off64_t from, int len) @@ -384,7 +387,12 @@ void serve_open_server_socket(struct mode_serve_params* params) ); SERVER_ERROR_ON_FAILURE( - bind(params->server, ¶ms->bind_to.generic, + setsockopt(params->server, IPPROTO_TCP, TCP_NODELAY, &optval, sizeof(optval)), + "Couldn't set TCP_NODELAY" + ); + + SERVER_ERROR_ON_FAILURE( + bind(params->server, ¶ms->bind_to.generic, sizeof(params->bind_to)), "Couldn't bind server to IP address" );