Search Linux Wireless

Re: mac80211 queue handling in multi-channel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a plot of applying queue management on top of the existing
queue structure, only one queue active, against 50 saturating streams
against a voip-like ping.

http://www.teklibre.com/~d/bloat/ping_log.ps

To explain it the first part of the plot is the start of the test,
the second part is after a brief, small rate change downwards, the
drop to 0 is the end of the first test, then it goes back and starts
another.

While the clustering at the ~60-90ms line is good and due to sfqred
doing it's job, it's connected to and unable to control the large,
floppy rubber hose of buffering beneath it, translating out to ~100ms
of jitter on more normal spiky loads under good conditions and worse
on bad.

A flaw of this particular plot is it measures intrinsic buffering on
both sides of the connection, but it's still a lot of intrinsic
latency. It would be nice to be able to apply BQL or BQL-like
techniques to this, because that white space underneath the plot gets
much more latent at lower rates.

On Mon, Feb 27, 2012 at 4:10 PM, Dave Taht <dave.taht@xxxxxxxxx> wrote:
> On Mon, Feb 27, 2012 at 12:49 PM, Johannes Berg
> <johannes@xxxxxxxxxxxxxxxx> wrote:
>
>> As a consequence, I'm thinking that we should redesign the mac80211 /
>> driver queue API to mirror more closely the kind of queues hardware
>> really has.
>
> I'd like the driver queues to mirror more closely the kinds of
> connections the hardware really has. I realize that this is more of an
> AP orientation than a wireless client orientation, but with wildly
> different rates between connected devices bad things happen.
>
> Secondly, my take on 802.11e QoS and wireless-n aggregation is that
> aggregation wins nearly every time; all
> 802.11e does is bloat up the buffers.
>
>> To recap: today, almost all drivers expose four queues to mac80211 for
>> the four ACs. In reality, many have many more queues, e.g. in iwlwifi:
>>  * 4 for the first vif
>>  * 4 for the second vif
>>  * 1 for CAB (content after [DTIM] beacon)
>>  * 1 for off-channel
>>
>> They are mapped as follows:
>>  * all vif ACs -> 4 ACs
>>  * off-channel -> BE
>>  * CAB         -> BE (I believe, maybe all?)
>>
>> Thus when e.g. in our driver the BE queue for the second VIF is full, we
>> stop all traffic across all VIFs. When both VIFs are on the same
>> channel, this isn't really a problem. However, when they are on
>> different channels, there could be vastly different performance
>> characteristics on those two channels due to interference etc.
>
> And even more differences based on the destination's characteristics.
>
>
>
>
> --
> Dave Täht
> SKYPE: davetaht
> US Tel: 1-239-829-5608
> http://www.bufferbloat.net



-- 
Dave Täht
SKYPE: davetaht
US Tel: 1-239-829-5608
http://www.bufferbloat.net
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux