General list for discussing Bufferbloat
 help / color / mirror / Atom feed
From: Eric Dumazet <eric.dumazet@gmail.com>
To: Mikael Abrahamsson <swmike@swm.pp.se>
Cc: bloat <bloat@lists.bufferbloat.net>
Subject: Re: [Bloat] benefits of ack filtering
Date: Thu, 30 Nov 2017 07:51:56 -0800	[thread overview]
Message-ID: <1512057116.19682.14.camel@gmail.com> (raw)
In-Reply-To: <alpine.DEB.2.20.1711301343320.32099@uplift.swm.pp.se>

On Thu, 2017-11-30 at 14:04 +0100, Mikael Abrahamsson wrote:
> On Thu, 30 Nov 2017, Eric Dumazet wrote:
> 
> > I agree that TCP itself should generate ACK smarter, on receivers
> > that 
> > are lacking GRO. (TCP sends at most one ACK per GRO packets, that
> > is why 
> > we did not feel an urgent need for better ACK generation)
> 
> Could you elaborate a bit more on the practical implications of the
> above 
> text? What is the typical GRO size used when doing gigabit ethernet 
> transmissions?

Assuming NAPI handler receives a big packet train in one go [1], GRO
packets can be full size (45 MSS -> 65160 bytes of payload assuming
1448 bytes per frame)

[1] GRO engine has an opt-in high res timer helping to extend NAPI poll
if desired. https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-n
ext.git/commit/?id=3b47d30396bae4f0bd1ff0dbcd7c4f5077e7df4e


> 
> So if we're receiving 70kPPS of 1500 byte packets containing 1460
> MSS 
> sized packet (~100 megabyte/s), what would a typical ACK rate be in
> that 
> case?

1) Assuming receiver handles GRO.
2) Assuming few PSH flag set on incoming frames.
3) A default GRO engine on a 10Gbit NIC would probably not aggregate
packets, since 14 usec delay between each packet is too big to let NAPI
handler catch more than 1 packet per NIC RX interrupt.

But setting /sys/class/net/ethX/gro_flush_timeout to 14000 would allow
to build full size GRO packets (45 MSS)

-> TCP receiver would then send 1555 ACK per second instead of 70,000

> 
> In response to some other postings here, my question regarding "is
> 35kPPS 
> really needed" my proposal is not "let's send 50 PPS of ACKs". My
> proposal 
> is if we can't come up with a smarter algorithm than something from
> the 
> 90ties that says "let's send one ACK per 2*MSS" when we today have 
> magnitudes higher rates of forwarding. Also, on for instance DOCSIS 
> networks then you're going to get several ACKs back-to-back anyway 
> (because if they're not pruned by the DOCSIS network, they're anyway
> sent 
> in "bursts" within a single DOCSIS transmit opportunity), so
> imagining 
> that 35kPPS gives you higher resolution than 1kPPS of ACKs is just
> an 
> illusion.
> 
> So if GRO results in (I'm just speculating here) "we're only sending
> one 
> ACK per X kilobytes received if the packets arrived in the same 
> millisecond" and X is in the 16-64 kilobyte range, then that's fine
> by me.
> 
> Any network worth anything should be able to smooth out "bursts" of
> 16-64 
> kilobytes at line rate anyway, in case of egress and the line rate
> there 
> is lower than the sending end is transmitting packets at.
> 

  reply	other threads:[~2017-11-30 15:52 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-28 21:48 Dave Taht
2017-11-29  6:09 ` Mikael Abrahamsson
2017-11-29  9:34   ` Sebastian Moeller
2017-11-29 12:49     ` Mikael Abrahamsson
2017-11-29 13:13       ` Luca Muscariello
2017-11-29 14:31         ` Mikael Abrahamsson
2017-11-29 14:36           ` Jonathan Morton
2017-11-29 15:24             ` Andrés Arcia-Moret
2017-11-29 15:53           ` Luca Muscariello
     [not found]             ` <CAJq5cE3qsmy8EFYZmQsLL_frm8Tty9Gkm92MQPZ649+kpM1oMw@mail.gmail.com>
2017-11-29 16:13               ` Jonathan Morton
2017-11-30  7:03             ` Michael Welzl
2017-11-30  7:24               ` Dave Taht
2017-11-30  7:45               ` Dave Taht
2017-11-30  7:48               ` Jonathan Morton
2017-11-30  8:00                 ` Luca Muscariello
2017-11-30 10:24                 ` Eric Dumazet
2017-11-30 13:04                   ` Mikael Abrahamsson
2017-11-30 15:51                     ` Eric Dumazet [this message]
2017-12-01  0:28                     ` David Lang
2017-12-01  7:09                       ` Jan Ceuleers
2017-12-01 12:53                         ` Toke Høiland-Jørgensen
2017-12-01 13:13                           ` [Bloat] [Make-wifi-fast] " Кирилл Луконин
2017-12-01 13:22                             ` Luca Muscariello
2017-12-11 17:42                             ` Simon Barber
2017-12-01 13:17                           ` [Bloat] " Luca Muscariello
2017-12-01 13:40                             ` Toke Høiland-Jørgensen
2017-12-01 17:42                               ` Dave Taht
2017-12-01 20:39                                 ` Juliusz Chroboczek
2017-12-03  5:20                                   ` [Bloat] [Make-wifi-fast] " Bob McMahon
2017-12-03 10:35                                     ` Juliusz Chroboczek
2017-12-03 11:40                                       ` Jan Ceuleers
2017-12-03 13:57                                         ` Juliusz Chroboczek
2017-12-03 14:07                                           ` Mikael Abrahamsson
2017-12-03 19:53                                             ` Juliusz Chroboczek
2017-12-03 14:09                                           ` Ryan Mounce
2017-12-03 19:54                                             ` Juliusz Chroboczek
2017-12-03 20:14                                               ` Sebastian Moeller
2017-12-03 22:27                                                 ` Dave Taht
2017-12-03 15:25                                           ` Robert Bradley
2017-12-04  3:44                                         ` Dave Taht
2017-12-04 14:38                                           ` David Collier-Brown
2017-12-04 15:44                                             ` Juliusz Chroboczek
2017-12-04 17:17                                               ` David Collier-Brown
2017-12-03 19:04                                       ` Bob McMahon
2017-12-01 21:17                                 ` Bob McMahon
2017-12-01  8:45                       ` [Bloat] " Sebastian Moeller
2017-12-01 10:45                         ` Luca Muscariello
2017-12-01 18:43                           ` Dave Taht
2017-12-01 18:57                             ` Luca Muscariello
2017-12-01 19:36                               ` Dave Taht
2017-11-30 14:51                   ` Neal Cardwell
2017-11-30 15:55                     ` Eric Dumazet
2017-11-30 15:57                       ` Neal Cardwell
2017-11-29 16:50       ` Sebastian Moeller
2017-12-12 19:27         ` Benjamin Cronce
2017-12-12 20:04           ` Dave Taht
2017-12-12 21:03           ` David Lang
2017-12-12 21:29             ` Jonathan Morton
2017-12-12 22:03           ` Jonathan Morton
2017-12-12 22:21             ` David Lang
     [not found]               ` <CAJq5cE3nfSQP0GCLjp=X0T-iHHgAs=YUCcr34e3ARgkrGZe-wg@mail.gmail.com>
2017-12-12 22:41                 ` Jonathan Morton
2017-12-13  9:46                   ` Mikael Abrahamsson
2017-12-13 10:03                     ` Jonathan Morton
2017-12-13 12:11                       ` Sebastian Moeller
2017-12-13 12:18                         ` Jonathan Morton
2017-12-13 12:36                     ` Sebastian Moeller
2017-12-13 12:39             ` Luca Muscariello
2017-11-29 18:21   ` Juliusz Chroboczek
2017-11-29 18:41     ` Dave Taht
2017-11-29 23:29       ` Steinar H. Gunderson
2017-11-29 23:59       ` Stephen Hemminger
2017-11-30  0:21         ` Eric Dumazet
2017-12-11 20:15   ` Benjamin Cronce
2017-11-29 18:28 ` Juliusz Chroboczek
2017-11-29 18:48   ` Dave Taht
2017-12-11 18:30   ` Jonathan Morton

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

  List information: https://lists.bufferbloat.net/postorius/lists/bloat.lists.bufferbloat.net/

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

  git send-email \
    --in-reply-to=1512057116.19682.14.camel@gmail.com \
    --to=eric.dumazet@gmail.com \
    --cc=bloat@lists.bufferbloat.net \
    --cc=swmike@swm.pp.se \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox