Linux負載均衡算法存在瑕疵修復後性能將提升一倍
Linux 內核開發者 Vincent Guittot 發現Linux 完全調度算法CFS 存在瑕疵,修復之後將進一步提升調度性能。
在Linux 負載均衡期間,使用CFS 算法時,系統會從負載較高的運行隊列中拉取一些任務交給負載較低的隊列,以此分攤CPU 資源利用率。一般的過程就是系統會從最高利用率的隊列往下拉任務,但是Vincent 在郵件列表中表示,這其中存在一個問題:實際上算法沒有考慮到在這個過程中可能有一些待處理任務要拉,如果有這樣的待處理任務需要拉,那麼與負載均衡分攤利用率的過程就會產生短暫的“衝突”,使得對隊列資源利用率的分攤將延後,也就是等到拉完待處理的任務後再進行。
而根據分析,Vincent 發現這種待處理任務至少有兩個,也就是說會出現兩次短暫的“衝突”,雖然很微小,但是會影響系統的整體性能。同時他也對修復該問題之後的效益進行了具體影響數據的測算,發現每個請求花費的最大時間減少大約一半,平均從21 ms 減少為11 ms,考慮空閒負載均衡等因素,最糟糕的情況下從41 ms 減少到21 ms。(雖然平均每個請求的影響只有0.1 多)
平均最大值不能完全反映該值的廣泛分佈尖端/預定/核心的範圍從1.350ms到41ms以上,並且補丁程序在1.350ms到21ms之間。
更加具體的分析可以查看郵件列表:
https://lore.kernel.org/lkml/20200312165429.990-1-vincent.guittot@linaro.org