All of lore.kernel.org
 help / color / mirror / Atom feed
From: moeller0 <moeller0@gmx.de>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: make-wifi-fast@lists.bufferbloat.net,
	"Dave Täht" <dave.taht@gmail.com>,
	ath10k <ath10k@lists.infradead.org>,
	"codel@lists.bufferbloat.net" <codel@lists.bufferbloat.net>,
	"Jesper Dangaard Brouer" <brouer@redhat.com>,
	"Jonathan Morton" <chromatix99@gmail.com>,
	"Roman Yeryomin" <leroi.lists@gmail.com>
Subject: Re: [Codel] fq_codel_drop vs a udp flood
Date: Fri, 6 May 2016 17:25:47 +0200	[thread overview]
Message-ID: <2BFC725A-F007-4D63-89BD-E1845F7E89BE@gmx.de> (raw)
In-Reply-To: <1462541156.13075.34.camel@edumazet-glaptop3.roam.corp.google.com>

Hi Eric,

> On May 6, 2016, at 15:25 , Eric Dumazet <eric.dumazet@gmail.com> wrote:
> 
> On Fri, 2016-05-06 at 13:46 +0200, moeller0 wrote:
>> Hi Jesper,
>> 
>>> On May 6, 2016, at 13:33 , Jesper Dangaard Brouer
>> <brouer@redhat.com> wrote:
>>> 
>>> 
>>> On Fri, 6 May 2016 10:41:53 +0200 moeller0 <moeller0@gmx.de> wrote:
>>> 
>>>> 	Speaking out of total ignorance, I ask why not account
>>>> GRO/GSO packets by the number of their fragments against the packet
>>>> limit? Counting a 64kB packets as equivalent to a 64B packet
>> probably
>>>> is the right thing if one tries to account for the work the OS
>> needs
>>>> to perform to figure out what to do with the packet, but for
>> limiting
>>>> the memory consumption it introduces an impressive/manly level of
>>>> uncertainty (2 orders of magnitude). 
>>> 
>>> Looking at the drop code in fq_codel:
>>> 
>> https://github.com/torvalds/linux/blob/v4.6-rc6/net/sched/sch_fq_codel.c#L136
>>> 
>>> It looks like we are finding the "fat" flow to drop from based on
>>> number of bytes queued.  And AFAIK skb->len also account for the
>> total
>>> length of all GSO packets (Eric?)
>>> 
>>> Even better, we are using qdisc_pkt_len(skb), which also account for
>>> the GSO headers in qdisc_pkt_len_init(). 
>>> https://github.com/torvalds/linux/blob/v4.6-rc6/net/core/dev.c#L2993
>>> 
>>> If anything, the GSO packets get hit harder by the fq_codel_drop
>>> function, as we drop the entire GSO skb.
>> 
>> 	This sounds all very reassuring!
>> 
>>> 
>>> 
>>> Is the issue you are raising that the 1024 packet limit, would allow
>>> 1024 x 64K bytes to be queued before the drop kicks in? (Resulting
>> in
>>> using too much memory on your small device).
>> 
>> 	Yes, I guess I need to explain better. My wndr3700v7 only sports a
>> measly 64MB ram total, so in the past with the default 10240 limit I
>> could force OOM-initiated reboots. So my angle on this issue is
>> always, I want my router to survive even if the the network is
>> over-saturated (I do not expect the router to work well under those
>> circumstances, but I somehow think it should at least not reboot
>> during DOS conditions…). Cake allows to specify a hard memory limit
>> that looks a skb-truesize to allow stricter memory control for people
>> like me, making the whole GRO/GSO issue go away, at least as far as
>> OOM is concerned. And as I begin to understand once a link reaches a
>> certain bandwidth GRO/GSO will become helpful again, especially on
>> small routers as they help reduce the work the kernel needs to to per
>> byte…
> 
> Angles of attack :
> 
> 1) I will provide a per device /sys/class/net/eth0/gro_max_frags so that
> we can more easily control amount of segs per GRO packets. It makes
> sense to have GRO, but not so much allowing it to cook big packets that
> might hurt FQ.

	This sounds great, so we can teach, say sqm to set this to a reasonable value given the (shaped) bandwidth of a given interface. Would something like this also make sense/is possible on the send side for GSO/TSO?

> 
> 2) Tracking skb->truesize looks mandatory for small devices.
> I will add this to fq_codel.

	Thanks.

> 
> 3) Making sure skb->truesize is accurate is a long term effort we want
> to constantly monitor, since some drivers are doing under estimations.

	Is there an easy way to test/measure this? Say if 2) is implemented how can one figure out how much memory is actually allocated for a given queue?

Best Regards & Merci beaucoup
	Sebastian

> 
> Thanks.
> 
> 
> 
> 
> 


_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

  reply	other threads:[~2016-05-06 15:26 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-01  3:41 fq_codel_drop vs a udp flood Dave Taht
2016-05-01  4:46 ` [Make-wifi-fast] " Jonathan Morton
2016-05-01  5:08 ` Ben Greear
2016-05-01  5:23   ` Dave Taht
2016-05-01 14:47     ` [Make-wifi-fast] " dpreed
2016-05-02 14:03       ` Roman Yeryomin
2016-05-02 18:40         ` Dave Taht
2016-05-05 13:55           ` Roman Yeryomin
2016-05-05 14:55             ` Roman Yeryomin
2016-05-02 19:47         ` David Lang
2016-05-01 17:59 ` [Codel] " Eric Dumazet
2016-05-01 18:20   ` Jonathan Morton
2016-05-01 18:46     ` Eric Dumazet
2016-05-01 19:55       ` Eric Dumazet
2016-05-02  7:47         ` Jesper Dangaard Brouer
2016-05-01 20:35       ` Jonathan Morton
2016-05-01 20:55         ` Eric Dumazet
2016-05-02 14:18           ` Roman Yeryomin
2016-05-02 15:07             ` Eric Dumazet
2016-05-02 15:43               ` Roman Yeryomin
2016-05-02 16:14                 ` Eric Dumazet
2016-05-02 17:08                   ` Dave Taht
2016-05-02 17:44                     ` Eric Dumazet
2016-05-05 14:32                     ` Roman Yeryomin
2016-05-05 14:53                   ` Roman Yeryomin
2016-05-05 15:32                     ` Dave Taht
2016-05-05 16:07                       ` Roman Yeryomin
2016-05-05 16:59                         ` Jonathan Morton
2016-05-05 17:39                           ` Roman Yeryomin
2016-05-05 18:16                             ` Dave Taht
2016-05-05 18:33                           ` Dave Taht
2016-05-05 16:12                     ` Eric Dumazet
2016-05-05 16:25                       ` Roman Yeryomin
2016-05-05 16:42                         ` Roman Yeryomin
2016-05-06 10:55                           ` Roman Yeryomin
2016-05-05 19:23                         ` Eric Dumazet
2016-05-05 19:41                           ` Dave Taht
2016-05-06  8:41                             ` moeller0
2016-05-06 11:33                               ` Jesper Dangaard Brouer
2016-05-06 11:46                                 ` moeller0
2016-05-06 13:25                                   ` Eric Dumazet
2016-05-06 15:25                                     ` moeller0 [this message]
2016-05-06 15:58                                       ` Eric Dumazet
2016-05-06 16:30                                         ` moeller0
2016-05-06 15:55                                     ` [PATCH net-next] fq_codel: add memory limitation per queue Eric Dumazet
2016-05-09  3:49                                       ` David Miller
2016-05-09  4:14                                       ` Cong Wang
2016-05-09  4:31                                         ` Eric Dumazet
2016-05-09  5:07                                           ` Cong Wang
2016-05-09 14:26                                             ` Eric Dumazet
2016-05-10  4:34                                               ` Cong Wang
2016-05-10  4:45                                                 ` Eric Dumazet
2016-05-10  4:57                                                   ` Cong Wang
2016-05-10  5:10                                                     ` Eric Dumazet
2016-05-16  1:16                                       ` [PATCH net-next] fq_codel: fix memory limitation drift Eric Dumazet
2016-05-17  1:57                                         ` David Miller
2016-05-06  9:42                           ` OpenWRT wrong adjustment of fq_codel defaults (Was: fq_codel_drop vs a udp flood) Jesper Dangaard Brouer
2016-05-06  9:42                             ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Jesper Dangaard Brouer
2016-05-06 12:47                             ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Jesper Dangaard Brouer
2016-05-06 12:47                               ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Jesper Dangaard Brouer
2016-05-06 18:43                               ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Roman Yeryomin
2016-05-06 18:43                                 ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Roman Yeryomin
2016-05-06 18:56                                 ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Roman Yeryomin
2016-05-06 18:56                                   ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Roman Yeryomin
2016-05-06 19:43                                   ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Dave Taht
2016-05-06 19:43                                     ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Dave Taht
2016-05-15 22:34                                     ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Roman Yeryomin
2016-05-15 22:34                                       ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Roman Yeryomin
2016-05-15 23:07                                       ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Eric Dumazet
2016-05-15 23:07                                         ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Eric Dumazet
2016-05-15 23:27                                         ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Roman Yeryomin
2016-05-15 23:27                                           ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Roman Yeryomin
2016-05-16  8:12                                       ` [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: " David Lang
2016-05-16  8:12                                         ` [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " David Lang
2016-05-16  8:26                                         ` Roman Yeryomin
2016-05-16  8:26                                           ` Roman Yeryomin
2016-05-16  8:46                                           ` [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: " David Lang
2016-05-16  8:46                                             ` [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " David Lang
2016-05-16 10:34                                             ` [OpenWrt-Devel] [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: " Sebastian Moeller
2016-05-16 10:34                                               ` [OpenWrt-Devel] [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Sebastian Moeller
2016-05-16  8:14                                       ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Roman Yeryomin
2016-05-16  8:14                                         ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Roman Yeryomin
2016-05-16 14:23                                         ` [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: " Eric Dumazet
2016-05-16 14:23                                           ` [Make-wifi-fast] OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Eric Dumazet
2016-05-16 16:04                                         ` Dave Taht
2016-05-16 16:04                                           ` Dave Taht
2016-05-16 19:46                                           ` OpenWRT wrong adjustment of fq_codel defaults (Was: " Roman Yeryomin
2016-05-16 19:46                                             ` OpenWRT wrong adjustment of fq_codel defaults (Was: [Codel] " Roman Yeryomin
2016-05-07  9:57                             ` Kevin Darbyshire-Bryant
2016-05-15 22:47                               ` Roman Yeryomin
2016-05-15 22:47                                 ` Roman Yeryomin
2016-05-03  2:26     ` [Codel] fq_codel_drop vs a udp flood Dave Taht
2016-05-03  5:21       ` Dave Taht
2016-05-03 12:39         ` Agarwal, Anil
2016-05-03 12:50           ` Agarwal, Anil
2016-05-03 13:35             ` Eric Dumazet
2016-05-03 15:37               ` Agarwal, Anil
2016-05-03 17:37               ` Dave Taht
2016-05-03 17:54                 ` Eric Dumazet
2016-05-03 18:11                   ` Dave Taht
2016-05-03 13:20       ` Kevin Darbyshire-Bryant
2016-05-01 18:26   ` Dave Taht
2016-05-01 22:30     ` Eric Dumazet
2016-05-02 14:09   ` Roman Yeryomin
2016-05-02 15:04     ` Eric Dumazet
2016-05-02 15:42       ` Roman Yeryomin
2016-05-02 13:47 ` [Make-wifi-fast] " Roman Yeryomin
2016-05-02 15:01   ` Eric Dumazet

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=2BFC725A-F007-4D63-89BD-E1845F7E89BE@gmx.de \
    --to=moeller0@gmx.de \
    --cc=ath10k@lists.infradead.org \
    --cc=brouer@redhat.com \
    --cc=chromatix99@gmail.com \
    --cc=codel@lists.bufferbloat.net \
    --cc=dave.taht@gmail.com \
    --cc=eric.dumazet@gmail.com \
    --cc=leroi.lists@gmail.com \
    --cc=make-wifi-fast@lists.bufferbloat.net \
    /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.