For jumbo traffic, if cong. window is big, than TSO defer will not happen that often. Hence, most of the traffic will be non-TSO and that is why we saw performance degradation on our setup. This was the case for 10G network where we tend to set tcp window very big, i.e. 1M+ This patch forces to defer even more. I'm not sure if this is clean enough, but here goes results:
Without patch: OS on Tx system TSO Throughput CPU idle ------------------- ------- ----------- ---------- 2.6.13-rc6 ON 5.93Gb/s 58% OFF 6.16Gb/s 52% With patch: OS on Tx system TSO Throughput CPU idle ------------------- ------- ----------- ---------- 2.6.13-rc6 ON 6.59Gb/s 57% (patched) OFF 6.16Gb/s 52% Signed-off-by: Dmitry Yusupov <[EMAIL PROTECTED]> diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -925,10 +925,6 @@ static int tcp_tso_should_defer(struct s limit = min(send_win, cong_win); - /* If sk_send_head can be sent fully now, just do it. */ - if (skb->len <= limit) - return 0; - if (sysctl_tcp_tso_win_divisor) { u32 chunk = min(tp->snd_wnd, tp->snd_cwnd * tp->mss_cache); On Thu, 2005-08-11 at 16:15 -0700, David S. Miller wrote: > From: "Leonid Grossman" <[EMAIL PROTECTED]> > Date: Thu, 11 Aug 2005 19:05:22 -0400 > > > Basically, it looks like with SuperTSO most of the traffic in our tests > > comes down to the driver with mss 0 (TSO is mostly "off"). > > With the original TSO, is was always "on" (see below). > > Could you describe how SuperTSO algorithm for switching TSO "on" and > > "off" works, it seems to be fairly complex for us to mess with? For a > > fast network with extremely low error rate, I'd expect TSO to be on. > > We build packets as large as the user gives us in sendmsg(), > then when ACK's come in openning up the window we either > send as much as we can at that moment, or we defer to wait > for more space so we can build larger TSO frames. > > The logic for that decision is in: > > net/ipv4/tcp_output.c:tcp_tso_should_defer() > > Keep also in mind that if there is packet loss, TSO is disabled > completely. > - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html