From e863bffe3d3edc669e9c0bfad2e771b5ab0e8271 Mon Sep 17 00:00:00 2001 From: nick Date: Thu, 31 May 2012 11:33:31 +0100 Subject: [PATCH 1/2] 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" ); From 71e755906bf939046aa8dbbed9409bc615c1a073 Mon Sep 17 00:00:00 2001 From: nick Date: Thu, 31 May 2012 12:12:32 +0100 Subject: [PATCH 2/2] Make the Rakefile take note of DEBUG= --- Rakefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index da25c4b..0178388 100644 --- a/Rakefile +++ b/Rakefile @@ -1,7 +1,8 @@ require 'rake_utils/debian' include RakeUtils::DSL -DEBUG = true +DEBUG = ENV.has_key?('DEBUG') && + %w|yes y ok 1 true t|.include?(ENV['DEBUG']) ALL_SOURCES =FileList['src/*'] SOURCES = ALL_SOURCES.select { |c| c =~ /\.c$/ } @@ -89,3 +90,4 @@ namespace :pkg do t.generate_changelog! end end +