[Make-wifi-fast] [PATCH] mac80211: Adjust TSQ pacing shift

Ryan Hsu ryanhsu at qti.qualcomm.com
Tue Feb 13 19:43:25 EST 2018


On 02/02/2018 07:11 AM, Toke Høiland-Jørgensen wrote:

> Since we now have the convenient helper to do so, actually adjust the
> TSQ pacing shift for packets going out over a WiFi interface. This
> significantly improves throughput for locally-originated TCP
> connections. The default pacing shift of 10 corresponds to ~1ms of
> queued packet data. Adjusting this to a shift of 8 (i.e. ~4ms) improves
> 1-hop throughput for ath9k by a factor of 3, whereas increasing it more
> has diminishing returns.
>
> Achieved throughput for different values of sk_pacing_shift (average of
> 5 iterations of 10-sec netperf runs to a host on the other side of the
> WiFi hop):
>
> sk_pacing_shift 10:  43.21 Mbps (pre-patch)
> sk_pacing_shift  9:  78.17 Mbps
> sk_pacing_shift  8: 123.94 Mbps
> sk_pacing_shift  7: 128.31 Mbps
>
> Latency for competing flows increases from ~3 ms to ~10 ms with this
> change. This is about the same magnitude of queueing latency induced by
> flows that are not originated on the WiFi device itself (and so are not
> limited by TSQ).
>
> Signed-off-by: Toke Høiland-Jørgensen <toke at toke.dk>
> ---
>  net/mac80211/tx.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
> index 25904af38839..69722504e3e1 100644
> --- a/net/mac80211/tx.c
> +++ b/net/mac80211/tx.c
> @@ -3574,6 +3574,14 @@ void __ieee80211_subif_start_xmit(struct sk_buff *skb,
>  	if (!IS_ERR_OR_NULL(sta)) {
>  		struct ieee80211_fast_tx *fast_tx;
>  
> +		/* We need a bit of data queued to build aggregates properly, so
> +		 * instruct the TCP stack to allow more than a single ms of data
> +		 * to be queued in the stack. The value is a bit-shift of 1
> +		 * second, so 8 is ~4ms of queued data. Only affects local TCP
> +		 * sockets.
> +		 */
> +		sk_pacing_shift_update(skb->sk, 8);
> +
>  		fast_tx = rcu_dereference(sta->fast_tx);
>  
>  		if (fast_tx &&

I knew increasing the value doesn't help much after 8 for ath9k, but I ran a
testing on ath10k that 6 or 7 is having optimal number.
Since ath10k/11ac device has higher bandwidth than ath9k/11n, can we consider
to use to 6 or 7 to accommodate that effect?

   tx (mbps) cpu usage (%)
5    404       28.5
6    398       13.8
7    401        8
8    378        5
9    230        4.5
10   79.6       2

I have a quad core machine.

$ cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 58
model name	: Intel(R) Core(TM) i5-3380M CPU @ 2.90GHz

-- 
Ryan Hsu


More information about the Make-wifi-fast mailing list