From patchwork Sun Jan 6 07:35:24 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Major network performance regression in 3.7 Date: Sat, 05 Jan 2013 21:35:24 -0000 From: Eric Dumazet X-Patchwork-Id: 209730 Message-Id: <1357457724.1678.5941.camel@edumazet-glaptop> To: Willy Tarreau Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org On Sun, 2013-01-06 at 03:52 +0100, Willy Tarreau wrote: > OK so I observed no change with this patch, either on the loopback > data rate at >16kB MTU, or on the myri. I'm keeping it at hand for > experimentation anyway. > Yeah, there was no bug. I rewrote it for net-next as a cleanup/optim only. > Concerning the loopback MTU, I find it strange that the MTU changes > the splice() behaviour and not send/recv. I thought that there could > be a relation between the MTU and the pipe size, but it does not > appear to be the case either, as I tried various sizes between 16kB > and 256kB without achieving original performance. It probably is related to a too small receive window, given the MTU was multiplied by 4, I guess we need to make some adjustments You also could try : --- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 1ca2536..b68cdfb 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -1482,6 +1482,9 @@ int tcp_read_sock(struct sock *sk, read_descriptor_t *desc, break; } used = recv_actor(desc, skb, offset, len); + /* Clean up data we have read: This will do ACK frames. */ + if (used > 0) + tcp_cleanup_rbuf(sk, used); if (used < 0) { if (!copied) copied = used;