Toke <div><br></div><div>I don't fully understand your plots but it would be useful to report the  physical rate of the stations.</div>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.<span></span><div>Than you can understand if your gain is what you should expect or if the implementation is not yet done.<br><div><br>On Friday, 3 June 2016, Toke Høiland-Jørgensen <<a href="mailto:toke@toke.dk">toke@toke.dk</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This patch set is my first pass at attempting to add an airtime fairness<br>
enforcing scheduler to ath9k (for use in access point mode). For some<br>
background on this approach and its possible benefits see this paper:<br>
<a href="https://www.usenix.org/event/usenix04/tech/general/full_papers/tan/tan.pdf" target="_blank">https://www.usenix.org/event/usenix04/tech/general/full_papers/tan/tan.pdf</a><br>
<br>
This is still very preliminary work, but I thought I'd post it for<br>
comment anyway. Tentatively, it's looking like it gives some<br>
improvement, but is by no means perfect in what it is achieving. See<br>
<a href="https://blog.tohojo.dk/2016/06/a-first-stab-at-an-airtime-fairness-scheduler-for-ath9k.html" target="_blank">https://blog.tohojo.dk/2016/06/a-first-stab-at-an-airtime-fairness-scheduler-for-ath9k.html</a><br>
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.<br>
<br>
To work, the scheduler needs per-station queueing, so this patch series<br>
also includes Michal's patch to not have qdiscs on the interface when<br>
wake_tx_queue is present, and Tim's patch to add wake_tx_queue to ath9k.<br>
The latter I reworked to not require the global variable renaming, since<br>
I found that change to be too confusing after having spent time getting<br>
used to the ath9k names for things (I put my own name on this commit and<br>
added a second Signed-off-by; apologies if this is not the right way to<br>
do things for this kind of rework).<br>
<br>
The scheduler patch set itself is in three parts: The first patch simply<br>
adds airtime accounting and exports it to a per-station debugfs file<br>
(which the latest git version of Flent knows how to read). The second<br>
patch adds the airtime scheduler using only the TX airtime information.<br>
Finally the third patch adds in RX airtime to the deficit used by the<br>
scheduler. This last part is not always a win (see the blog post linked<br>
above), but I haven't tested it extensively. So feel free to test with<br>
or without the last patch.<br>
<br>
There is some code duplication between the debugfs code and the<br>
scheduler which I haven't removed yet to be able to easily switch<br>
between having the scheduler use the airtime values and simply<br>
accounting them for debugging purposes.<br>
<br>
Comments and test results very welcome! :)<br>
<br>
-Toke<br>
<br>
<br>
<br>
Michal Kazior (1):<br>
  mac80211: skip netdev queue control with software queuing<br>
<br>
Toke Høiland-Jørgensen (4):<br>
  ath9k: use mac80211 intermediate software queues<br>
  ath9k: Add airstame stats to per-station debugfs<br>
  ath9k: Add a per-station airtime deficit scheduler<br>
  ath9k: Count RX airtime in airtime deficit.<br>
<br>
 drivers/net/wireless/ath/ath9k/ath9k.h     |  27 +++-<br>
 drivers/net/wireless/ath/ath9k/channel.c   |  12 +-<br>
 drivers/net/wireless/ath/ath9k/debug.h     |  29 ++++<br>
 drivers/net/wireless/ath/ath9k/debug_sta.c | 144 ++++++++++++++++++-<br>
 drivers/net/wireless/ath/ath9k/init.c      |   1 +<br>
 drivers/net/wireless/ath/ath9k/main.c      |   7 +-<br>
 drivers/net/wireless/ath/ath9k/recv.c      |  50 +++++++<br>
 drivers/net/wireless/ath/ath9k/xmit.c      | 222 ++++++++++++++++++++++++-----<br>
 include/net/mac80211.h                     |   4 -<br>
 net/mac80211/ieee80211_i.h                 |   2 +-<br>
 net/mac80211/iface.c                       |  18 ++-<br>
 net/mac80211/main.c                        |   3 -<br>
 net/mac80211/sta_info.c                    |   2 +-<br>
 net/mac80211/tx.c                          |  82 ++++++-----<br>
 net/mac80211/util.c                        |  11 +-<br>
 15 files changed, 511 insertions(+), 103 deletions(-)<br>
<br>
--<br>
2.7.4<br>
_______________________________________________<br>
Make-wifi-fast mailing list<br>
<a href="javascript:;" onclick="_e(event, 'cvml', 'Make-wifi-fast@lists.bufferbloat.net')">Make-wifi-fast@lists.bufferbloat.net</a><br>
<a href="https://lists.bufferbloat.net/listinfo/make-wifi-fast" target="_blank">https://lists.bufferbloat.net/listinfo/make-wifi-fast</a><br>
</blockquote></div></div>