CPU Burst有副作用吗?让数学来回答!| 龙蜥技术
簡介:?使用CPU Burst的副作用是什么?是否有不適用的場景呢?戳我給你答案~
?
編者按:CPU Burst 特性已合入 Linux 5.14,Anolis OS 8.2、Alibaba Cloud Linux2、Alibaba Cloud Linux3也都支持CPU Burst特性。
在系列文章的上篇中,我們討論了讓人討厭的 CPU 限流,它會影響運行在容器中的應用的一些關鍵指標。為了避免限流的出現,有時我們不得不犧牲容器部署密度,從而導致資源浪費的產生。在解決方案部分,我們也介紹了新的CPU Burst 技術,通過這一技術,我們既能保證容器運行服務質量,又不降低容器部署密度。聽起來有點像個銀彈啊?那么,使用CPU Burst的副作用是什么?是否有不適用的場景呢?為了回答這個問題,本文將介紹CPU Burst打破的調度保證,以及CPU Burst影響評估。盡管這些CPU突發的使用造成的CPU使用差異在CPU利用率上很多時候不明顯,但是我們仍然關心這種改變的影響。當然,結論是明確的:CPU Burst的負面影響完全可以忽略。僅在CPU利用率高達70%的環境里CPU Burst開始影響關鍵指標,而我相信大家日常生產環境的CPU利用率都遠遠低于這個水平。
CPU Bandwidth Controller的保證
使用CPU Bandwidth Controller可以避免某些進程消耗過多CPU時間,并確保所有需要CPU的進程都拿到足夠的CPU時間。之所以有這樣好的穩定性保證,是因為當Bandwidth Controller設置滿足
時,有如下的調度穩定性約束:
其中
是第i個cgroup的quota,是一個period內該cgroup的CPU需求。Bandwidth Controller對每個周期分別做CPU時間統計,調度穩定性約束保證在一個period內提交的全部任務都能在該周期內處理完;對每個CPU cgroup而言,這意味著任何時候提交的任務都能在一個period內執行完,即任務實時性約束:
不管任務優先級如何,最壞情況下任務執行時間(WCET, Worst-Case Execution Time)不超過一個period。
假如持續出現
調度器穩定性被打破,在每個period都有任務積攢下來,新提交的作業執行時間不斷增加。
使用CPU Burst的影響
出于改善服務質量的需要,我們使用CPU Burst允許突發的CPU使用之后,對調度器的穩定性產生什么影響?答案是當多個cgroup同時突發使用CPU,調度器穩定性約束和任務實時性保證有可能被打破。這時候兩個約束得到保證的概率是關鍵,如果兩個約束得到保證的概率很高,對大多數周期來任務實時性都得到保證,可以放心大膽使用CPU Burst;如果任務實時性得到保證的概率很低,這時候要改善服務質量不能直接使用CPU Burst,應該先降低部署密度提高CPU資源配置。于是下一個關心的問題是,怎么計算特定場景下兩個約束被打破的概率。
評估影響大小
定量計算可以定義成經典的排隊論問題,并且用蒙特卡洛模擬方法求解。定量計算的結果表明,判斷當前場景是否可以使用CPU Burst的主要影響因素是平均CPU利用率和cgroup數目。CPU利用率越低,或者cgroup數目越多,兩個約束越不容易被打破可以放心使用CPU Burst。反之如果CPU利用率很高或者cgroup數目較少,要消除CPU限流對進程執行的影響,應該降低部署提高配置再使用CPU Burst。問題定義是:一共有m個cgroup,每個cgroup的quota限制為1/m,每個cgroup在每個周期產生的計算需求(CPU利用率)服從某個具體分布,這些分布是相互獨立的。假設任務在每個周期的開始到達,如果該周期內的CPU需求超過100%,當前周期任務WCET超過1個period,超過的部分累積下來和下個周期新產生的CPU需求一起在下個需求處理。輸入是cgroup的數目m和每個CPU需求滿足的具體分布,輸出是每個周期結束WCET > period的概率和WCET期望。使用蒙特卡洛模擬求解過程省略,詳細請關注后續系列文章。以輸入的CPU需求為帕累托分布、m=10/20/30的結果為例進行說明。選擇帕累托分布進行說明的原因是它產生比較多的長尾CPU突發使用,容易產生較大影響。表格中數據項的格式為
,其中
越接近1越好,
概率越低越好。
| u_avg | m=10 | m=20 | m=30 |
| 10% | 1.0000/0.00% | 1.0000/0.00% | 1.0000/0.00% |
| 30% | 1.0000/0.00% | 1.0000/0.00% | 1.0000/0.00% |
| 50% | 1.0003/0.03% | 1.0000/0.00% | 1.0000/0.00% |
| 70% | 1.0077/0.66% | 1.0013/0.12% | 1.0004/0.04% |
| 90% | 1.4061/19.35% | 1.1626/10.61% | 1.0867/6.52% |
結果跟直覺是吻合的。一方面,CPU需求(CPU利用率)越高,CPU突發越容易打破穩定性約束,造成任務WCET期望變長。另一方面,CPU需求獨立分布的cgroup數目越多,它們同時產生CPU突發需求的可能性越低,調度器穩定性約束越容易保持,WCET的期望越接近1個period。
后續
看完本文相信您對CPU Burst的影響已經有了定性了解。如果希望對評估方法有更多了解,請期待系列文章的下篇。
關于作者
常懷鑫(一齋),阿里云內核組工程師,擅長CPU調度領域。
丁天琛(鷹羽),2021年加入阿里云內核組,目前在調度領域等方面學習研究
原文鏈接
本文為阿里云原創內容,未經允許不得轉載。?
總結
以上是生活随笔為你收集整理的CPU Burst有副作用吗?让数学来回答!| 龙蜥技术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mPaas 运维流程介绍
- 下一篇: SSD( Single Shot Mul