General list for discussing Bufferbloat
 help / color / mirror / Atom feed
From: David Lang <david@lang.hm>
To: jb <justin@dslr.net>
Cc: bloat <bloat@lists.bufferbloat.net>
Subject: Re: [Bloat] DSLReports Speed Test has latency measurement built-in
Date: Thu, 7 May 2015 21:16:23 -0700 (PDT)	[thread overview]
Message-ID: <alpine.DEB.2.02.1505072114080.15076@nftneq.ynat.uz> (raw)
In-Reply-To: <CAH3Ss946KiduPDzKO1Wn1Ap55U=ymrLThovagqZ80i2nSJ3Nkg@mail.gmail.com>

[-- Attachment #1: Type: TEXT/Plain, Size: 10787 bytes --]

On Fri, 8 May 2015, jb wrote:

> I've made some changes and now this test displays the "PDV" column as
> simply the recent average increase on the best latency seen, as usually the
> best latency seen is pretty stable. (It also should work in firefox too
> now).
>
> In addition, every 30 seconds, a grade is printed next to a timestamp.
> I know how we all like grades :) the grade is based on the average of all
> the PDVs, and ranges from A+ (5 milliseconds or less) down to F for fail.
>
> I'm not 100% happy with this PDV figure, a stellar connection - and no 
> internet congestion - will show a low number that is stable and an A+ grade. A 
> connection with jitter will show a PDV that is half the average jitter 
> amplitude. So far so good.
>
> But a connection with almost no jitter, but that has visibly higher than 
> minimal latency, will show a failing grade. And if this is a jitter / packet 
> delay variation type test, I'm not sure about this situation. One could say it 
> is a very good connection but because it is 30ms higher than just one revealed 
> optimal ping, yet it might get a "D". Not sure how common this state of things 
> could be though.

this is why the grade should be based more on the ability to induce jitter (the 
additional latency under load) than the absolute number

a 100ms worth of buffer induced latency on a 20ms connection should score far 
worse than 20ms worth of induced latency on a 100ms connection.

David Lang

> Also since it is a global test a component of the grade is also internet
> backbone congestion, and not necessarily an ISP or equipment issue.
>
>
> On Fri, May 8, 2015 at 9:09 AM, Dave Taht <dave.taht@gmail.com> wrote:
>
>> On Thu, May 7, 2015 at 3:27 PM, Dave Taht <dave.taht@gmail.com> wrote:
>>> On Thu, May 7, 2015 at 7:45 AM, Simon Barber <simon@superduper.net>
>> wrote:
>>>> The key figure for VoIP is maximum latency, or perhaps somewhere around
>> 99th
>>>> percentile. Voice packets cannot be played out if they are late, so how
>> late
>>>> they are is the only thing that matters. If many packets are early but
>> more
>>>> than a very small number are late, then the jitter buffer has to adjust
>> to
>>>> handle the late packets. Adjusting the jitter buffer disrupts the
>>>> conversation, so ideally adjustments are infrequent. When maximum
>> latency
>>>> suddenly increases it becomes necessary to increase the buffer fairly
>>>> quickly to avoid a dropout in the conversation. Buffer reductions can be
>>>> hidden by waiting for gaps in conversation. People get used to the
>> acoustic
>>>> round trip latency and learn how quickly to expect a reply from the
>> other
>>>> person (unless latency is really too high), but adjustments interfere
>> with
>>>> this learned expectation, so make it hard to interpret why the other
>> person
>>>> has paused. Thus adjustments to the buffering should be as infrequent as
>>>> possible.
>>>>
>>>> Codel measures and tracks minimum latency in its inner 'interval' loop.
>> For
>>>> VoIP the maximum is what counts. You can call it minimum + jitter, but
>> the
>>>> maximum is the important thing (not the absolute maximum, since a very
>> small
>>>> number of late packets are tolerable, but perhaps the 99th percentile).
>>>>
>>>> During a conversation it will take some time at the start to learn the
>>>> characteristics of the link, but ideally the jitter buffer algorithm
>> will
>>>> quickly get to a place where few adjustments are made. The more
>> conservative
>>>> the buffer (higher delay above minimum) the less likely a future
>> adjustment
>>>> will be needed, hence a tendency towards larger buffers (and more
>> delay).
>>>>
>>>> Priority queueing is perfect for VoIP, since it can keep the jitter at a
>>>> single hop down to the transmission time for a single maximum size
>> packet.
>>>> Fair Queueing will often achieve the same thing, since VoIP streams are
>>>> often the lowest bandwidth ongoing stream on the link.
>>>
>>> Unfortunately this is more nuanced than this. Not for the first time
>>> do I wish that email contained math, and/or we had put together a paper
>>> for this containing the relevant math. I do have a spreadsheet lying
>>> around here somewhere...
>>>
>>> In the case of a drop tail queue, jitter is a function of the total
>>> amount of data outstanding on the link by all the flows. A single
>>> big fat flow experiencing a drop will drop it's buffer occupancy
>>> (and thus effect on other flows) by a lot on the next RTT. However
>>> a lot of fat flows will drop by less if drops are few. Total delay
>>> is the sum of all packets outstanding on the link.
>>>
>>> In the case of stochastic packet-fair queuing jitter is a function
>>> of the total number of bytes in each packet outstanding on the sum
>>> of the total number of flows. The total delay is the sum of the
>>> bytes delivered per packet per flow.
>>>
>>> In the case of DRR, jitter is a function of the total number of bytes
>>> allowed by the quantum per flow outstanding on the link. The total
>>> delay experienced by the flow is a function of the amounts of
>>> bytes delivered with the number of flows.
>>>
>>> In the case of fq_codel, jitter is a function of of the total number
>>> of bytes allowed by the quantum per flow outstanding on the link,
>>> with the sparse optimization pushing flows with no queue
>>> queue in the available window to the front. Furthermore
>>> codel acts to shorten the lengths of the queues overall.
>>>
>>> fq_codel's delay: when the arriving in new flow packet can be serviced
>>> in less time than the total number of flows' quantums, is a function
>>> of the total number of flows that are not also building queues. When
>>> the total service time for all flows exceeds the interval the voip
>>> packet is delivered in, and AND the quantum under which the algorithm
>>> is delivering, fq_codel degrades to DRR behavior. (in other words,
>>> given enough queuing flows or enough new flows, you can steadily
>>> accrue delay on a voip flow under fq_codel). Predicting jitter is
>>> really hard to do here, but still pretty minimal compared to the
>>> alternatives above.
>>
>> And to complexify it further if the total flows' service time exceeds
>> the interval on which the voip flow is being delivered, the voip flow
>> can deliver a fq_codel quantum's worth of packets back to back.
>>
>> Boy I wish I could explain all this better, and/or observe the results
>> on real jitter buffers in real apps.
>>
>>>
>>> in the above 3 cases, hash collisions permute the result. Cake and
>>> fq_pie have a lot less collisions.
>>
>> Which is not necessarily a panacea either. perfect flow isolation
>> (cake) to hundreds of flows might be in some cases worse that
>> suffering hash collisions (fq_codel) for some workloads. sch_fq and
>> fq_pie have *perfect* flow isolation and I worry about the effects of
>> tons and tons of short flows (think ddos attacks) - I am comforted by
>> colliisions! and tend to think there is an ideal ratio of flows
>> allowed without queue management verses available bandwidth that we
>> don't know yet - as well as think for larger numbers of flows we
>> should be inheriting more global environmental (state of the link and
>> all queues) than we currently do in initializing both cake and
>> fq_codel queues.
>>
>> Recently I did some tests of 450+ flows (details on the cake mailing
>> list) against sch_fq which got hopelessly buried (10000 packets in
>> queue). cake and fq_pie did a lot better.
>>
>>> I am generally sanguine about this along the edge - from the internet
>>> packets cannot be easily classified, yet most edge networks have more
>>> bandwidth from that direction, thus able to fit WAY more flows in
>>> under 10ms, and outbound, from the home or small business, some
>>> classification can be effectively used in a X tier shaper (or cake) to
>>> ensure better priority (still with fair) queuing for this special
>>> class of application - not that under most home workloads that this is
>>> an issue. We think. We really need to do more benchmarking of web and
>>> dash traffic loads.
>>>
>>>> Simon
>>>>
>>>> Sent with AquaMail for Android
>>>> http://www.aqua-mail.com
>>>>
>>>> On May 7, 2015 6:16:00 AM jb <justin@dslr.net> wrote:
>>>>>
>>>>> I thought would be more sane too. I see mentioned online that PDV is a
>>>>> gaussian distribution (around mean) but it looks more like half a bell
>>>>> curve, with most numbers near the the lowest latency seen, and getting
>>>>> progressively worse with
>>>>> less frequency.
>>>>> At least for DSL connections on good ISPs that scenario seems more
>>>>> frequent.
>>>>> You "usually" get the best latency and "sometimes" get spikes or fuzz
>> on
>>>>> top of it.
>>>>>
>>>>> by the way after I posted I discovered Firefox has an issue with this
>> test
>>>>> so I had
>>>>> to block it with a message, my apologies if anyone wasted time trying
>> it
>>>>> with FF.
>>>>> Hopefully i can figure out why.
>>>>>
>>>>>
>>>>> On Thu, May 7, 2015 at 9:44 PM, Mikael Abrahamsson <swmike@swm.pp.se>
>>>>> wrote:
>>>>>>
>>>>>> On Thu, 7 May 2015, jb wrote:
>>>>>>
>>>>>>> There is a web socket based jitter tester now. It is very early stage
>>>>>>> but
>>>>>>> works ok.
>>>>>>>
>>>>>>> http://www.dslreports.com/speedtest?radar=1
>>>>>>>
>>>>>>> So the latency displayed is the mean latency from a rolling 60 sample
>>>>>>> buffer, Minimum latency is also displayed. and the +/- PDV value is
>> the mean
>>>>>>> difference between sequential pings in that same rolling buffer. It
>> is quite
>>>>>>> similar to the std.dev actually (not shown).
>>>>>>
>>>>>>
>>>>>> So I think there are two schools here, either you take average and
>>>>>> display + / - from that, but I think I prefer to take the lowest of
>> the last
>>>>>> 100 samples (or something), and then display PDV from that "floor"
>> value, ie
>>>>>> PDV can't ever be negative, it can only be positive.
>>>>>>
>>>>>> Apart from that, the above multi-place RTT test is really really nice,
>>>>>> thanks for doing this!
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Mikael Abrahamsson    email: swmike@swm.pp.se
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> 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
>>>>
>>>
>>>
>>>
>>> --
>>> Dave Täht
>>> Open Networking needs **Open Source Hardware**
>>>
>>> https://plus.google.com/u/0/+EricRaymond/posts/JqxCe2pFr67
>>
>>
>>
>> --
>> Dave Täht
>> Open Networking needs **Open Source Hardware**
>>
>> https://plus.google.com/u/0/+EricRaymond/posts/JqxCe2pFr67
>>
>

[-- Attachment #2: Type: TEXT/PLAIN, Size: 140 bytes --]

_______________________________________________
Bloat mailing list
Bloat@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/bloat

  reply	other threads:[~2015-05-08  4:16 UTC|newest]

Thread overview: 183+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-19  5:26 jb
2015-04-19  7:36 ` David Lang
2015-04-19  7:48   ` David Lang
2015-04-19  9:33   ` jb
2015-04-19 10:45     ` David Lang
2015-04-19  8:28 ` Alex Burr
2015-04-19 10:20 ` Sebastian Moeller
2015-04-19 10:46   ` Jonathan Morton
2015-04-19 16:30     ` Sebastian Moeller
2015-04-19 17:41       ` Jonathan Morton
2015-04-19 19:40         ` Sebastian Moeller
2015-04-19 20:53           ` Jonathan Morton
2015-04-21  2:56             ` Simon Barber
2015-04-21  4:15               ` jb
2015-04-21  4:47                 ` David Lang
2015-04-21  7:35                   ` jb
2015-04-21  9:14                     ` Steinar H. Gunderson
2015-04-21 14:20                     ` David Lang
2015-04-21 14:25                       ` David Lang
2015-04-21 14:28                         ` David Lang
2015-04-21 22:13                           ` jb
2015-04-21 22:39                             ` Aaron Wood
2015-04-21 23:17                             ` jb
2015-04-22  2:14                               ` Simon Barber
2015-04-22  2:56                                 ` jb
2015-04-22 14:32                       ` Simon Barber
2015-04-22 17:35                         ` David Lang
2015-04-23  1:37                           ` Simon Barber
2015-04-24 16:54                             ` David Lang
2015-04-24 17:00                               ` Rick Jones
2015-04-21  9:37                 ` Jonathan Morton
2015-04-21 10:35                   ` jb
2015-04-22  4:04                     ` Steinar H. Gunderson
2015-04-22  4:28                       ` Eric Dumazet
2015-04-22  8:51                         ` [Bloat] RE : " luca.muscariello
2015-04-22 12:02                           ` jb
2015-04-22 13:08                             ` Jonathan Morton
     [not found]                             ` <14ce17a7810.27f7.e972a4f4d859b00521b2b659602cb2f9@superduper.net>
2015-04-22 14:15                               ` Simon Barber
2015-04-22 13:50                           ` [Bloat] " Eric Dumazet
2015-04-22 14:09                             ` Steinar H. Gunderson
2015-04-22 15:26                             ` [Bloat] RE : " luca.muscariello
2015-04-22 15:44                               ` [Bloat] " Eric Dumazet
2015-04-22 16:35                                 ` MUSCARIELLO Luca IMT/OLN
2015-04-22 17:16                                   ` Eric Dumazet
2015-04-22 17:24                                     ` Steinar H. Gunderson
2015-04-22 17:28                                     ` MUSCARIELLO Luca IMT/OLN
2015-04-22 17:45                                       ` MUSCARIELLO Luca IMT/OLN
2015-04-23  5:27                                         ` MUSCARIELLO Luca IMT/OLN
2015-04-23  6:48                                           ` Eric Dumazet
     [not found]                                             ` <CAH3Ss96VwE_fWNMOMOY4AgaEnVFtCP3rPDHSudOcHxckSDNMqQ@mail.gmail.com>
2015-04-23 10:08                                               ` jb
2015-04-24  8:18                                                 ` Sebastian Moeller
2015-04-24  8:29                                                   ` Toke Høiland-Jørgensen
2015-04-24  8:55                                                     ` Sebastian Moeller
2015-04-24  9:02                                                       ` Toke Høiland-Jørgensen
2015-04-24 13:32                                                         ` jb
2015-04-24 13:58                                                           ` Toke Høiland-Jørgensen
2015-04-24 16:51                                                           ` David Lang
2015-04-25  3:15                                                       ` Simon Barber
2015-04-25  4:04                                                         ` Dave Taht
2015-04-25  4:26                                                           ` Simon Barber
2015-04-25  6:03                                                             ` Sebastian Moeller
2015-04-27 16:39                                                               ` Dave Taht
2015-04-28  7:18                                                                 ` Sebastian Moeller
2015-04-28  8:01                                                                   ` David Lang
2015-04-28  8:19                                                                     ` Toke Høiland-Jørgensen
2015-04-28 15:42                                                                       ` David Lang
2015-04-28  8:38                                                                     ` Sebastian Moeller
2015-04-28 12:09                                                                       ` Rich Brown
2015-04-28 15:26                                                                         ` David Lang
2015-04-28 15:39                                                                       ` David Lang
2015-04-28 11:04                                                                     ` Mikael Abrahamsson
2015-04-28 11:49                                                                       ` Sebastian Moeller
2015-04-28 12:24                                                                         ` Mikael Abrahamsson
2015-04-28 13:44                                                                           ` Sebastian Moeller
2015-04-28 19:09                                                                             ` Rick Jones
2015-04-28 14:06                                                                       ` Dave Taht
2015-04-28 14:02                                                                   ` Dave Taht
2015-05-06  5:08                                                               ` Simon Barber
2015-05-06  8:50                                                                 ` Sebastian Moeller
2015-05-06 15:30                                                                   ` Jim Gettys
2015-05-06 18:03                                                                     ` Sebastian Moeller
2015-05-06 20:25                                                                     ` Jonathan Morton
2015-05-06 20:43                                                                       ` Toke Høiland-Jørgensen
2015-05-07  7:33                                                                         ` Sebastian Moeller
2015-05-07  4:29                                                                       ` Mikael Abrahamsson
2015-05-07  7:08                                                                         ` jb
2015-05-07  7:18                                                                           ` Jonathan Morton
2015-05-07  7:24                                                                             ` Mikael Abrahamsson
2015-05-07  7:40                                                                               ` Sebastian Moeller
2015-05-07  9:16                                                                                 ` Mikael Abrahamsson
2015-05-07 10:44                                                                                   ` jb
2015-05-07 11:36                                                                                     ` Sebastian Moeller
2015-05-07 11:44                                                                                     ` Mikael Abrahamsson
2015-05-07 13:10                                                                                       ` Jim Gettys
2015-05-07 13:18                                                                                         ` Mikael Abrahamsson
2015-05-07 13:14                                                                                       ` jb
2015-05-07 13:26                                                                                         ` Neil Davies
2015-05-07 14:45                                                                                         ` Simon Barber
2015-05-07 22:27                                                                                           ` Dave Taht
2015-05-07 22:45                                                                                             ` Dave Taht
2015-05-07 23:09                                                                                             ` Dave Taht
2015-05-08  2:05                                                                                               ` jb
2015-05-08  4:16                                                                                                 ` David Lang [this message]
2015-05-08  3:54                                                                                               ` Eric Dumazet
2015-05-08  4:20                                                                                                 ` Dave Taht
2015-05-08 13:20                                                                                     ` [Bloat] DSLReports Jitter/PDV test Rich Brown
2015-05-08 14:22                                                                                       ` jb
2015-05-07  7:37                                                                             ` [Bloat] DSLReports Speed Test has latency measurement built-in Sebastian Moeller
2015-05-07  7:19                                                                           ` Mikael Abrahamsson
2015-05-07  6:19                                                                       ` Sebastian Moeller
2015-04-25  3:23                                                       ` Simon Barber
2015-04-24 15:20                                                     ` Bill Ver Steeg (versteb)
2015-04-25  2:24                                                   ` Simon Barber
2015-04-23 10:17                                             ` renaud sallantin
2015-04-23 14:10                                               ` Eric Dumazet
2015-04-23 14:38                                                 ` renaud sallantin
2015-04-23 15:52                                                   ` Jonathan Morton
2015-04-23 16:00                                                     ` Simon Barber
2015-04-23 13:17                                             ` MUSCARIELLO Luca IMT/OLN
2015-04-22 18:22                                       ` Eric Dumazet
2015-04-22 18:39                                         ` [Bloat] Pacing --- was " MUSCARIELLO Luca IMT/OLN
2015-04-22 19:05                                           ` Jonathan Morton
2015-04-22 15:59                               ` [Bloat] RE : " Steinar H. Gunderson
2015-04-22 16:16                                 ` Eric Dumazet
2015-04-22 16:19                                 ` Dave Taht
2015-04-22 17:15                                   ` Rick Jones
2015-04-19 12:14 ` [Bloat] " Toke Høiland-Jørgensen
  -- strict thread matches above, loose matches on Subject: below --
2015-04-19 12:56 jb
2015-04-19 13:10 ` Toke Høiland-Jørgensen
2015-04-19 13:53   ` jb
2015-04-19 15:38     ` Toke Høiland-Jørgensen
2015-04-19 16:38       ` Toke Høiland-Jørgensen
2015-04-19 17:15         ` Mikael Abrahamsson
2015-04-19 17:43           ` Dave Taht
2015-04-19 19:22             ` Dave Taht
2015-04-23 17:03               ` Dave Taht
2015-04-23 18:04                 ` Mikael Abrahamsson
2015-04-23 18:08                   ` Jonathan Morton
2015-04-23 20:19                   ` jb
2015-04-23 20:39                     ` Dave Taht
2015-04-24 21:45                     ` Rich Brown
2015-04-25  1:14                       ` jb
2015-04-23 21:44                   ` Rich Brown
2015-04-23 22:22                     ` Dave Taht
2015-04-23 22:29                       ` Dave Taht
2015-04-24  1:58                       ` Rich Brown
2015-04-24  2:40                         ` Dave Taht
2015-04-24  3:20                           ` Jim Gettys
2015-04-24  3:39                             ` Dave Taht
2015-04-24  4:04                               ` Dave Taht
2015-04-24  4:17                                 ` Dave Taht
2015-04-24 16:13                                   ` Rick Jones
2015-04-24  5:00                                 ` jb
2015-04-27 16:28                                   ` Dave Taht
2015-04-24 16:09                               ` Rick Jones
2015-04-24 13:49                         ` Pedro Tumusok
2015-04-23 22:51                     ` David Lang
2015-04-24  1:38                       ` Rich Brown
2015-04-24  4:16                   ` Mikael Abrahamsson
2015-04-24  4:24                     ` Dave Taht
2015-04-19 17:45           ` Toke Høiland-Jørgensen
2015-04-19 18:26             ` Jonathan Morton
2015-04-19 18:30               ` Toke Høiland-Jørgensen
2015-04-19 19:15                 ` Jonathan Morton
2015-04-20  3:15                 ` Aaron Wood
2015-04-20  7:00                   ` jb
     [not found]                     ` <CACQiMXbF9Uk3H=81at-Z9a2fdYKrRtRorSXRg5dBcPB8-aR4Cw@mail.gmail.com>
2015-04-20  8:11                       ` jb
2015-04-19 19:19             ` Mikael Abrahamsson
2015-04-19 21:57           ` Rich Brown
2015-04-19 23:21             ` jb
2015-04-20 14:51               ` David Lang
2015-04-20 15:51                 ` Dave Taht
2015-04-20 16:15                   ` Dave Taht
2015-04-19  0:57 Rich Brown
2015-04-19  4:01 ` Dave Taht
2015-04-20 14:33   ` Colin Dearborn
2015-04-19  8:29 ` Dave Taht
2015-04-19  8:38   ` Dave Taht
2015-04-19 12:21     ` jb
2015-04-19  9:17   ` MUSCARIELLO Luca IMT/OLN
2015-04-19 12:03     ` jb
2015-04-19 10:53 ` dikshie
2015-04-19 12:11   ` jb

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=alpine.DEB.2.02.1505072114080.15076@nftneq.ynat.uz \
    --to=david@lang.hm \
    --cc=bloat@lists.bufferbloat.net \
    --cc=justin@dslr.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox