All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Kazior <michal.kazior@tieto.com>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Neal Cardwell <ncardwell@google.com>,
	linux-wireless <linux-wireless@vger.kernel.org>,
	Network Development <netdev@vger.kernel.org>,
	eyalpe@dev.mellanox.co.il
Subject: Re: Throughput regression with `tcp: refine TSO autosizing`
Date: Thu, 5 Feb 2015 14:44:01 +0100	[thread overview]
Message-ID: <CA+BoTQmcShK0U_cXvEOLY_8y7LH8x3taTgjcyMzv0MLVn4UtCA@mail.gmail.com> (raw)
In-Reply-To: <1423142342.31870.49.camel@edumazet-glaptop2.roam.corp.google.com>

On 5 February 2015 at 14:19, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> On Thu, 2015-02-05 at 04:57 -0800, Eric Dumazet wrote:
>
>> The intention is to control the queues to the following :
>>
>> 1 ms of buffering, but limited to a configurable value.
>>
>> On a 40Gbps flow, 1ms represents 5 MB, which is insane.
>>
>> We do not want to queue 5 MB of traffic, this would destroy latencies
>> for all concurrent flows. (Or would require having fq_codel or fq as
>> packet schedulers, instead of default pfifo_fast)
>>
>> This is why having 1.5 ms delay between the transmit and TX completion
>> is a problem in your case.

I do get your point. But 1.5ms is really tough on Wi-Fi.

Just look at this:

; ping 192.168.1.2 -c 3
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=1.83 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=2.02 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=1.98 ms

; ping 192.168.1.2 -c 3 -Q 224
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.939 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.906 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.946 ms

This was run with no load so batching code in the driver itself should
have no measurable effect. The channel was near-ideal: low noise
floor, cabled rf, no other traffic.

The lower latency ping is when 802.11 QoS Voice Access Category is
used. I also get 400mbps instead of 250mbps in this case with 5 flows
(net/master).

Dealing with black box firmware blobs is a pain.


> Note that TCP stack could detect when this happens, *if* ACK where
> delivered before the TX completions, or when TX completion happens,
> we could detect that the clone of the freed packet was freed.
>
> In my test, when I did "ethtool -C eth0 tx-usecs 1024 tx-frames 64", and
> disabling GSO, TCP stack sends a bunch of packets (a bit less than 64),
> blocks on tcp_limit_output_bytes.
>
> Then we receive 2 stretch ACKS after ~50 usec.
>
> TCP stack tries to push again some packets but blocks on
> tcp_limit_output_bytes again.
>
> 1ms later, TX completion happens, tcp_wfree() is called, and TCP stack
> push following ~60 packets.
>
>
> TCP could  eventually dynamically adjust the tcp_limit_output_bytes,
> using a per flow dynamic value, but I would rather not add a kludge in
> TCP stack only to deal with a possible bug in ath10k driver.
>
> niu has a similar issue and simply had to call skb_orphan() :
>
> drivers/net/ethernet/sun/niu.c:6669:            skb_orphan(skb);

Ok. I tried calling skb_orphan() right after I submit each Tx frame
(similar to niu which does this in start_xmit):

--- a/drivers/net/wireless/ath/ath10k/htt_tx.c
+++ b/drivers/net/wireless/ath/ath10k/htt_tx.c
@@ -564,6 +564,8 @@ int ath10k_htt_tx(struct ath10k_htt *htt, struct
sk_buff *msdu)
        if (res)
                goto err_unmap_msdu;

+       skb_orphan(msdu);
+
        return 0;

 err_unmap_msdu:


Now, with {net/master + ath10k GRO + the above} I get 620mbps on a
single flow (even better then before). Wow.

Does this look ok/safe as a solution to you?


Michał

  parent reply	other threads:[~2015-02-05 13:44 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-29 11:48 Throughput regression with `tcp: refine TSO autosizing` Michal Kazior
2015-01-29 13:14 ` Eric Dumazet
2015-01-30 10:29   ` Arend van Spriel
2015-01-30 13:19     ` Eric Dumazet
2015-01-30 13:19       ` Eric Dumazet
2015-01-30 13:47       ` Arend van Spriel
2015-01-30 14:37         ` Eric Dumazet
     [not found]         ` <CAA93jw5fqhz0Hiw74L2GXgtZ9JsMg+NtYydKxKzGDrvQcZn4hA@mail.gmail.com>
     [not found]           ` <CAA93jw7b0E9jjQYXrEPzjLLC9j8xNC0TFYXpWVtgFameJaNBdw@mail.gmail.com>
     [not found]             ` <1422741065.199624134@apps.rackspace.com>
     [not found]               ` <CAPp0ZBb2nkA6Y0s=W0kw=zvyn0wi0NMBRsBCw_xcD61ScOmgQg@mail.gmail.com>
     [not found]                 ` <CAA_e5Z46Bu+zZZFzf_ejzA35Gw3g1_OG85yv6yd7MpbwZcE-nw@mail.gmail.com>
2015-02-01  8:45                   ` Fwd: " Dave Taht
2015-02-01 10:47                     ` Jonathan Morton
2015-02-01 14:43                       ` dpreed
2015-02-01 23:34                         ` Andrew McGregor
2015-02-02  4:04                           ` [Cerowrt-devel] " Avery Pennarun
2015-02-02  4:04                             ` Avery Pennarun
2015-02-02 15:25                             ` Jim Gettys
2015-02-02  4:21                         ` Avery Pennarun
2015-02-02  7:07                           ` David Lang
2015-02-02  7:07                             ` David Lang
2015-01-30 13:39   ` Michal Kazior
2015-01-30 13:39     ` Michal Kazior
2015-01-30 14:40     ` Eric Dumazet
2015-01-30 14:40       ` Eric Dumazet
2015-02-02 10:27       ` Michal Kazior
2015-02-02 10:27         ` Michal Kazior
2015-02-02 18:52         ` Eric Dumazet
2015-02-02 21:25           ` Ben Greear
2015-02-02 23:06             ` Eric Dumazet
2015-02-02 23:06               ` Eric Dumazet
2015-02-03  9:00               ` Michal Kazior
2015-02-03  9:00                 ` Michal Kazior
2015-02-03  1:18           ` Eric Dumazet
2015-02-03  1:18             ` Eric Dumazet
2015-02-03 11:50             ` Michal Kazior
2015-02-03 14:27               ` Eric Dumazet
2015-02-03 14:27                 ` Eric Dumazet
2015-02-03 15:03                 ` Eric Dumazet
2015-02-03 15:03                   ` Eric Dumazet
2015-02-04 11:35                 ` Michal Kazior
2015-02-04 11:57                   ` Eric Dumazet
2015-02-04 11:57                     ` Eric Dumazet
2015-02-04 12:22                     ` Michal Kazior
2015-02-04 12:38                       ` Eric Dumazet
2015-02-04 12:53                         ` Michal Kazior
2015-02-04 12:55                           ` Johannes Berg
2015-02-04 13:16                           ` Eric Dumazet
2015-02-04 13:29                             ` Eric Dumazet
2015-02-04 21:11                               ` Eric Dumazet
2015-02-04 21:11                                 ` Eric Dumazet
2015-02-05  6:46                                 ` Michal Kazior
2015-02-05  6:46                                   ` Michal Kazior
2015-02-05 13:03                                   ` Eric Dumazet
2015-02-05 13:03                                     ` Eric Dumazet
2015-02-05  8:38                                 ` Michal Kazior
2015-02-05 12:57                                   ` Eric Dumazet
2015-02-05 13:19                                     ` Eric Dumazet
2015-02-05 13:33                                       ` Eric Dumazet
2015-02-05 13:33                                         ` Eric Dumazet
2015-02-05 13:44                                       ` Michal Kazior [this message]
2015-02-05 14:41                                         ` Eric Dumazet
2015-02-05 14:41                                           ` Eric Dumazet
2015-02-05 17:10                                           ` Eric Dumazet
2015-02-06  9:42                                             ` Michal Kazior
2015-02-06 13:40                                               ` Eric Dumazet
2015-02-06 13:40                                                 ` Eric Dumazet
2015-02-06 13:53                                                 ` Eric Dumazet
2015-02-06 13:53                                                   ` Eric Dumazet
2015-02-06 14:09                                                   ` Michal Kazior
2015-02-09 13:47                                                     ` Michal Kazior
2015-02-09 15:11                                                       ` Eric Dumazet
2015-02-10 10:33                                                         ` Michal Kazior
2015-02-10 12:54                                                           ` Eric Dumazet
2015-02-10 13:05                                                             ` Eric Dumazet
2015-02-10 13:14                                                           ` Eric Dumazet
2015-02-11  8:33                                                             ` Michal Kazior
2015-02-11 13:17                                                               ` Eric Dumazet
2015-02-11 13:17                                                                 ` Eric Dumazet
2015-02-12  7:16                                                                 ` Michal Kazior
2015-02-12  7:16                                                                   ` Michal Kazior
2015-02-10 14:19                                                           ` Johannes Berg
2015-02-10 15:09                                                             ` Eric Dumazet
2015-02-11  8:57                                                             ` Michal Kazior
2015-02-11  8:57                                                               ` Michal Kazior
2015-02-12  7:48                                                               ` Michal Kazior
2015-02-12  8:33                                                                 ` Dave Taht
2015-02-24 10:24                                                                 ` Johannes Berg
2015-02-24 10:24                                                                   ` Johannes Berg
2015-02-24 10:30                                                                   ` Johannes Berg
2015-02-24 10:59                                                                     ` Johannes Berg
2015-03-31 11:08                                                         ` Johannes Berg
2015-02-06 14:10                                                   ` Eric Dumazet
2015-02-06 14:31                                                     ` David Laight
2015-02-06 14:31                                                       ` David Laight
2015-02-06 15:02                                                       ` Eric Dumazet
2015-02-06 15:02                                                         ` Eric Dumazet
2015-02-06 14:08                                                 ` Michal Kazior
2015-02-06 14:08                                                   ` Michal Kazior
2015-02-06 14:35                                                   ` Eric Dumazet
2015-02-06 14:35                                                     ` Eric Dumazet
2015-02-06 17:48                                                     ` Rick Jones
2015-02-06 17:48                                                       ` Rick Jones
2015-02-05 14:48                                         ` Eric Dumazet
2015-02-05 14:48                                           ` Eric Dumazet
2015-02-06  9:39                                           ` Nicolas Cavallari
2015-02-06  9:39                                             ` Nicolas Cavallari
2015-02-05 19:50                                         ` Dave Taht
2015-02-06  9:57                                           ` Michal Kazior
2015-02-06  9:57                                             ` Michal Kazior
2015-02-03  8:44           ` Michal Kazior

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CA+BoTQmcShK0U_cXvEOLY_8y7LH8x3taTgjcyMzv0MLVn4UtCA@mail.gmail.com \
    --to=michal.kazior@tieto.com \
    --cc=eric.dumazet@gmail.com \
    --cc=eyalpe@dev.mellanox.co.il \
    --cc=linux-wireless@vger.kernel.org \
    --cc=ncardwell@google.com \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.