From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yw0-x229.google.com (mail-yw0-x229.google.com [IPv6:2607:f8b0:4002:c05::229]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 0C6443B2BC for ; Sat, 4 Jun 2016 11:24:42 -0400 (EDT) Received: by mail-yw0-x229.google.com with SMTP id h19so105987174ywc.0 for ; Sat, 04 Jun 2016 08:24:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=t/z257jrXsWjA0/NxoQL4C2XGNkAgK5lz2qY9TDFzeg=; b=eHt/zzro911P/p2LQpHgCixs2Y5WG4chnxZ/TfaCA7b8NN9IYtbYX782UNXDSDqCO3 7PATzUtT3qruad9wmqNL/9tUZ7kQHsnokijvlUcpCNB9JDI0OUyiaKxR6HEFkRCINtu3 Lcoj8qTO2pGaDHHu/i0p9ARUEoWvIsLO9gQadSqHLcWs/HPF7cmpzOCBdvhSttdk62Qq SQxnl6DqJmjE4/VrfrF7PpCWFqmnDrcaDxeG60BeTnYCE6hbJatKMTLzKQM34zEBI73z XI6YFXDaiZs8Ft/zKrgoRMQ6EtnYj+c65UmcvPLhbwxfAtnE8q/YPdvRpdgJvtUpSkuF ++bA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=t/z257jrXsWjA0/NxoQL4C2XGNkAgK5lz2qY9TDFzeg=; b=bUkIk0XZwhKonousB78SlXQMZ/XpK2oIaJKh85YGKyBGvN/yxtYcCiTmzLLlT3WQKa DjFW+FPmdXHA4t/q/r24APmY/vQc8E8p7ZQxTUiCp+lE3bl18PYFkSwMKJNbfb2ZIc3z VfBfT4o5PuSemVh3MDNpka41ghNW/6ijuQ8xRlwSijEoJJWfVtTcdgCTGm1+Cx0XM5g4 895IK1DGcCycYWm8XQvO/V7YuM+AFlru8dh5jMb5EoUhlXBFJ7rWzH8BaiHrX/eCWCHT Mg02j+28kHP5mMISYRoH8UPnl7l1qdDz4DVY1xnn+yZphqb5NR6/SxRmGDRPpjKVaMuB AIBg== X-Gm-Message-State: ALyK8tJwdg6hOw62P54FTSwkVRaGdHPuBAb7TqSrV+RX489voWPc7lokCt1dPY26nd7EuzVHI0oVVKRYtMJ0mQ== MIME-Version: 1.0 X-Received: by 10.37.223.5 with SMTP id w5mr5874270ybg.139.1465053882337; Sat, 04 Jun 2016 08:24:42 -0700 (PDT) Received: by 10.37.74.134 with HTTP; Sat, 4 Jun 2016 08:24:42 -0700 (PDT) In-Reply-To: <20160603165144.17356-1-toke@toke.dk> References: <20160603165144.17356-1-toke@toke.dk> Date: Sat, 4 Jun 2016 17:24:42 +0200 Message-ID: From: Luca Muscariello To: =?UTF-8?B?VG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2Vu?= Cc: "linux-wireless@vger.kernel.org" , "make-wifi-fast@lists.bufferbloat.net" , "ath9k-devel@lists.ath9k.org" Content-Type: multipart/alternative; boundary=94eb2c089a923bd4a405347570ae Subject: Re: [Make-wifi-fast] [RFC/RFT 0/5] Adding an airtime fairness scheduler to ath9k X-BeenThere: make-wifi-fast@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 04 Jun 2016 15:24:43 -0000 --94eb2c089a923bd4a405347570ae Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Toke I don't fully understand your plots but it would be useful to report the physical rate of the stations. As a benchmark, if you know the physical rates assuming they are also optimally chosen (by minstrel for instance ) and stations don't move, the long term throughout can be computed ( e.g. for TCP ) assuming air time fairness. Than you can understand if your gain is what you should expect or if the implementation is not yet done. On Friday, 3 June 2016, Toke H=C3=B8iland-J=C3=B8rgensen wro= te: > This patch set is my first pass at attempting to add an airtime fairness > enforcing scheduler to ath9k (for use in access point mode). For some > background on this approach and its possible benefits see this paper: > https://www.usenix.org/event/usenix04/tech/general/full_papers/tan/tan.pd= f > > This is still very preliminary work, but I thought I'd post it for > comment anyway. Tentatively, it's looking like it gives some > improvement, but is by no means perfect in what it is achieving. See > > https://blog.tohojo.dk/2016/06/a-first-stab-at-an-airtime-fairness-schedu= ler-for-ath9k.html > for some graphs of the patch set. I'm seeing roughly a 15% improvement > in aggregate throughput in the presence of a slow station. > > To work, the scheduler needs per-station queueing, so this patch series > also includes Michal's patch to not have qdiscs on the interface when > wake_tx_queue is present, and Tim's patch to add wake_tx_queue to ath9k. > The latter I reworked to not require the global variable renaming, since > I found that change to be too confusing after having spent time getting > used to the ath9k names for things (I put my own name on this commit and > added a second Signed-off-by; apologies if this is not the right way to > do things for this kind of rework). > > The scheduler patch set itself is in three parts: The first patch simply > adds airtime accounting and exports it to a per-station debugfs file > (which the latest git version of Flent knows how to read). The second > patch adds the airtime scheduler using only the TX airtime information. > Finally the third patch adds in RX airtime to the deficit used by the > scheduler. This last part is not always a win (see the blog post linked > above), but I haven't tested it extensively. So feel free to test with > or without the last patch. > > There is some code duplication between the debugfs code and the > scheduler which I haven't removed yet to be able to easily switch > between having the scheduler use the airtime values and simply > accounting them for debugging purposes. > > Comments and test results very welcome! :) > > -Toke > > > > Michal Kazior (1): > mac80211: skip netdev queue control with software queuing > > Toke H=C3=B8iland-J=C3=B8rgensen (4): > ath9k: use mac80211 intermediate software queues > ath9k: Add airstame stats to per-station debugfs > ath9k: Add a per-station airtime deficit scheduler > ath9k: Count RX airtime in airtime deficit. > > drivers/net/wireless/ath/ath9k/ath9k.h | 27 +++- > drivers/net/wireless/ath/ath9k/channel.c | 12 +- > drivers/net/wireless/ath/ath9k/debug.h | 29 ++++ > drivers/net/wireless/ath/ath9k/debug_sta.c | 144 ++++++++++++++++++- > drivers/net/wireless/ath/ath9k/init.c | 1 + > drivers/net/wireless/ath/ath9k/main.c | 7 +- > drivers/net/wireless/ath/ath9k/recv.c | 50 +++++++ > drivers/net/wireless/ath/ath9k/xmit.c | 222 > ++++++++++++++++++++++++----- > include/net/mac80211.h | 4 - > net/mac80211/ieee80211_i.h | 2 +- > net/mac80211/iface.c | 18 ++- > net/mac80211/main.c | 3 - > net/mac80211/sta_info.c | 2 +- > net/mac80211/tx.c | 82 ++++++----- > net/mac80211/util.c | 11 +- > 15 files changed, 511 insertions(+), 103 deletions(-) > > -- > 2.7.4 > _______________________________________________ > Make-wifi-fast mailing list > Make-wifi-fast@lists.bufferbloat.net > https://lists.bufferbloat.net/listinfo/make-wifi-fast > --94eb2c089a923bd4a405347570ae Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Toke=C2=A0

I don't fully=C2=A0understand your plots = but it would be useful to report=C2=A0the=C2=A0=C2=A0physical rate of the s= tations.
As a benchmark, if you know the physical rates assuming they = are also optimally chosen (by minstrel for instance ) and stations don'= t move, the long term throughout can be computed ( e.g.=C2=A0for TCP ) assu= ming air time fairness.
Than you can understand if your ga= in is what you should expect or if the implementation is not yet done.
<= div>
On Friday, 3 June 2016, Toke H=C3=B8iland-J=C3=B8rgensen <toke@toke.dk> wrote:
This patch set is my first pass at attempting to add an airti= me fairness
enforcing scheduler to ath9k (for use in access point mode). For some
background on this approach and its possible benefits see this paper:
https://www.usenix.org/event/usenix04/tech/ge= neral/full_papers/tan/tan.pdf

This is still very preliminary work, but I thought I'd post it for
comment anyway. Tentatively, it's looking like it gives some
improvement, but is by no means perfect in what it is achieving. See
https://blog.tohojo.dk/2016/= 06/a-first-stab-at-an-airtime-fairness-scheduler-for-ath9k.html
for some graphs of the patch set. I'm seeing roughly a 15% improvement<= br> in aggregate throughput in the presence of a slow station.

To work, the scheduler needs per-station queueing, so this patch series
also includes Michal's patch to not have qdiscs on the interface when wake_tx_queue is present, and Tim's patch to add wake_tx_queue to ath9k= .
The latter I reworked to not require the global variable renaming, since I found that change to be too confusing after having spent time getting
used to the ath9k names for things (I put my own name on this commit and added a second Signed-off-by; apologies if this is not the right way to
do things for this kind of rework).

The scheduler patch set itself is in three parts: The first patch simply adds airtime accounting and exports it to a per-station debugfs file
(which the latest git version of Flent knows how to read). The second
patch adds the airtime scheduler using only the TX airtime information.
Finally the third patch adds in RX airtime to the deficit used by the
scheduler. This last part is not always a win (see the blog post linked
above), but I haven't tested it extensively. So feel free to test with<= br> or without the last patch.

There is some code duplication between the debugfs code and the
scheduler which I haven't removed yet to be able to easily switch
between having the scheduler use the airtime values and simply
accounting them for debugging purposes.

Comments and test results very welcome! :)

-Toke



Michal Kazior (1):
=C2=A0 mac80211: skip netdev queue control with software queuing

Toke H=C3=B8iland-J=C3=B8rgensen (4):
=C2=A0 ath9k: use mac80211 intermediate software queues
=C2=A0 ath9k: Add airstame stats to per-station debugfs
=C2=A0 ath9k: Add a per-station airtime deficit scheduler
=C2=A0 ath9k: Count RX airtime in airtime deficit.

=C2=A0drivers/net/wireless/ath/ath9k/ath9k.h=C2=A0 =C2=A0 =C2=A0|=C2=A0 27 = +++-
=C2=A0drivers/net/wireless/ath/ath9k/channel.c=C2=A0 =C2=A0|=C2=A0 12 +- =C2=A0drivers/net/wireless/ath/ath9k/debug.h=C2=A0 =C2=A0 =C2=A0|=C2=A0 29 = ++++
=C2=A0drivers/net/wireless/ath/ath9k/debug_sta.c | 144 ++++++++++++++++++-<= br> =C2=A0drivers/net/wireless/ath/ath9k/init.c=C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2= =A01 +
=C2=A0drivers/net/wireless/ath/ath9k/main.c=C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2= =A07 +-
=C2=A0drivers/net/wireless/ath/ath9k/recv.c=C2=A0 =C2=A0 =C2=A0 |=C2=A0 50 = +++++++
=C2=A0drivers/net/wireless/ath/ath9k/xmit.c=C2=A0 =C2=A0 =C2=A0 | 222 +++++= +++++++++++++++++++-----
=C2=A0include/net/mac80211.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A04 -
=C2=A0net/mac80211/ieee80211_i.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A02 +-
=C2=A0net/mac80211/iface.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 18 ++-
=C2=A0net/mac80211/main.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A03 -
=C2=A0net/mac80211/sta_info.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A02 +-
=C2=A0net/mac80211/tx.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 82 ++++++-----
=C2=A0net/mac80211/util.c=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 11 +-
=C2=A015 files changed, 511 insertions(+), 103 deletions(-)

--
2.7.4
_______________________________________________
Make-wifi-fast mailing list
Make-wifi-fast@lists.bufferbloat.net
https://lists.bufferbloat.net/listinfo/make-wifi-fast
--94eb2c089a923bd4a405347570ae--