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

Reply via email to