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