mac80211: increase airtime scheduler quantum
improves performance by requiring fewer iterations over tx queues Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
		| @@ -0,0 +1,53 @@ | ||||
| From: Felix Fietkau <nbd@nbd.name> | ||||
| Date: Sun, 26 Jun 2022 11:43:25 +0200 | ||||
| Subject: [PATCH] mac80211: increase quantum for airtime scheduler | ||||
|  | ||||
| Given the typical AQL budget and queue length, a quantum of 256 with the | ||||
| default station weight often requires iterating over all queues frequently, | ||||
| until one of them becomes eligible. | ||||
| Improve performance by using 8 times station weight as scheduler quantum | ||||
|  | ||||
| Signed-off-by: Felix Fietkau <nbd@nbd.name> | ||||
| --- | ||||
|  | ||||
| --- a/net/mac80211/ieee80211_i.h | ||||
| +++ b/net/mac80211/ieee80211_i.h | ||||
| @@ -90,6 +90,8 @@ extern const u8 ieee80211_ac_to_qos_mask | ||||
|   */ | ||||
|  #define AIRTIME_ACTIVE_DURATION (HZ / 10) | ||||
|   | ||||
| +#define AIRTIME_QUANTUM_SHIFT	3 | ||||
| + | ||||
|  struct ieee80211_bss { | ||||
|  	u32 device_ts_beacon, device_ts_presp; | ||||
|   | ||||
| --- a/net/mac80211/tx.c | ||||
| +++ b/net/mac80211/tx.c | ||||
| @@ -3894,7 +3894,7 @@ struct ieee80211_txq *ieee80211_next_txq | ||||
|   | ||||
|  		if (deficit < 0) | ||||
|  			sta->airtime[txqi->txq.ac].deficit += | ||||
| -				sta->airtime_weight; | ||||
| +				sta->airtime_weight << AIRTIME_QUANTUM_SHIFT; | ||||
|   | ||||
|  		if (deficit < 0 || !aql_check) { | ||||
|  			list_move_tail(&txqi->schedule_order, | ||||
| @@ -4037,7 +4037,8 @@ bool ieee80211_txq_may_transmit(struct i | ||||
|  		} | ||||
|  		sta = container_of(iter->txq.sta, struct sta_info, sta); | ||||
|  		if (ieee80211_sta_deficit(sta, ac) < 0) | ||||
| -			sta->airtime[ac].deficit += sta->airtime_weight; | ||||
| +			sta->airtime[ac].deficit += sta->airtime_weight << | ||||
| +						    AIRTIME_QUANTUM_SHIFT; | ||||
|  		list_move_tail(&iter->schedule_order, &local->active_txqs[ac]); | ||||
|  	} | ||||
|   | ||||
| @@ -4045,7 +4046,7 @@ bool ieee80211_txq_may_transmit(struct i | ||||
|  	if (sta->airtime[ac].deficit >= 0) | ||||
|  		goto out; | ||||
|   | ||||
| -	sta->airtime[ac].deficit += sta->airtime_weight; | ||||
| +	sta->airtime[ac].deficit += sta->airtime_weight << AIRTIME_QUANTUM_SHIFT; | ||||
|  	list_move_tail(&txqi->schedule_order, &local->active_txqs[ac]); | ||||
|  	spin_unlock_bh(&local->active_txq_lock[ac]); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Felix Fietkau
					Felix Fietkau