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
next prev parent 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