All of lore.kernel.org
 help / color / mirror / Atom feed
From: Felix Fietkau <nbd@nbd.name>
To: "Toke Høiland-Jørgensen" <toke@redhat.com>,
	linux-wireless@vger.kernel.org
Cc: johannes@sipsolutions.net
Subject: Re: [PATCH 4/6] mac80211: minstrel_ht: significantly redesign the rate probing strategy
Date: Mon, 25 Jan 2021 21:46:41 +0100	[thread overview]
Message-ID: <3ac94bcf-4c76-9c1e-c903-0810d2067b3a@nbd.name> (raw)
In-Reply-To: <87o8hdmdqs.fsf@toke.dk>


On 2021-01-25 12:56, Toke Høiland-Jørgensen wrote:
> Felix Fietkau <nbd@nbd.name> writes:
> 
>> The biggest flaw in current minstrel_ht is the fact that it needs way too
>> many probing packets to be able to quickly find the best rate.
>> Depending on the wifi hardware and operating mode, this can significantly
>> reduce throughput when not operating at the highest available data rate.
>>
>> In order to be able to significantly reduce the amount of rate sampling,
>> we need a much smarter selection of probing rates.
>>
>> The new approach introduced by this patch maintains a limited set of
>> available rates to be tested during a statistics window.
>>
>> They are split into distinct categories:
>> - MINSTREL_SAMPLE_TYPE_INC - incremental rate upgrade:
>>   Pick the next rate group and find the first rate that is faster than
>>   the current max. throughput rate
>> - MINSTREL_SAMPLE_TYPE_JUMP - random testing of higher rates:
>>   Pick a random rate from the next group that is faster than the current
>>   max throughput rate. This allows faster adaptation when the link changes
>>   significantly
>> - MINSTREL_SAMPLE_TYPE_SLOW - test a rate between max_prob, max_tp2 and
>>   max_tp in order to reduce the gap between them
>>
>> In order to prioritize sampling, every 6 attempts are split into 3x INC,
>> 2x JUMP, 1x SLOW.
>>
>> Available rates are checked and refilled on every stats window update.
> 
> Very cool!
> 
>> With this approach, we finally get a very small delta in throughput when
>> comparing setting the optimal data rate as a fixed rate vs normal rate
>> control operation.
> 
> Can you quantify this "very small delta"? Would love to see some
> benchmark data :)
Based on a quick test it seems to be around 5% (sometimes less) at VHT80
MCS6 nss=4 with ~350 mbit/s TCP throughput. I guess I might be able to
bring that down even further, once I optimize it some more.

- Felix

  reply	other threads:[~2021-01-25 20:47 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-24 12:28 [PATCH 1/6] mac80211: minstrel_ht: use bitfields to encode rate indexes Felix Fietkau
2021-01-24 12:28 ` [PATCH 2/6] mac80211: minstrel_ht: update total packets counter in tx status path Felix Fietkau
2021-01-24 12:28 ` [PATCH 3/6] mac80211: minstrel_ht: reduce the need to sample slower rates Felix Fietkau
2021-01-24 12:28 ` [PATCH 4/6] mac80211: minstrel_ht: significantly redesign the rate probing strategy Felix Fietkau
2021-01-25 11:56   ` Toke Høiland-Jørgensen
2021-01-25 20:46     ` Felix Fietkau [this message]
2021-01-25 21:21       ` Toke Høiland-Jørgensen
2021-01-25 21:27         ` Felix Fietkau
2021-01-24 12:28 ` [PATCH 5/6] mac80211: minstrel_ht: show sampling rates in debugfs Felix Fietkau
2021-01-24 12:28 ` [PATCH 6/6] mac80211: minstrel_ht: remove sample rate switching code for constrained devices Felix Fietkau
2021-01-25 19:25 ` [PATCH 1/6] mac80211: minstrel_ht: use bitfields to encode rate indexes kernel test robot
2021-01-25 19:25   ` kernel test robot

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3ac94bcf-4c76-9c1e-c903-0810d2067b3a@nbd.name \
    --to=nbd@nbd.name \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    --cc=toke@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.