[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] TCP_NODELAY for -redir
From: |
Daniel Jacobowitz |
Subject: |
[Qemu-devel] TCP_NODELAY for -redir |
Date: |
Mon, 13 Nov 2006 14:30:27 -0500 |
User-agent: |
Mutt/1.5.13 (2006-08-11) |
I was trying to run GDB remote debug tests through a -redir socket
today. It crawled unbelievably. Paul guessed that slirp wasn't using
TCP_NODELAY, and Nagle was to blame.
He was even righter than usual. Adding TCP_NODELAY speeds up this
particular workload by (very approximately) 54x. See trivial attached
patch.
Is this going to bite other things, i.e. does it need to be
configurable?
--
Daniel Jacobowitz
CodeSourcery
---
slirp/tcp.h | 2 +-
slirp/tcp_subr.c | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
Index: qemu/slirp/tcp.h
===================================================================
--- qemu.orig/slirp/tcp.h 2006-11-13 14:25:24.000000000 -0500
+++ qemu/slirp/tcp.h 2006-11-13 14:25:29.000000000 -0500
@@ -112,7 +112,7 @@ struct tcphdr {
/*
* User-settable options (used with setsockopt).
*/
-/* #define TCP_NODELAY 0x01 */ /* don't delay send to coalesce packets
*/
+#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets
*/
/* #define TCP_MAXSEG 0x02 */ /* set maximum segment size */
/*
Index: qemu/slirp/tcp_subr.c
===================================================================
--- qemu.orig/slirp/tcp_subr.c 2006-11-13 14:22:34.000000000 -0500
+++ qemu/slirp/tcp_subr.c 2006-11-13 14:23:31.000000000 -0500
@@ -499,6 +499,8 @@ tcp_connect(inso)
setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(char *)&opt,sizeof(int));
opt = 1;
setsockopt(s,SOL_SOCKET,SO_OOBINLINE,(char *)&opt,sizeof(int));
+ opt = 1;
+ setsockopt(s,IPPROTO_TCP,TCP_NODELAY,(char *)&opt,sizeof(int));
so->so_fport = addr.sin_port;
so->so_faddr = addr.sin_addr;
- [Qemu-devel] TCP_NODELAY for -redir,
Daniel Jacobowitz <=