From: Eric Dumazet <eric.dumazet@gmail.com>
To: Markus Trippelsdorf <markus@trippelsdorf.de>
Cc: Vijay Subramanian <subramanian.vijay@gmail.com>,
netdev@vger.kernel.org, davem@davemloft.net
Subject: Re: [PATCH net] net: fq_codel: Fix off-by-one error
Date: Sat, 30 Mar 2013 07:42:47 -0700 [thread overview]
Message-ID: <1364654567.5113.85.camel@edumazet-glaptop> (raw)
In-Reply-To: <20130330065345.GA23938@x4>
On Sat, 2013-03-30 at 07:53 +0100, Markus Trippelsdorf wrote:
> On 2013.03.29 at 08:01 -0700, Eric Dumazet wrote:
> >
> > Just curious, did you play changing the default limit (10240 packets) ?
>
> I did some tests on my home router (running OpenWrt trunk) that is rate-
> limited with hfsc to the speed of the cable modem.
>
> My tests seem to indicate that lowering the default limit to 1024
> packets results in much better latency behavior when using bittorrent.
>
> With the default limit (10240 packets) I would get huge ping latencies
> from 600-1200ms when downloading e.g.:
> http://download.opensuse.org/distribution/12.3/iso/openSUSE-12.3-DVD-x86_64.iso.torrent
> with hundreds of peers.
>
> Setting the limit to 1024 did get the latencies back in check (20-30ms
> with occasional spikes of ~100ms).
Hi Markus
I am very bored having to explain {fq_}codel principles each time
someone does this kind of experiments.
Codel principle is _allowing_ bursts, as long as the queue is
controlled. Read Codel paper for details. TCP can be slow to lower the
queues, it takes several RTT. So observing large queues is quite normal
in your case.
Bittorent uses its own rate limiting technique, defeating
current cwnd control done in the TCP stack, because of a very known
problem
( http://www.ietf.org/id/draft-ietf-tcpm-newcwv-00.txt )
So if your goal is reducing latencies for a _given_ class of flows, just
use prio + 3 fq_codel, and classify your packets to make sure your
lovely ping packets are not dropped or behind long packets.
fq_codel by itself is not universal.
My question about fq_codel limit was related to something completely
different.
The default is 10240 packets. The logic behind is to control the queue
at dequeue, not enqueue. But we needed an safety limit to avoid OOM in
case rate of enqueue() is insane.
It could theoretically hurt a low end machine, in case a burst fills the
queue with big GSO packets. But then these low end machines should not
use GRO/TSO anyway (as this is against anti bufferbloat techniques)
Probably a better choice would have been to limit sum(skb->truesize), or
sum(skb->len) (aka current sch->qstats.backlog)
next prev parent reply other threads:[~2013-03-30 14:42 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-28 23:52 [PATCH net] net: fq_codel: Fix off-by-one error Vijay Subramanian
2013-03-29 15:01 ` Eric Dumazet
2013-03-29 19:33 ` David Miller
2013-03-29 21:49 ` Vijay Subramanian
2013-03-30 6:53 ` Markus Trippelsdorf
2013-03-30 14:42 ` Eric Dumazet [this message]
2013-03-30 15:08 ` Markus Trippelsdorf
2013-03-30 15:28 ` 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=1364654567.5113.85.camel@edumazet-glaptop \
--to=eric.dumazet@gmail.com \
--cc=davem@davemloft.net \
--cc=markus@trippelsdorf.de \
--cc=netdev@vger.kernel.org \
--cc=subramanian.vijay@gmail.com \
/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