* [Bloat] AQM and PPP on Linux @ 2015-07-28 13:09 Juliusz Chroboczek 2015-07-28 13:33 ` Toke Høiland-Jørgensen 2015-07-28 14:44 ` Dave Taht 0 siblings, 2 replies; 25+ messages in thread From: Juliusz Chroboczek @ 2015-07-28 13:09 UTC (permalink / raw) To: bloat I'm currently away from home, and using a 3G modem for Internet access. I've found out that both NetworkManager and wvdial/pppd setup the interface to use pfifo_fast (with a qlen of a mere 3 packets!). Setting fq_codel manually appears to work fine, but needs to be redone every time the modem has a hiccup. Is that the expected behaviour? Shouldn't we be pushing patches somewhere to change the default? -- Juliusz ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 13:09 [Bloat] AQM and PPP on Linux Juliusz Chroboczek @ 2015-07-28 13:33 ` Toke Høiland-Jørgensen 2015-07-28 13:50 ` Juliusz Chroboczek 2015-07-28 14:44 ` Dave Taht 1 sibling, 1 reply; 25+ messages in thread From: Toke Høiland-Jørgensen @ 2015-07-28 13:33 UTC (permalink / raw) To: Juliusz Chroboczek; +Cc: bloat Juliusz Chroboczek <jch@pps.univ-paris-diderot.fr> writes: > I'm currently away from home, and using a 3G modem for Internet > access. I've found out that both NetworkManager and wvdial/pppd setup > the interface to use pfifo_fast (with a qlen of a mere 3 packets!). > Setting fq_codel manually appears to work fine, but needs to be redone > every time the modem has a hiccup. I don't think NetworkManager does anything to set qdiscs. The kernel simple sets pfifo_fast if not told otherwise (but see below). > Is that the expected behaviour? Shouldn't we be pushing patches > somewhere to change the default? What distro are you on? There's a sysctl to set the default qdisc: net.core.default_qdisc. Set this to fq_codel and you should be good to go. This is becoming the default in more and more distros (currently at least Arch and Fedora; and OpenWrt has been patching out pfifo_fast entirely for a while). There's a bug for Ubuntu here: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1436945 -- feel free to bug them :) -Toke ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 13:33 ` Toke Høiland-Jørgensen @ 2015-07-28 13:50 ` Juliusz Chroboczek 2015-07-28 14:05 ` Toke Høiland-Jørgensen 2015-07-28 14:18 ` Eric Dumazet 0 siblings, 2 replies; 25+ messages in thread From: Juliusz Chroboczek @ 2015-07-28 13:50 UTC (permalink / raw) To: Toke Høiland-Jørgensen; +Cc: bloat > What distro are you on? Debian. (One machine stable, one testing.) > There's a sysctl to set the default qdisc: net.core.default_qdisc. $ sysctl -a | grep default_qdisc net.core.default_qdisc = pfifo_fast > Set this to fq_codel and you should be good to go. Is that safe? I'm thinking lo and virtual interfaces. -- Juliusz ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 13:50 ` Juliusz Chroboczek @ 2015-07-28 14:05 ` Toke Høiland-Jørgensen 2015-07-28 14:11 ` Simon Barber 2015-07-28 19:20 ` Juliusz Chroboczek 2015-07-28 14:18 ` Eric Dumazet 1 sibling, 2 replies; 25+ messages in thread From: Toke Høiland-Jørgensen @ 2015-07-28 14:05 UTC (permalink / raw) To: Juliusz Chroboczek; +Cc: bloat Juliusz Chroboczek <jch@pps.univ-paris-diderot.fr> writes: >> What distro are you on? > > Debian. (One machine stable, one testing.) Right. Don't know if there's already an effort to convince the Debian devs to switch the default... >> Set this to fq_codel and you should be good to go. > > Is that safe? I'm thinking lo and virtual interfaces. Why wouldn't it be? The lo interface doesn't have a queue at all AFAIK. And if you have congestion at your virtual interfaces wouldn't you want it de-bloated? :) -Toke ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 14:05 ` Toke Høiland-Jørgensen @ 2015-07-28 14:11 ` Simon Barber 2015-07-28 14:21 ` Eric Dumazet 2015-07-29 7:19 ` David Lang 2015-07-28 19:20 ` Juliusz Chroboczek 1 sibling, 2 replies; 25+ messages in thread From: Simon Barber @ 2015-07-28 14:11 UTC (permalink / raw) To: Toke Høiland-Jørgensen, Juliusz Chroboczek; +Cc: bloat The main danger is the negative effects on performance of using Codel. You may experience low throughput on high RTT links. Simon Sent with AquaMail for Android http://www.aqua-mail.com On July 28, 2015 7:06:22 AM Toke Høiland-Jørgensen <toke@toke.dk> wrote: > Juliusz Chroboczek <jch@pps.univ-paris-diderot.fr> writes: > > >> What distro are you on? > > > > Debian. (One machine stable, one testing.) > > Right. Don't know if there's already an effort to convince the Debian > devs to switch the default... > > >> Set this to fq_codel and you should be good to go. > > > > Is that safe? I'm thinking lo and virtual interfaces. > > Why wouldn't it be? The lo interface doesn't have a queue at all AFAIK. > And if you have congestion at your virtual interfaces wouldn't you want > it de-bloated? :) > > -Toke > _______________________________________________ > Bloat mailing list > Bloat@lists.bufferbloat.net > https://lists.bufferbloat.net/listinfo/bloat ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 14:11 ` Simon Barber @ 2015-07-28 14:21 ` Eric Dumazet 2015-07-28 14:31 ` Simon Barber 2015-07-29 7:19 ` David Lang 1 sibling, 1 reply; 25+ messages in thread From: Eric Dumazet @ 2015-07-28 14:21 UTC (permalink / raw) To: Simon Barber; +Cc: bloat, Juliusz Chroboczek On Tue, 2015-07-28 at 07:11 -0700, Simon Barber wrote: > The main danger is the negative effects on performance of using Codel. You > may experience low throughput on high RTT links. Really ? I've never seen this, unless you mess with codel qdisc attributes maybe. (Some guys seem to not really understand whole concept of a queue, and set very low values for 'limit' attribute for example) ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 14:21 ` Eric Dumazet @ 2015-07-28 14:31 ` Simon Barber 2015-07-28 14:43 ` Jonathan Morton ` (2 more replies) 0 siblings, 3 replies; 25+ messages in thread From: Simon Barber @ 2015-07-28 14:31 UTC (permalink / raw) To: Eric Dumazet; +Cc: bloat, Juliusz Chroboczek The issue is that Codel tries to keep the delay low, and will start dropping when sojourn time grows above 5ms for 100ms. For longer RTT links more delay is necessary to avoid underutilizing the link. This is due to the multiplicative decrease - it's worst with Reno, where the halving of cWind means that you need to have a full BDP of data in the buffer to avoid the link going idle when cWind is halved. With longer RTTs this means more delay than Codel allows is required to avoid a throughput hit. The worst case happens when a single flow is controlled, but that can be a common situation. My proposal is to sense and have the target value in Codel automatically adjust when this worst case scenario happens - which would mitigate most of the downside. Simon Sent with AquaMail for Android http://www.aqua-mail.com On July 28, 2015 7:21:56 AM Eric Dumazet <eric.dumazet@gmail.com> wrote: > On Tue, 2015-07-28 at 07:11 -0700, Simon Barber wrote: > > The main danger is the negative effects on performance of using Codel. You > > may experience low throughput on high RTT links. > > Really ? I've never seen this, unless you mess with codel qdisc > attributes maybe. > > (Some guys seem to not really understand whole concept of a queue, and > set very low values for 'limit' attribute for example) > > > > ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 14:31 ` Simon Barber @ 2015-07-28 14:43 ` Jonathan Morton 2015-07-28 14:49 ` Eric Dumazet 2015-07-28 16:22 ` Sebastian Moeller 2 siblings, 0 replies; 25+ messages in thread From: Jonathan Morton @ 2015-07-28 14:43 UTC (permalink / raw) To: Simon Barber; +Cc: Juliusz Chroboczek, bloat > On 28 Jul, 2015, at 17:31, Simon Barber <simon@superduper.net> wrote: > > The issue is that Codel tries to keep the delay low, and will start dropping when sojourn time grows above 5ms for 100ms. For longer RTT links more delay is necessary to avoid underutilizing the link. I’m pretty sure we’ve had this discussion before, several times. Codel works pretty well, with an interval of 100ms, when the actual RTT is between about 10ms and 1000ms. That accounts for 99.9% of the practical paths you’ll see on the Internet. If you really are concerned about long-RTT paths, then you can increase the interval parameter to suit. This will hurt Codel’s performance slightly on very short-RTT paths. - Jonathan Morton ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 14:31 ` Simon Barber 2015-07-28 14:43 ` Jonathan Morton @ 2015-07-28 14:49 ` Eric Dumazet 2015-07-28 14:55 ` Eric Dumazet 2015-07-28 16:02 ` Alan Jenkins 2015-07-28 16:22 ` Sebastian Moeller 2 siblings, 2 replies; 25+ messages in thread From: Eric Dumazet @ 2015-07-28 14:49 UTC (permalink / raw) To: Simon Barber; +Cc: bloat, Juliusz Chroboczek On Tue, 2015-07-28 at 07:31 -0700, Simon Barber wrote: > The issue is that Codel tries to keep the delay low, and will start > dropping when sojourn time grows above 5ms for 100ms. For longer RTT links > more delay is necessary to avoid underutilizing the link. This is due to > the multiplicative decrease - it's worst with Reno, where the halving of > cWind means that you need to have a full BDP of data in the buffer to avoid > the link going idle when cWind is halved. With longer RTTs this means more > delay than Codel allows is required to avoid a throughput hit. The worst > case happens when a single flow is controlled, but that can be a common > situation. My proposal is to sense and have the target value in Codel > automatically adjust when this worst case scenario happens - which would > mitigate most of the downside. As I said, I've never seen what you describe. 100ms value is not a go/nogo threshold. It is a hint, based on real world values. We are speaking of 100 ms sojourn time in the CoDel queue, not sojourn time in the Internet ! You can still have flows with 500 ms or even 10 sec rtt and codel just works fine. Are you sure you understood how this was working ? ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 14:49 ` Eric Dumazet @ 2015-07-28 14:55 ` Eric Dumazet 2015-07-28 16:02 ` Alan Jenkins 1 sibling, 0 replies; 25+ messages in thread From: Eric Dumazet @ 2015-07-28 14:55 UTC (permalink / raw) To: Simon Barber; +Cc: bloat, Juliusz Chroboczek On Tue, 2015-07-28 at 16:49 +0200, Eric Dumazet wrote: > On Tue, 2015-07-28 at 07:31 -0700, Simon Barber wrote: > > The issue is that Codel tries to keep the delay low, and will start > > dropping when sojourn time grows above 5ms for 100ms. For longer RTT links > > more delay is necessary to avoid underutilizing the link. This is due to > > the multiplicative decrease - it's worst with Reno, where the halving of > > cWind means that you need to have a full BDP of data in the buffer to avoid > > the link going idle when cWind is halved. With longer RTTs this means more > > delay than Codel allows is required to avoid a throughput hit. The worst > > case happens when a single flow is controlled, but that can be a common > > situation. My proposal is to sense and have the target value in Codel > > automatically adjust when this worst case scenario happens - which would > > mitigate most of the downside. > > As I said, I've never seen what you describe. > > 100ms value is not a go/nogo threshold. It is a hint, based on real > world values. We are speaking of 100 ms sojourn time in the CoDel queue, typo : 5 ms ( codel target ) ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 14:49 ` Eric Dumazet 2015-07-28 14:55 ` Eric Dumazet @ 2015-07-28 16:02 ` Alan Jenkins 1 sibling, 0 replies; 25+ messages in thread From: Alan Jenkins @ 2015-07-28 16:02 UTC (permalink / raw) To: Eric Dumazet, Simon Barber; +Cc: Juliusz Chroboczek, bloat On 28/07/15 15:49, Eric Dumazet wrote: > On Tue, 2015-07-28 at 07:31 -0700, Simon Barber wrote: >> The issue is that Codel tries to keep the delay low, and will start >> dropping when sojourn time grows above 5ms for 100ms. For longer RTT links >> more delay is necessary to avoid underutilizing the link. This is due to >> the multiplicative decrease - it's worst with Reno, where the halving of >> cWind means that you need to have a full BDP of data in the buffer to avoid >> the link going idle when cWind is halved. With longer RTTs this means more >> delay than Codel allows is required to avoid a throughput hit. The worst >> case happens when a single flow is controlled, but that can be a common >> situation. My proposal is to sense and have the target value in Codel >> automatically adjust when this worst case scenario happens - which would >> mitigate most of the downside. > As I said, I've never seen what you describe. > > 100ms value is not a go/nogo threshold. It is a hint, based on real > world values. We are speaking of 100 ms sojourn time in the CoDel queue, > not sojourn time in the Internet ! > > You can still have flows with 500 ms or even 10 sec rtt and codel just > works fine. > > Are you sure you understood how this was working ? > The codel paper indicates utilization dropoff as RTT increases above the 'interval' (and that interval is set based on expected rtt). They presented an average of several loads, so this wasn't even the single-stream worst case. 200ms rtt was fine, 500ms was a slightly worse & varied a lot more. If you wanted something that was "fine" at 10s (ow), you wouldn't want codel's defaults. Tuning higher values in fq_codel would probably be enough though. http://queue.acm.org/detail.cfm?id=2209336 ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 14:31 ` Simon Barber 2015-07-28 14:43 ` Jonathan Morton 2015-07-28 14:49 ` Eric Dumazet @ 2015-07-28 16:22 ` Sebastian Moeller 2015-07-28 17:11 ` Michael Welzl 2 siblings, 1 reply; 25+ messages in thread From: Sebastian Moeller @ 2015-07-28 16:22 UTC (permalink / raw) To: Simon Barber; +Cc: Juliusz Chroboczek, bloat Hi Simon, On Jul 28, 2015, at 16:31 , Simon Barber <simon@superduper.net> wrote: > The issue is that Codel tries to keep the delay low, and will start dropping when sojourn time grows above 5ms for 100ms. For longer RTT links more delay is necessary to avoid underutilizing the link. This is due to the multiplicative decrease - it's worst with Reno, where the halving of cWind means that you need to have a full BDP of data in the buffer to avoid the link going idle when cWind is halved. With longer RTTs this means more delay than Codel allows is required to avoid a throughput hit. The worst case happens when a single flow is controlled, but that can be a common situation. My proposal is to sense and have the target value in Codel automatically adjust when this worst case scenario happens - which would mitigate most of the downside. According to theory you should adapt interval if at all and the set target between 5-10% of that interval. See https://datatracker.ietf.org/doc/draft-ietf-aqm-codel/?include_text=1 sections 4.3 and 4.4. Now that could all be off.The upshot is increasing target as a response for long RTTs will sacrifice latency again for bandwidth, pretty much that the avoidance of is codel’s claim to fame ;) Best Regards Sebastian > > Simon > > Sent with AquaMail for Android > http://www.aqua-mail.com > > > On July 28, 2015 7:21:56 AM Eric Dumazet <eric.dumazet@gmail.com> wrote: > >> On Tue, 2015-07-28 at 07:11 -0700, Simon Barber wrote: >> > The main danger is the negative effects on performance of using Codel. You >> > may experience low throughput on high RTT links. >> >> Really ? I've never seen this, unless you mess with codel qdisc >> attributes maybe. >> >> (Some guys seem to not really understand whole concept of a queue, and >> set very low values for 'limit' attribute for example) >> >> >> >> > > > _______________________________________________ > Bloat mailing list > Bloat@lists.bufferbloat.net > https://lists.bufferbloat.net/listinfo/bloat ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 16:22 ` Sebastian Moeller @ 2015-07-28 17:11 ` Michael Welzl 0 siblings, 0 replies; 25+ messages in thread From: Michael Welzl @ 2015-07-28 17:11 UTC (permalink / raw) To: Sebastian Moeller; +Cc: bloat, Juliusz Chroboczek > On 28. jul. 2015, at 18.22, Sebastian Moeller <moeller0@gmx.de> wrote: > > Hi Simon, > > On Jul 28, 2015, at 16:31 , Simon Barber <simon@superduper.net> wrote: > >> The issue is that Codel tries to keep the delay low, and will start dropping when sojourn time grows above 5ms for 100ms. For longer RTT links more delay is necessary to avoid underutilizing the link. This is due to the multiplicative decrease - it's worst with Reno, where the halving of cWind means that you need to have a full BDP of data in the buffer to avoid the link going idle when cWind is halved. With longer RTTs this means more delay than Codel allows is required to avoid a throughput hit. The worst case happens when a single flow is controlled, but that can be a common situation. My proposal is to sense and have the target value in Codel automatically adjust when this worst case scenario happens - which would mitigate most of the downside. > > According to theory you should adapt interval if at all and the set target between 5-10% of that interval. See https://datatracker.ietf.org/doc/draft-ietf-aqm-codel/?include_text=1 sections 4.3 and 4.4. Now that could all be off.The upshot is increasing target as a response for long RTTs will sacrifice latency again for bandwidth, pretty much that the avoidance of is codel’s claim to fame ;) The only way to fix this trade-off is to change TCP, to back off less *only when the queue was small*. We tried what we think is the simplest possible way to do this: only a sender-side change, using ECN as an indication that there is an AQM mechanism on the path, not a long queue (and hence backing off by less is ok). It works pretty well. See: http://caia.swin.edu.au/reports/150710A/CAIA-TR-150710A.pdf (a few of the graphs are simulations, but many were from real-life tests - appendix B says which). ...and the draft, which was presented to TCPM at the Prague IETF last week: https://tools.ietf.org/html/draft-khademi-alternativebackoff-ecn Cheers, Michael ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 14:11 ` Simon Barber 2015-07-28 14:21 ` Eric Dumazet @ 2015-07-29 7:19 ` David Lang 1 sibling, 0 replies; 25+ messages in thread From: David Lang @ 2015-07-29 7:19 UTC (permalink / raw) To: Simon Barber; +Cc: bloat, Juliusz Chroboczek [-- Attachment #1: Type: TEXT/PLAIN, Size: 1322 bytes --] If you have high RTT on loopback or virtual interfaces, Codel is going to be the least of your problems ;-) David Lang On Tue, 28 Jul 2015, Simon Barber wrote: > The main danger is the negative effects on performance of using Codel. You > may experience low throughput on high RTT links. > > Simon > > Sent with AquaMail for Android > http://www.aqua-mail.com > > > On July 28, 2015 7:06:22 AM Toke Høiland-Jørgensen <toke@toke.dk> wrote: > >> Juliusz Chroboczek <jch@pps.univ-paris-diderot.fr> writes: >> >> >> What distro are you on? >> > >> > Debian. (One machine stable, one testing.) >> >> Right. Don't know if there's already an effort to convince the Debian >> devs to switch the default... >> >> >> Set this to fq_codel and you should be good to go. >> > >> > Is that safe? I'm thinking lo and virtual interfaces. >> >> Why wouldn't it be? The lo interface doesn't have a queue at all AFAIK. >> And if you have congestion at your virtual interfaces wouldn't you want >> it de-bloated? :) >> >> -Toke >> _______________________________________________ >> Bloat mailing list >> Bloat@lists.bufferbloat.net >> https://lists.bufferbloat.net/listinfo/bloat > > > _______________________________________________ > Bloat mailing list > Bloat@lists.bufferbloat.net > https://lists.bufferbloat.net/listinfo/bloat > ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 14:05 ` Toke Høiland-Jørgensen 2015-07-28 14:11 ` Simon Barber @ 2015-07-28 19:20 ` Juliusz Chroboczek 2015-07-28 19:29 ` Alan Jenkins 1 sibling, 1 reply; 25+ messages in thread From: Juliusz Chroboczek @ 2015-07-28 19:20 UTC (permalink / raw) To: Toke Høiland-Jørgensen; +Cc: bloat >> Debian. (One machine stable, one testing.) > Right. Don't know if there's already an effort to convince the Debian > devs to switch the default... Please file a bug against the procps package (which owns the sysctl.conf file). Just send a mail describing the issue and the proposed fix to submit@bugs.debian.org, with the first lines of the *body* of the mail having the following contents: Package: procps Version: 2:3.3.10-2 Severity: wishlist In typical Debian style, expect this to cause a months long flamewar about systemd ;-) ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 19:20 ` Juliusz Chroboczek @ 2015-07-28 19:29 ` Alan Jenkins 0 siblings, 0 replies; 25+ messages in thread From: Alan Jenkins @ 2015-07-28 19:29 UTC (permalink / raw) To: Juliusz Chroboczek; +Cc: bloat On 28/07/15 20:20, Juliusz Chroboczek wrote: >>> Debian. (One machine stable, one testing.) >> Right. Don't know if there's already an effort to convince the Debian >> devs to switch the default... > Please file a bug against the procps package (which owns the sysctl.conf > file). Just send a mail describing the issue and the proposed fix to > submit@bugs.debian.org, with the first lines of the *body* of the mail > having the following contents: > > Package: procps > Version: 2:3.3.10-2 > Severity: wishlist Good point > > In typical Debian style, expect this to cause a months long flamewar about > systemd ;-) though it's funny you should mention that :). http://cerowrt-devel.bufferbloat.narkive.com/0mzipESN/ding-dong-is-the-debian-drop-tail-queue-dead#post3 ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 13:50 ` Juliusz Chroboczek 2015-07-28 14:05 ` Toke Høiland-Jørgensen @ 2015-07-28 14:18 ` Eric Dumazet 1 sibling, 0 replies; 25+ messages in thread From: Eric Dumazet @ 2015-07-28 14:18 UTC (permalink / raw) To: Juliusz Chroboczek; +Cc: bloat On Tue, 2015-07-28 at 15:50 +0200, Juliusz Chroboczek wrote: > > What distro are you on? > > Debian. (One machine stable, one testing.) > > > There's a sysctl to set the default qdisc: net.core.default_qdisc. > > $ sysctl -a | grep default_qdisc > net.core.default_qdisc = pfifo_fast > > > Set this to fq_codel and you should be good to go. > > Is that safe? I'm thinking lo and virtual interfaces. Unless some user space script change it, virtual interfaces have txqueuelen = 0, so no qdisc is set up on them $ ifconfig lo | grep txqueuelen collisions:0 txqueuelen:0 $ tc -s -d qdisc sh dev lo <empty> So yes, this is reasonably safe to change net.core.default_qdisc ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 13:09 [Bloat] AQM and PPP on Linux Juliusz Chroboczek 2015-07-28 13:33 ` Toke Høiland-Jørgensen @ 2015-07-28 14:44 ` Dave Taht 2015-07-28 14:52 ` Eric Dumazet ` (2 more replies) 1 sibling, 3 replies; 25+ messages in thread From: Dave Taht @ 2015-07-28 14:44 UTC (permalink / raw) To: Juliusz Chroboczek; +Cc: bloat On Tue, Jul 28, 2015 at 3:09 PM, Juliusz Chroboczek <jch@pps.univ-paris-diderot.fr> wrote: > I'm currently away from home, and using a 3G modem for Internet access. > I've found out that both NetworkManager and wvdial/pppd setup the > interface to use pfifo_fast (with a qlen of a mere 3 packets!). Setting > fq_codel manually appears to work fine, but needs to be redone every time > the modem has a hiccup. > > Is that the expected behaviour? Shouldn't we be pushing patches somewhere > to change the default? 1) The ppp driver was debloated by david woodhouse way back when. However, the netusb-related drivers, and the 3g devices themselves, contain oft-huge buffers that reduce the effectiveness of any aqm or fq system, sometimes to immeasurability. I would be very interested in flent benchmarks of your 3g device with the 3 packet txqueue and with fq_codel, for the tcp_upload, rrul, and rrul_be tests. 2) Most advanced qdiscs ignore txqueuelen entirely. 3) Usually you can add a script in /etc/network/ifpreup.d or ifup.d to do extra stuff you want. 4) setting the default qdisc to be fq_codel in the sysctl works on most dynamically created devices, but does not work on devices that come up at boot time before the sysctls have a chance to run and the modprobes to complete. This is why fedora 22, for example, compiled in fq_codel statically, rather than dynamically. > -- Juliusz > _______________________________________________ > Bloat mailing list > Bloat@lists.bufferbloat.net > https://lists.bufferbloat.net/listinfo/bloat -- Dave Täht worldwide bufferbloat report: http://www.dslreports.com/speedtest/results/bufferbloat And: What will it take to vastly improve wifi for everyone? https://plus.google.com/u/0/explore/makewififast ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 14:44 ` Dave Taht @ 2015-07-28 14:52 ` Eric Dumazet 2015-07-28 19:24 ` Juliusz Chroboczek 2015-07-29 13:15 ` Stefan Alfredsson 2 siblings, 0 replies; 25+ messages in thread From: Eric Dumazet @ 2015-07-28 14:52 UTC (permalink / raw) To: Dave Taht; +Cc: bloat, Juliusz Chroboczek On Tue, 2015-07-28 at 16:44 +0200, Dave Taht wrote: > > 4) setting the default qdisc to be fq_codel in the sysctl works on > most dynamically created devices, but does not work on devices that > come up at boot time before the sysctls have a chance to run and the > modprobes to complete. This is why fedora 22, for example, compiled in > fq_codel statically, rather than dynamically. It does not matter fq_codel is static or a module. The thing is : the sysctl itself must be set to fq_codel before any network device is brought up. Since this is a user space policy, nothing prevents the script changing sysctl to first load fq_codel module, then change sysctl. ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 14:44 ` Dave Taht 2015-07-28 14:52 ` Eric Dumazet @ 2015-07-28 19:24 ` Juliusz Chroboczek 2015-07-28 19:31 ` Bill Ver Steeg (versteb) 2015-07-28 20:10 ` Alan Jenkins 2015-07-29 13:15 ` Stefan Alfredsson 2 siblings, 2 replies; 25+ messages in thread From: Juliusz Chroboczek @ 2015-07-28 19:24 UTC (permalink / raw) To: Dave Taht; +Cc: bloat > I would be very interested in flent benchmarks of your 3g device with > the 3 packet txqueue and with fq_codel, for the tcp_upload, rrul, and > rrul_be tests. Please send me detailed instructions, as well as information about how much traffic I'm going to have to pay for. FWIW, the RTT of the (unloaded) link varies tremendously. Right now (around 21:20), I'm seeing 89ms to 823ms, with an average of 192ms and a standard deviation of 146ms. It's better at night, mid-morning it's pretty much unusable. -- Juliusz ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 19:24 ` Juliusz Chroboczek @ 2015-07-28 19:31 ` Bill Ver Steeg (versteb) 2015-07-28 20:10 ` Alan Jenkins 1 sibling, 0 replies; 25+ messages in thread From: Bill Ver Steeg (versteb) @ 2015-07-28 19:31 UTC (permalink / raw) To: Juliusz Chroboczek, Dave Taht; +Cc: bloat It sounds like (one or more ) interface upstream of your link is also subject to periodic congestion. What a shocker --- cascaded links subject to bloat. Bvs -----Original Message----- From: bloat-bounces@lists.bufferbloat.net [mailto:bloat-bounces@lists.bufferbloat.net] On Behalf Of Juliusz Chroboczek Sent: Tuesday, July 28, 2015 3:25 PM To: Dave Taht Cc: bloat Subject: Re: [Bloat] AQM and PPP on Linux > I would be very interested in flent benchmarks of your 3g device with > the 3 packet txqueue and with fq_codel, for the tcp_upload, rrul, and > rrul_be tests. Please send me detailed instructions, as well as information about how much traffic I'm going to have to pay for. FWIW, the RTT of the (unloaded) link varies tremendously. Right now (around 21:20), I'm seeing 89ms to 823ms, with an average of 192ms and a standard deviation of 146ms. It's better at night, mid-morning it's pretty much unusable. -- Juliusz _______________________________________________ Bloat mailing list Bloat@lists.bufferbloat.net https://lists.bufferbloat.net/listinfo/bloat ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 19:24 ` Juliusz Chroboczek 2015-07-28 19:31 ` Bill Ver Steeg (versteb) @ 2015-07-28 20:10 ` Alan Jenkins 2015-07-28 20:45 ` Alan Jenkins 1 sibling, 1 reply; 25+ messages in thread From: Alan Jenkins @ 2015-07-28 20:10 UTC (permalink / raw) To: Juliusz Chroboczek, Dave Taht; +Cc: bloat On 28/07/15 20:24, Juliusz Chroboczek wrote: >> I would be very interested in flent benchmarks of your 3g device with >> the 3 packet txqueue and with fq_codel, for the tcp_upload, rrul, and >> rrul_be tests. > Please send me detailed instructions, as well as information about how > much traffic I'm going to have to pay for. > > FWIW, the RTT of the (unloaded) link varies tremendously. Right now > (around 21:20), I'm seeing 89ms to 823ms, with an average of 192ms and > a standard deviation of 146ms. It's better at night, mid-morning it's > pretty much unusable. > > -- Juliusz It's a straightforward usage. My one concern would be ensuring you have netperf (netperf.org) built as required. I suggest building netperf from source. (Cite: flent requirements[1], and experience of failures with the Debian package) ./configure --enable-demo=yes --enable-histogram make sudo make install Untested (on my part) but documented[2] install is by debs at https://software.opensuse.org/download.html?project=home:tohojo:flent&package=flent or "pip install flent". flent defaults to a 60 second test (and will run at whatever 4x tcp streams can manage). Given the variation & high rtt I wouldn't want to shorten that very much. One available graph from the output file will be what I assume Dave means when he says "mountain plot". That is, bandwidth & latency v.s. time. Assuming EU (server taken from https://github.com/richb-hanover/CeroWrtScripts): flent -H netperf-eu.bufferbloat.net rrul -t my-little-3G-connection-on-fq_codel rrul is the test. The -t value provides a caption. Move the output file it mentions from /tmp (huh?) to somewhere more useful. View available graphs with flent --gui <file>. Alan [1] http://netoptimizer.blogspot.co.uk/2014/09/mini-tutorial-for-netperf-wrapper-setup.html [2] https://github.com/tohojo/flent/blob/master/README.rst additional ref, including using your own server for netperf instead: https://flent.org/intro.html#quick-start ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 20:10 ` Alan Jenkins @ 2015-07-28 20:45 ` Alan Jenkins 0 siblings, 0 replies; 25+ messages in thread From: Alan Jenkins @ 2015-07-28 20:45 UTC (permalink / raw) To: Juliusz Chroboczek, Dave Taht; +Cc: bloat On 28/07/15 21:10, Alan Jenkins wrote: > On 28/07/15 20:24, Juliusz Chroboczek wrote: >>> I would be very interested in flent benchmarks of your 3g device with >>> the 3 packet txqueue and with fq_codel, for the tcp_upload, rrul, and >>> rrul_be tests. >> Please send me detailed instructions, as well as information about how >> much traffic I'm going to have to pay for. >> >> FWIW, the RTT of the (unloaded) link varies tremendously. Right now >> (around 21:20), I'm seeing 89ms to 823ms, with an average of 192ms and >> a standard deviation of 146ms. It's better at night, mid-morning it's >> pretty much unusable. >> >> -- Juliusz > > It's a straightforward usage. My one concern would be ensuring you > have netperf (netperf.org) built as required. > > I suggest building netperf from source. (Cite: flent requirements[1], > and experience of failures with the Debian package) > > ./configure --enable-demo=yes --enable-histogram > make > sudo make install > > Untested (on my part) but documented[2] install is by debs at > > https://software.opensuse.org/download.html?project=home:tohojo:flent&package=flent > > > or "pip install flent". > > flent defaults to a 60 second test (and will run at whatever 4x tcp > streams can manage). Given the variation & high rtt I wouldn't want > to shorten that very much. One available graph from the output file > will be what I assume Dave means when he says "mountain plot". That > is, bandwidth & latency v.s. time. > > Assuming EU (server taken from > https://github.com/richb-hanover/CeroWrtScripts): > > flent -H netperf-eu.bufferbloat.net rrul -t > my-little-3G-connection-on-fq_codel > > rrul is the test. The -t value provides a caption. Move the output > file it mentions from /tmp (huh?) to somewhere more useful. View > available graphs with flent --gui <file>. * flent-gui may have additional dependencies which may or may not be findable, sorry python-matplotlib python-matplotlib-qt4 or maybe python-matplotlib-qt5 otherwise try flent -i <result file> -p <plot> -o out.svg where plot is in e.g. `flent --list-plots rrul` The plot over time is "all_scaled". > > > Alan > > > [1] > http://netoptimizer.blogspot.co.uk/2014/09/mini-tutorial-for-netperf-wrapper-setup.html > [2] https://github.com/tohojo/flent/blob/master/README.rst > > additional ref, including using your own server for netperf instead: > > https://flent.org/intro.html#quick-start ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-28 14:44 ` Dave Taht 2015-07-28 14:52 ` Eric Dumazet 2015-07-28 19:24 ` Juliusz Chroboczek @ 2015-07-29 13:15 ` Stefan Alfredsson 2015-07-29 13:41 ` Dave Taht 2 siblings, 1 reply; 25+ messages in thread From: Stefan Alfredsson @ 2015-07-29 13:15 UTC (permalink / raw) To: bloat * Quoting Dave Taht <dave.taht@gmail.com> [28 Jul-15 16:44]: > On Tue, Jul 28, 2015 at 3:09 PM, Juliusz Chroboczek > <jch@pps.univ-paris-diderot.fr> wrote: > > I'm currently away from home, and using a 3G modem for Internet access. > > I've found out that both NetworkManager and wvdial/pppd setup the > > interface to use pfifo_fast (with a qlen of a mere 3 packets!). Setting > > fq_codel manually appears to work fine, but needs to be redone every time > > the modem has a hiccup. > > However, the netusb-related drivers, and the 3g devices themselves, > contain oft-huge buffers that reduce the effectiveness of any aqm or > fq system, sometimes to immeasurability. > > I would be very interested in flent benchmarks of your 3g device with > the 3 packet txqueue and with fq_codel, for the tcp_upload, rrul, and > rrul_be tests. I have a station with mobile broadband USB modems (4xHuawei E392), directly connected to a Linux box running kernel 3.16.3, with a (non-public) netperf server (same kernel) hosted on the well-connected Swedish university network. I also have a 3 packet txqueue, and ran the flent tcp_upload, rrul, rrul_be for 3.5G (HSPA+) and 4G (LTE) networks for one of the operators/modems. For comparison, I ran both pfifo_fast and fq_codel. The execution script, output and flent result files are available at https://www.dropbox.com/s/n5tc1dhtu9jdplz/bloatlist-ppp-150729.zip From flent --gui inspections, I'd say there is about a factor 10 increase from base to load latency (from around 40-50 ms to around 400-500 ms), for both pfifo_fast and fq_codel, for both link types, with some transients above 1000 ms. Juliusz: Regarding data usage, the 4G measurements consumed 1.4 Gbyte download and 357 Mbyte upload - but it all depends on the network throughput as the experiments are time bound (by default 60 seconds). For 3.5G 100 Mbyte data was sent, and guesstimately 500 Mbyte received (sorry, didn't capture the amount; but it can probably be found in the trace files if necessary. However it all depends on your link throughput which will be different from mine anyway). Cheers, Stefan -- Stefan Alfredsson, PhD Tel: +46 (0) 54 700 1668 Datavetenskap Kontor: 21E-414 (Hus Vanern) Karlstads universitet PGP 0xB19B4B16 SE-651 88 Karlstad http://www.cs.kau.se/stefalfr/ ^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [Bloat] AQM and PPP on Linux 2015-07-29 13:15 ` Stefan Alfredsson @ 2015-07-29 13:41 ` Dave Taht 0 siblings, 0 replies; 25+ messages in thread From: Dave Taht @ 2015-07-29 13:41 UTC (permalink / raw) To: Stefan Alfredsson; +Cc: bloat On Wed, Jul 29, 2015 at 3:15 PM, Stefan Alfredsson <Stefan.Alfredsson@kau.se> wrote: > * Quoting Dave Taht <dave.taht@gmail.com> [28 Jul-15 16:44]: >> On Tue, Jul 28, 2015 at 3:09 PM, Juliusz Chroboczek >> <jch@pps.univ-paris-diderot.fr> wrote: >> > I'm currently away from home, and using a 3G modem for Internet access. >> > I've found out that both NetworkManager and wvdial/pppd setup the >> > interface to use pfifo_fast (with a qlen of a mere 3 packets!). Setting >> > fq_codel manually appears to work fine, but needs to be redone every time >> > the modem has a hiccup. >> >> However, the netusb-related drivers, and the 3g devices themselves, >> contain oft-huge buffers that reduce the effectiveness of any aqm or >> fq system, sometimes to immeasurability. >> >> I would be very interested in flent benchmarks of your 3g device with >> the 3 packet txqueue and with fq_codel, for the tcp_upload, rrul, and >> rrul_be tests. > > > I have a station with mobile broadband USB modems (4xHuawei E392), > directly connected to a Linux box running kernel 3.16.3, with > a (non-public) netperf server (same kernel) hosted on the well-connected > Swedish university network. > > I also have a 3 packet txqueue, and ran the flent tcp_upload, rrul, rrul_be > for 3.5G (HSPA+) and 4G (LTE) networks for one of the operators/modems. > For comparison, I ran both pfifo_fast and fq_codel. > > The execution script, output and flent result files are available at > https://www.dropbox.com/s/n5tc1dhtu9jdplz/bloatlist-ppp-150729.zip Thank you SO MUCH for the raw flent data. That made poking through this a snap! Of course, the news is mostly bad - a tiny fifo qdisc on LTE looks to be presently best than any amount of queuing/aqm/fq at the layers above the device driver and device. Something like BQL is needed for usbnet, and the usb-cellmodem driver... and some means of tracking completion interrupts sanely to change this picture. We did a bit of work on both these layers a while back but we lost steam at the complex interactions of the usb stack. as an aside - and on the wifi front, recently toke and I did a string of overnight tests on the wifi test rig we are taking to battlemesh, which includes the latest minstrel blues and minstrel variance patches. Sadly, also, mostly of note is the wide variabilty of results from run to run, in the same wifi environment. There were only a few radios we could "hear" to interfere... and I'd done much better with the exact same radios in an environment fully under my control. A tarball of all these flent testruns and tests is at http://snapon.lab.bufferbloat.net/~d/long-running.tgz Anyway... the variance from run to run: http://snapon.lab.bufferbloat.net/~d/long-running/10testscompared.png Trying to pull apart the apparently bi-modal interactions with rate control (and *why*) is going to take some *work*. http://snapon.lab.bufferbloat.net/~d/long-running/themessthatiswifi.png This plot, randomly picked out from the others http://snapon.lab.bufferbloat.net/~d/long-running/wifiratecontrol.png shows clearly the current interaction between the current rate of the wifi and the latency. (but I have no idea *why* it stayed stuck at the lower rate for 20+ seconds!). Still, I believe we have developed means to hold the latency low at nearly any bandwidth, we just have to roll up our sleeves and make per station queuing work and then start glomming on new algorithms. Or so I hope. ... I happened to rather like this plot, from an artistic perspective, showing the bands that each 802.11e queue fits into. Sort of. http://snapon.lab.bufferbloat.net/~d/long-running/vangogh.png But maybe I am thinking of the wrong artist? > From flent --gui inspections, I'd say there is about a factor 10 increase > from base to load latency (from around 40-50 ms to around 400-500 ms), > for both pfifo_fast and fq_codel, for both link types, > with some transients above 1000 ms. > > > Juliusz: Regarding data usage, the 4G measurements consumed 1.4 Gbyte > download and 357 Mbyte upload - but it all depends on the network > throughput as the experiments are time bound (by default 60 seconds). > For 3.5G 100 Mbyte data was sent, and guesstimately 500 Mbyte received > (sorry, didn't capture the amount; but it can probably be found in > the trace files if necessary. However it all depends on your link > throughput which will be different from mine anyway). Yes. One reason why I have not focused much on fixing LTE, is I refuse to have them charge me for attempting to fix their technology. It is bad enough throwing good money away to Netgear to fix their routers, but to get charged through the **** for LTE on a bandwidth basis - and I could see, eating a lot of bandwidth with various tests - ENOBUDGET. Now, if we could, like, get 20 free unlimited use sims for anywhere in the world, that might be an incentive.... ;) > > > Cheers, > Stefan > > -- > Stefan Alfredsson, PhD Tel: +46 (0) 54 700 1668 > Datavetenskap Kontor: 21E-414 (Hus Vanern) > Karlstads universitet PGP 0xB19B4B16 > SE-651 88 Karlstad http://www.cs.kau.se/stefalfr/ > _______________________________________________ > Bloat mailing list > Bloat@lists.bufferbloat.net > https://lists.bufferbloat.net/listinfo/bloat -- Dave Täht worldwide bufferbloat report: http://www.dslreports.com/speedtest/results/bufferbloat And: What will it take to vastly improve wifi for everyone? https://plus.google.com/u/0/explore/makewififast ^ permalink raw reply [flat|nested] 25+ messages in thread
end of thread, other threads:[~2015-07-29 13:41 UTC | newest] Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-07-28 13:09 [Bloat] AQM and PPP on Linux Juliusz Chroboczek 2015-07-28 13:33 ` Toke Høiland-Jørgensen 2015-07-28 13:50 ` Juliusz Chroboczek 2015-07-28 14:05 ` Toke Høiland-Jørgensen 2015-07-28 14:11 ` Simon Barber 2015-07-28 14:21 ` Eric Dumazet 2015-07-28 14:31 ` Simon Barber 2015-07-28 14:43 ` Jonathan Morton 2015-07-28 14:49 ` Eric Dumazet 2015-07-28 14:55 ` Eric Dumazet 2015-07-28 16:02 ` Alan Jenkins 2015-07-28 16:22 ` Sebastian Moeller 2015-07-28 17:11 ` Michael Welzl 2015-07-29 7:19 ` David Lang 2015-07-28 19:20 ` Juliusz Chroboczek 2015-07-28 19:29 ` Alan Jenkins 2015-07-28 14:18 ` Eric Dumazet 2015-07-28 14:44 ` Dave Taht 2015-07-28 14:52 ` Eric Dumazet 2015-07-28 19:24 ` Juliusz Chroboczek 2015-07-28 19:31 ` Bill Ver Steeg (versteb) 2015-07-28 20:10 ` Alan Jenkins 2015-07-28 20:45 ` Alan Jenkins 2015-07-29 13:15 ` Stefan Alfredsson 2015-07-29 13:41 ` Dave Taht
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox