CoDel AQM discussions
 help / color / mirror / Atom feed
From: Michal Kazior <michal.kazior@tieto.com>
To: "ath10k@lists.infradead.org" <ath10k@lists.infradead.org>
Cc: linux-wireless <linux-wireless@vger.kernel.org>,
	Dave Taht <dave.taht@gmail.com>,
	 make-wifi-fast@lists.bufferbloat.net,
	codel@lists.bufferbloat.net,
	 Michal Kazior <michal.kazior@tieto.com>
Subject: Re: [Codel] [RFC] ath10k: implement dql for htt tx
Date: Fri, 25 Mar 2016 10:55:38 +0100	[thread overview]
Message-ID: <CA+BoTQk7q7VerNC1KZK49REHn9rfo6sG5zW54P=-K3XkOL77pQ@mail.gmail.com> (raw)
In-Reply-To: <1458898743-21118-1-git-send-email-michal.kazior@tieto.com>

[-- Attachment #1: Type: text/plain, Size: 3575 bytes --]

On 25 March 2016 at 10:39, Michal Kazior <michal.kazior@tieto.com> wrote:
> This implements a very naive dynamic queue limits
> on the flat HTT Tx. In some of my tests (using
> flent) it seems to reduce induced latency by
> orders of magnitude (e.g. when enforcing 6mbps
> tx rates 2500ms -> 150ms). But at the same time it
> introduces TCP throughput buildup over time
> (instead of immediate bump to max). More
> importantly I didn't observe it to make things
> much worse (yet).
>
> Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
> ---
>
> I'm not sure yet if it's worth to consider this
> patch for merging per se. My motivation was to
> have something to prove mac80211 fq works and to
> see if DQL can learn the proper queue limit in
> face of wireless rate control at all.
>
> I'll do a follow up post with flent test results
> and some notes.

Here's a short description what-is-what test naming:
 - sw/fq contains only txq/flow stuff (no scheduling, no txop queue limits)
 - sw/ath10k_dql contains only ath10k patch which applies DQL to
driver-firmware tx queue naively
 - sw/fq+ath10k_dql is obvious
 - sw/base today's ath.git/master checkout used as base
 - "veryfast" tests TCP tput to reference receiver (4 antennas)
 - "fast" tests TCP tput to ref receiver (1 antenna)
 - "slow" tests TCP tput to ref receiver (1 *unplugged* antenna)
 - "fast+slow" tests sharing between "fast" and "slow"
 - "autorate" uses default rate control
 - "rate6m" uses fixed-tx-rate at 6mbps
 - the test uses QCA9880 w/ 10.1.467
 - no rrul tests, sorry Dave! :)

\
Observations / conclusions:
 - DQL builds up throughput slowly on "veryfast"; in some tests it
doesn't get to reach peak (roughly 210mbps average) because the test
is too short

 - DQL shows better latency results in almost all cases compared to
the txop based scheduling from my mac80211 RFC (but i haven't
thoroughly looked at *all* the data; I might've missed a case where it
performs worse)

 - latency improvement seen on sw/ath10k_dql @ rate6m,fast compared to
sw/base (1800ms -> 160ms) can be explained by the fact that txq AC
limit is 256 and since all TCP streams run on BE (and fq_codel as the
qdisc) the induced txq latency is 256 * (1500 / (6*1024*1024/8.)) / 4
= ~122ms which is pretty close to the test data (the formula ignores
MAC overhead, so the latency in practice is larger). Once you consider
the overhead and in-flight packets on driver-firmware tx queue 160ms
doesn't seem strange. Moreover when you compare the same case with
sw/fq+ath10k_dql you can clearly see the advantage of having fq_codel
in mac80211 software queuing - the latency drops by (another) order of
magnitude because now incomming ICMPs are treated as new, bursty flows
and get fed to the device quickly.

 - slow+fast case still sucks but that's expected because DQL hasn't
been applied per-station

 - sw/fq has lower peak throughput ("veryfast") compared to sw/base
(this actually proves current - and very young least to say - ath10k
wake-tx-queue implementation is deficient; ath10k_dql improves it and
sw/fq+ath10k_dql climbs up to the max throughput over time)


To sum things up:
 - DQL might be able to replace the explicit txop queue limiting
(which requires rate control info)
 - mac80211 fair queuing works


A few plots for quick and easy reference:

  http://imgur.com/a/TnvbQ


Michał

PS. I'm not feeling comfortable attaching 1MB attachment to a mailing
list. Is this okay or should I use something else next time?

[-- Attachment #2: dql.tar.gz --]
[-- Type: application/x-gzip, Size: 1196356 bytes --]

  reply	other threads:[~2016-03-25  9:55 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-25  9:39 Michal Kazior
2016-03-25  9:55 ` Michal Kazior [this message]
2016-03-26 16:44   ` Dave Taht
2016-03-29  7:49     ` Michal Kazior
2016-03-29 15:54       ` Ben Greear
2016-03-30  9:22         ` Michal Kazior
2016-03-30 15:28           ` Ben Greear
2016-03-31  6:39             ` Michal Kazior
2016-03-30  0:57       ` Dave Taht
2016-03-30 10:04         ` Michal Kazior
2016-04-01  8:01   ` Michal Kazior

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/codel.lists.bufferbloat.net/

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

  git send-email \
    --in-reply-to='CA+BoTQk7q7VerNC1KZK49REHn9rfo6sG5zW54P=-K3XkOL77pQ@mail.gmail.com' \
    --to=michal.kazior@tieto.com \
    --cc=ath10k@lists.infradead.org \
    --cc=codel@lists.bufferbloat.net \
    --cc=dave.taht@gmail.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=make-wifi-fast@lists.bufferbloat.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