Historic archive of defunct list bloat-devel@lists.bufferbloat.net
 help / color / mirror / Atom feed
* Enabling Byte Queue Limits in the ath5k wireless driver
@ 2013-10-03 18:49 Anirudh Sivaraman
  2013-10-06  3:39 ` Simon Barber
  0 siblings, 1 reply; 7+ messages in thread
From: Anirudh Sivaraman @ 2013-10-03 18:49 UTC (permalink / raw)
  To: bloat-devel

Hi,

I am looking into enabling BQL for the ath5k driver, and was wondering
if anyone here knows of any prior efforts in this direction. In
particular, is BQL even a sensible strategy for wireless drivers?
Thank you in advance for any advice you may have in this regard.

Anirudh

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Enabling Byte Queue Limits in the ath5k wireless driver
  2013-10-03 18:49 Enabling Byte Queue Limits in the ath5k wireless driver Anirudh Sivaraman
@ 2013-10-06  3:39 ` Simon Barber
  2013-10-06 13:31   ` Anirudh Sivaraman
  0 siblings, 1 reply; 7+ messages in thread
From: Simon Barber @ 2013-10-06  3:39 UTC (permalink / raw)
  To: bloat-devel

BQL does make sense, but TQL would be even better - 'Time Queue Limits'. 
Which would work based on an estimate of how much time each packet will 
take to send, and limiting the hardware queue to contain a total mount 
of 'time'. The purpose of the hardware queue is to mask interrupt and 
other latencies involved in refilling an empty queue - a time based 
phenomenon. Hence time is the best metric to control it - with fixed 
speed interfaced like ethernet bytes=time, but not so on wireless.

Simon

On 10/3/2013 11:49 AM, Anirudh Sivaraman wrote:
> Hi,
>
> I am looking into enabling BQL for the ath5k driver, and was wondering
> if anyone here knows of any prior efforts in this direction. In
> particular, is BQL even a sensible strategy for wireless drivers?
> Thank you in advance for any advice you may have in this regard.
>
> Anirudh
> _______________________________________________
> Bloat-devel mailing list
> Bloat-devel@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/bloat-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Enabling Byte Queue Limits in the ath5k wireless driver
  2013-10-06  3:39 ` Simon Barber
@ 2013-10-06 13:31   ` Anirudh Sivaraman
  2013-10-06 15:01     ` Simon Barber
  0 siblings, 1 reply; 7+ messages in thread
From: Anirudh Sivaraman @ 2013-10-06 13:31 UTC (permalink / raw)
  To: Simon Barber; +Cc: bloat-devel

On Sat, Oct 5, 2013 at 11:39 PM, Simon Barber <simon@superduper.net> wrote:
> BQL does make sense, but TQL would be even better - 'Time Queue Limits'.
> Which would work based on an estimate of how much time each packet will take
> to send, and limiting the hardware queue to contain a total mount of 'time'.
> The purpose of the hardware queue is to mask interrupt and other latencies
> involved in refilling an empty queue - a time based phenomenon. Hence time
> is the best metric to control it - with fixed speed interfaced like ethernet
> bytes=time, but not so on wireless.
>

Thank you for your reply. TQL does make more sense for wireless at
least. However, assuming that someone implement a qdisc like CoDel and
attaches it to the wireless interface, doesn't TQL (or for that matter
BQL) lead to two possibly competing control loops (one at the qdisc,
and one at the device driver)?

Anirudh
> Simon
>
>
> On 10/3/2013 11:49 AM, Anirudh Sivaraman wrote:
>>
>> Hi,
>>
>> I am looking into enabling BQL for the ath5k driver, and was wondering
>> if anyone here knows of any prior efforts in this direction. In
>> particular, is BQL even a sensible strategy for wireless drivers?
>> Thank you in advance for any advice you may have in this regard.
>>
>> Anirudh
>> _______________________________________________
>> Bloat-devel mailing list
>> Bloat-devel@lists.bufferbloat.net
>> https://lists.bufferbloat.net/listinfo/bloat-devel
>
>
> _______________________________________________
> Bloat-devel mailing list
> Bloat-devel@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/bloat-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Enabling Byte Queue Limits in the ath5k wireless driver
  2013-10-06 13:31   ` Anirudh Sivaraman
@ 2013-10-06 15:01     ` Simon Barber
  2013-10-06 16:36       ` Anirudh Sivaraman
  0 siblings, 1 reply; 7+ messages in thread
From: Simon Barber @ 2013-10-06 15:01 UTC (permalink / raw)
  To: Anirudh Sivaraman; +Cc: bloat-devel

BQL or TQL are open-loop - there is no feedback. The amount of bytes or 
total packet transmission time in the queue is counted when packets 
enter and leave the queue, and a hard limit of total bytes or total time 
in queue is set. When I say time - I mean that on a packet entering the 
queue the total time the packet will take to transmit is calculated, and 
that time is added to a count to the total time currently in queue. When 
a packet has been transmitted the time is subtracted from the total time 
in queue. There would be no interference with CODEL running in front of 
this.

Simon

On 10/6/2013 6:31 AM, Anirudh Sivaraman wrote:
> On Sat, Oct 5, 2013 at 11:39 PM, Simon Barber <simon@superduper.net> wrote:
>> BQL does make sense, but TQL would be even better - 'Time Queue Limits'.
>> Which would work based on an estimate of how much time each packet will take
>> to send, and limiting the hardware queue to contain a total mount of 'time'.
>> The purpose of the hardware queue is to mask interrupt and other latencies
>> involved in refilling an empty queue - a time based phenomenon. Hence time
>> is the best metric to control it - with fixed speed interfaced like ethernet
>> bytes=time, but not so on wireless.
>>
> Thank you for your reply. TQL does make more sense for wireless at
> least. However, assuming that someone implement a qdisc like CoDel and
> attaches it to the wireless interface, doesn't TQL (or for that matter
> BQL) lead to two possibly competing control loops (one at the qdisc,
> and one at the device driver)?
>
> Anirudh
>> Simon
>>
>>
>> On 10/3/2013 11:49 AM, Anirudh Sivaraman wrote:
>>> Hi,
>>>
>>> I am looking into enabling BQL for the ath5k driver, and was wondering
>>> if anyone here knows of any prior efforts in this direction. In
>>> particular, is BQL even a sensible strategy for wireless drivers?
>>> Thank you in advance for any advice you may have in this regard.
>>>
>>> Anirudh
>>> _______________________________________________
>>> Bloat-devel mailing list
>>> Bloat-devel@lists.bufferbloat.net
>>> https://lists.bufferbloat.net/listinfo/bloat-devel
>>
>> _______________________________________________
>> Bloat-devel mailing list
>> Bloat-devel@lists.bufferbloat.net
>> https://lists.bufferbloat.net/listinfo/bloat-devel


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Enabling Byte Queue Limits in the ath5k wireless driver
  2013-10-06 15:01     ` Simon Barber
@ 2013-10-06 16:36       ` Anirudh Sivaraman
  2013-10-06 21:03         ` Simon Barber
  0 siblings, 1 reply; 7+ messages in thread
From: Anirudh Sivaraman @ 2013-10-06 16:36 UTC (permalink / raw)
  To: Simon Barber; +Cc: bloat-devel

On Sun, Oct 6, 2013 at 11:01 AM, Simon Barber <simon@superduper.net> wrote:
> BQL or TQL are open-loop - there is no feedback. The amount of bytes or
> total packet transmission time in the queue is counted when packets enter
> and leave the queue, and a hard limit of total bytes or total time in queue
> is set. When I say time - I mean that on a packet entering the queue the
> total time the packet will take to transmit is calculated, and that time is
> added to a count to the total time currently in queue. When a packet has
> been transmitted the time is subtracted from the total time in queue. There
> would be no interference with CODEL running in front of this.
>

I thought, based on http://lwn.net/Articles/454390/, that the queue
length is dynamically adjusted by DQL/BQL/TQL. This is the device
driver control loop I was referring to. This queue length in turn
dictates when the dequeue function is called at the qdisc layer, where
CoDel is running. Please correct me if I am wrong here.

Anirudh

> Simon
>
>
> On 10/6/2013 6:31 AM, Anirudh Sivaraman wrote:
>>
>> On Sat, Oct 5, 2013 at 11:39 PM, Simon Barber <simon@superduper.net>
>> wrote:
>>>
>>> BQL does make sense, but TQL would be even better - 'Time Queue Limits'.
>>> Which would work based on an estimate of how much time each packet will
>>> take
>>> to send, and limiting the hardware queue to contain a total mount of
>>> 'time'.
>>> The purpose of the hardware queue is to mask interrupt and other
>>> latencies
>>> involved in refilling an empty queue - a time based phenomenon. Hence
>>> time
>>> is the best metric to control it - with fixed speed interfaced like
>>> ethernet
>>> bytes=time, but not so on wireless.
>>>
>> Thank you for your reply. TQL does make more sense for wireless at
>> least. However, assuming that someone implement a qdisc like CoDel and
>> attaches it to the wireless interface, doesn't TQL (or for that matter
>> BQL) lead to two possibly competing control loops (one at the qdisc,
>> and one at the device driver)?
>>
>> Anirudh
>>>
>>> Simon
>>>
>>>
>>> On 10/3/2013 11:49 AM, Anirudh Sivaraman wrote:
>>>>
>>>> Hi,
>>>>
>>>> I am looking into enabling BQL for the ath5k driver, and was wondering
>>>> if anyone here knows of any prior efforts in this direction. In
>>>> particular, is BQL even a sensible strategy for wireless drivers?
>>>> Thank you in advance for any advice you may have in this regard.
>>>>
>>>> Anirudh
>>>> _______________________________________________
>>>> Bloat-devel mailing list
>>>> Bloat-devel@lists.bufferbloat.net
>>>> https://lists.bufferbloat.net/listinfo/bloat-devel
>>>
>>>
>>> _______________________________________________
>>> Bloat-devel mailing list
>>> Bloat-devel@lists.bufferbloat.net
>>> https://lists.bufferbloat.net/listinfo/bloat-devel
>
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Enabling Byte Queue Limits in the ath5k wireless driver
  2013-10-06 16:36       ` Anirudh Sivaraman
@ 2013-10-06 21:03         ` Simon Barber
  2013-10-08 11:00           ` Anirudh Sivaraman
  0 siblings, 1 reply; 7+ messages in thread
From: Simon Barber @ 2013-10-06 21:03 UTC (permalink / raw)
  To: Anirudh Sivaraman; +Cc: bloat-devel

Indeed - but this is based on underruns while there is more to send - 
once it has established a length that does a good job of keeping the 
hardware fed it should not change much. This control loop will slowly 
catch up with the different speeds wireless packets are sent at (if a 
single link is in use, not multiple links) but it would be better 
controlled and also handle multiple links on one interface (e.g. Access 
point mode, or 11z) properly if packet duration was considered.

Simon

On 10/6/2013 9:36 AM, Anirudh Sivaraman wrote:
> On Sun, Oct 6, 2013 at 11:01 AM, Simon Barber <simon@superduper.net> wrote:
>> BQL or TQL are open-loop - there is no feedback. The amount of bytes or
>> total packet transmission time in the queue is counted when packets enter
>> and leave the queue, and a hard limit of total bytes or total time in queue
>> is set. When I say time - I mean that on a packet entering the queue the
>> total time the packet will take to transmit is calculated, and that time is
>> added to a count to the total time currently in queue. When a packet has
>> been transmitted the time is subtracted from the total time in queue. There
>> would be no interference with CODEL running in front of this.
>>
> I thought, based on http://lwn.net/Articles/454390/, that the queue
> length is dynamically adjusted by DQL/BQL/TQL. This is the device
> driver control loop I was referring to. This queue length in turn
> dictates when the dequeue function is called at the qdisc layer, where
> CoDel is running. Please correct me if I am wrong here.
>
> Anirudh
>
>> Simon
>>
>>
>> On 10/6/2013 6:31 AM, Anirudh Sivaraman wrote:
>>> On Sat, Oct 5, 2013 at 11:39 PM, Simon Barber <simon@superduper.net>
>>> wrote:
>>>> BQL does make sense, but TQL would be even better - 'Time Queue Limits'.
>>>> Which would work based on an estimate of how much time each packet will
>>>> take
>>>> to send, and limiting the hardware queue to contain a total mount of
>>>> 'time'.
>>>> The purpose of the hardware queue is to mask interrupt and other
>>>> latencies
>>>> involved in refilling an empty queue - a time based phenomenon. Hence
>>>> time
>>>> is the best metric to control it - with fixed speed interfaced like
>>>> ethernet
>>>> bytes=time, but not so on wireless.
>>>>
>>> Thank you for your reply. TQL does make more sense for wireless at
>>> least. However, assuming that someone implement a qdisc like CoDel and
>>> attaches it to the wireless interface, doesn't TQL (or for that matter
>>> BQL) lead to two possibly competing control loops (one at the qdisc,
>>> and one at the device driver)?
>>>
>>> Anirudh
>>>> Simon
>>>>
>>>>
>>>> On 10/3/2013 11:49 AM, Anirudh Sivaraman wrote:
>>>>> Hi,
>>>>>
>>>>> I am looking into enabling BQL for the ath5k driver, and was wondering
>>>>> if anyone here knows of any prior efforts in this direction. In
>>>>> particular, is BQL even a sensible strategy for wireless drivers?
>>>>> Thank you in advance for any advice you may have in this regard.
>>>>>
>>>>> Anirudh
>>>>> _______________________________________________
>>>>> Bloat-devel mailing list
>>>>> Bloat-devel@lists.bufferbloat.net
>>>>> https://lists.bufferbloat.net/listinfo/bloat-devel
>>>>
>>>> _______________________________________________
>>>> Bloat-devel mailing list
>>>> Bloat-devel@lists.bufferbloat.net
>>>> https://lists.bufferbloat.net/listinfo/bloat-devel
>>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Enabling Byte Queue Limits in the ath5k wireless driver
  2013-10-06 21:03         ` Simon Barber
@ 2013-10-08 11:00           ` Anirudh Sivaraman
  0 siblings, 0 replies; 7+ messages in thread
From: Anirudh Sivaraman @ 2013-10-08 11:00 UTC (permalink / raw)
  To: Simon Barber; +Cc: bloat-devel

On Sun, Oct 6, 2013 at 5:03 PM, Simon Barber <simon@superduper.net> wrote:
> Indeed - but this is based on underruns while there is more to send - once
> it has established a length that does a good job of keeping the hardware fed
> it should not change much. This control loop will slowly catch up with the
> different speeds wireless packets are sent at (if a single link is in use,
> not multiple links) but it would be better controlled and also handle
> multiple links on one interface (e.g. Access point mode, or 11z) properly if
> packet duration was considered.
>

Ok, that makes a lot of sense. I guess I 'll try implementing BQL
first, followed by TQL, and see what I find.

Anirudh

> Simon
>
>
> On 10/6/2013 9:36 AM, Anirudh Sivaraman wrote:
>>
>> On Sun, Oct 6, 2013 at 11:01 AM, Simon Barber <simon@superduper.net>
>> wrote:
>>>
>>> BQL or TQL are open-loop - there is no feedback. The amount of bytes or
>>> total packet transmission time in the queue is counted when packets enter
>>> and leave the queue, and a hard limit of total bytes or total time in
>>> queue
>>> is set. When I say time - I mean that on a packet entering the queue the
>>> total time the packet will take to transmit is calculated, and that time
>>> is
>>> added to a count to the total time currently in queue. When a packet has
>>> been transmitted the time is subtracted from the total time in queue.
>>> There
>>> would be no interference with CODEL running in front of this.
>>>
>> I thought, based on http://lwn.net/Articles/454390/, that the queue
>> length is dynamically adjusted by DQL/BQL/TQL. This is the device
>> driver control loop I was referring to. This queue length in turn
>> dictates when the dequeue function is called at the qdisc layer, where
>> CoDel is running. Please correct me if I am wrong here.
>>
>> Anirudh
>>
>>> Simon
>>>
>>>
>>> On 10/6/2013 6:31 AM, Anirudh Sivaraman wrote:
>>>>
>>>> On Sat, Oct 5, 2013 at 11:39 PM, Simon Barber <simon@superduper.net>
>>>> wrote:
>>>>>
>>>>> BQL does make sense, but TQL would be even better - 'Time Queue
>>>>> Limits'.
>>>>> Which would work based on an estimate of how much time each packet will
>>>>> take
>>>>> to send, and limiting the hardware queue to contain a total mount of
>>>>> 'time'.
>>>>> The purpose of the hardware queue is to mask interrupt and other
>>>>> latencies
>>>>> involved in refilling an empty queue - a time based phenomenon. Hence
>>>>> time
>>>>> is the best metric to control it - with fixed speed interfaced like
>>>>> ethernet
>>>>> bytes=time, but not so on wireless.
>>>>>
>>>> Thank you for your reply. TQL does make more sense for wireless at
>>>> least. However, assuming that someone implement a qdisc like CoDel and
>>>> attaches it to the wireless interface, doesn't TQL (or for that matter
>>>> BQL) lead to two possibly competing control loops (one at the qdisc,
>>>> and one at the device driver)?
>>>>
>>>> Anirudh
>>>>>
>>>>> Simon
>>>>>
>>>>>
>>>>> On 10/3/2013 11:49 AM, Anirudh Sivaraman wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I am looking into enabling BQL for the ath5k driver, and was wondering
>>>>>> if anyone here knows of any prior efforts in this direction. In
>>>>>> particular, is BQL even a sensible strategy for wireless drivers?
>>>>>> Thank you in advance for any advice you may have in this regard.
>>>>>>
>>>>>> Anirudh
>>>>>> _______________________________________________
>>>>>> Bloat-devel mailing list
>>>>>> Bloat-devel@lists.bufferbloat.net
>>>>>> https://lists.bufferbloat.net/listinfo/bloat-devel
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Bloat-devel mailing list
>>>>> Bloat-devel@lists.bufferbloat.net
>>>>> https://lists.bufferbloat.net/listinfo/bloat-devel
>>>
>>>
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2013-10-08 11:00 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-03 18:49 Enabling Byte Queue Limits in the ath5k wireless driver Anirudh Sivaraman
2013-10-06  3:39 ` Simon Barber
2013-10-06 13:31   ` Anirudh Sivaraman
2013-10-06 15:01     ` Simon Barber
2013-10-06 16:36       ` Anirudh Sivaraman
2013-10-06 21:03         ` Simon Barber
2013-10-08 11:00           ` Anirudh Sivaraman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox