亚洲先锋影音人AV成_免费A级毛片一分钟_人人爽人人爽人人插_日韩少妇极品熟妇人妻潮喷

沃卡惠移動端logo

既要穩(wěn)也要省,容器資源該怎么分配?

2023-10-24 09:41:574636

眾所周知,假期出行,熱情高漲,需求增多也使得穩(wěn)定性保障壓力大。當各個服務流量激增時,資源負載壓力將會顯著提升。微觀上,單臺物理機的 CPU 利用率會大幅提升,單機上各個容器之間的爭搶會增加,性能受到影響。宏觀上,整個彈性云的熱點機器會增加,可供調度的資源會降低,容器調度和擴容的失敗率會上升。

今年,在降本增效的大前提下,不額外增加計算型服務器采購,如何保障資源供給以及確保高壓場景下的容器穩(wěn)定性,對彈性云而言是個巨大的挑戰(zhàn)。為了提供更穩(wěn)定的容器服務,彈性云全面梳理了容器服務資源保障的每一個環(huán)節(jié),提出了新分級保障體系,提供了明確的容器資源保障等級,在此基礎上,針對不同優(yōu)先級的容器提供相應的資源和穩(wěn)定性保障。

早期彈性云容器體系帶來的超賣隱患

彈性云早期分級體系提供了1/2/3級容器等級,只是對容器的優(yōu)先級進行了簡單的區(qū)分,并未將容器優(yōu)先級與底層的資源保障關聯在一起。容器服務在使用過程中,會遇到以下問題:

資源爭搶嚴重

業(yè)務延遲較高,毛刺較多

擴容失敗概率較高

業(yè)務容量評估不準

物理機數量難以評估

之所以會存在這些問題,實際上還是因為在資源層面沒有相應的保障。從單機資源看,部分物理機的 CPU 使用率峰值過高,并且容器的 CPU 資源存在不同程度的超賣。

從集群資源來看,舊體系下 quota 與物理機資源缺乏關聯,導致業(yè)務申請的 quota 僅僅停留在數字層面,不指導物理機資源的準備。此外,quota 還缺乏管控,導致 quota 的申請與實際需求嚴重脫節(jié)。

圖片

造成上述諸多問題很重要的一個原因就是彈性云資源整體上是超賣的,且比較嚴重。

所謂的資源超賣,指的是資源的申請量>供給量,表現為單機&集群方面均超賣。

單機層面,一臺物理機上運行的所有容器的規(guī)格相加大于物理機所能提供的資源總量。

集群層面,服務資源的quota總和大于集群物理機資源總量。

圖片

從上圖中可以看到,單是1級服務申請的資源量,就已經超過了物理機的總資源量。在集群和單機都超賣的情況下,早期的分級體系并沒有確立明確的超賣規(guī)則,使得舊體系容器運行環(huán)境整體處于無序和不確定的狀態(tài)下。

兩大超賣解決思路帶來的四大收益

思路一:核心服務鏈路不超賣

所有的核心服務鏈路上的服務均1:1對應物理機資源,不超賣。通過對機房1和機房2進行簡單的統(tǒng)計, 發(fā)現核心服務鏈路中網約車+兩輪車+代駕服務的申請量總和占據了所有服務總申請量的大約一半,且機房1核心服務的申請量已經超過總CPU數,機房2核心服務的申請量基本接近總CPU數。所以,核心服務不超賣受限于資源,方式不可行。

圖片

思路二:核心服務鏈路中最重要的服務不超賣

受限于資源,無法做到所有的核心服務鏈路中的服務都不超賣,那退一步,在物理資源有限的情況下,保障核心服務鏈路中最重要的服務不超賣,并在此基礎上,對于剩余的服務制定合理的超賣規(guī)則。

因此,彈性云需要重新制定分級保障體系,同時為新分級體系制定明確的超賣規(guī)則。超賣規(guī)則如下:

核心服務中20% -> S級服務:不超賣

老1級 -> A級服務:2倍超賣

老2/3級 -> B級服務:4倍超賣

圖片

在新的超賣規(guī)則下,可以看到,機房1和機房2的總物理CPU量是基本能滿足需求的(機房2的資源申請量略微超出, 可以通過新增機器或是縮容來滿足要求)。

這樣的重新設計下,我們在2022年元旦前完成所有S級服務的接入,2022年國慶前完成網約車核心服務/兩輪車核心服務/代駕核心服務接入新體系??傮w來看,這樣的改變帶來了四大收益:

收益1:資源層面,S級服務CPU外部爭搶降低60% ~80%,A級服務CPU外部爭搶降低30~50%。

收益2:業(yè)務延遲方面,業(yè)務99分位延遲(均值)降低7% ~ 20%業(yè)務99分位延遲(最大值)降低5% ~ 15%。

收益3:容量方面,高峰期S級服務比之前多承載30%+流量,S級服務比之前能縮容30%+資源。

收益4:業(yè)務收益角度,高峰期CPU外部爭搶下降65%~75%,毛刺基本消失,業(yè)務延遲指標下降5%~25%,業(yè)務壓測CPU外部爭搶下降60%~70%。

彈性云新分級保障體系總體架構

為了支持新分級保障體系,彈性云從下到上,針對每一層中的相關組件都進行開發(fā)改造,同時也包含了系統(tǒng)部 CMP 系統(tǒng)quota相關的開發(fā)工作,主要體現在操作系統(tǒng)層、k8s 調度層、kube-odin 層、服務樹和系統(tǒng)部 CMP 系統(tǒng)。

圖片

從上述架構圖中可以看到,位于最底層的是機房的物理機資源,物理機分別位于不同的機房。

操作系統(tǒng)層

物理機之上是操作系統(tǒng)層,操作系統(tǒng)層面分為內核態(tài)和用戶態(tài)。在內核態(tài)新增特性上,新分級體系對 CPU 調度,內存管理,IO 讀寫都進行了針對性的開發(fā)和優(yōu)化。

CPU 調度:

新增優(yōu)先級權重概念,不同優(yōu)先級容器的調度權重不同,用于區(qū)分不同等級容器調度優(yōu)先級。

新增 CPU Burst 技術,允許部分重要容器能短時間內突破規(guī)格的上線,臨時使用超量的 CPU。

內存管理:

新增優(yōu)先級回收技術,優(yōu)先回收低優(yōu)先級容器的內存,最后回收高優(yōu)先級容器內存。

新增分級水位特性,減少系統(tǒng)內存緊張時高優(yōu)先級容器內存分配受阻。

IO 讀寫:

新增帶寬限速特性,支持對低優(yōu)先級容器的 IO 讀寫帶寬進行限速,以減少對高優(yōu)先級容器的影響。

新增優(yōu)先級帶寬分配特性,支持按容器優(yōu)先級分配 IO 帶寬。

在用戶態(tài)新增特性上,操作系統(tǒng)用戶態(tài)針對新分級體系的支持主要體現在 Kubelet、IRMAS 和單機資源調度這幾個組件上。其中,kubelet 和 IRMAS 主要新增了新分級體系容器的識別、信息采集上報、單機資源配置、環(huán)境適配等工作。新增單機資源調度模塊實現了極端情況下單機資源的壓制和恢復,以及與 k8s 調度聯動等功能。

k8s 調度層

在 k8s 容器調度層,針對新分級體系新增了最小資源保障策略,指的是通過合理的調度,保障任何時候,容器均能獲得承諾的資源量。

容器分級均衡打散策略指的是保證一臺物理機上不會存在過多同一級別的容器,將不同等級的容器均勻打散到不同的物理機上。

分級容量資源大盤指的是資源大盤新增新分級體系容器支持,實時觀察新分級容器容量健康情況。

擴容成功率保障指的是新增容量預估特性,優(yōu)化資源申請流程,實時監(jiān)控彈性云可供擴容資源量,有效提高擴容成功率。

kube-odin 層

kube-odin 層配合新分級體系也進行了相關改動和升級:

新增新等級接入平臺:包括新等級容器查詢操作相關接口的適配。

計費管理模塊:新增新分級體系容器的計費支持,支持多種計費場景。

服務 quota 操作:新增 quota 操作接口。

服務樹

服務樹在保持兼容性的基礎上,新增了新分級體系集群信息的支持。

系統(tǒng)部 CMP 系統(tǒng)

新體系容器的 quota 申請和使用由系統(tǒng)部 CMP 系統(tǒng)操作和記錄。

CMP 系統(tǒng)通過獲取業(yè)務申請的 quota 信息,能明確推算所需的物理機資源,更好實現物理機資源的保障。針對新體系容器的 quota 支持,CMP 系統(tǒng)新增了 quota 成本賬戶、quota成本賬戶以及quota申請模塊。

quota成本賬戶:包含S級/A級/B級的 quota 信息。

quota 管控模塊:對 quota 的使用量進行追蹤和考察,以便進行有效的資源管控。

quota 申請模塊:規(guī)范 quota 申請流程,明確 quota 申請規(guī)則。

新分級體系三大重點資源保障

新分級體系立足于核心問題,在單機層面和集群層面都對容器申請的資源進行相應保障。

單機資源保障:CPU

新分級體系資源保障的其中一個重點為:保障容器的 CPU 資源任何時刻都能按超賣比所規(guī)定的有效交付。

在前文中,我們提到新體系容器的超賣規(guī)則為:S級不超賣,A級2倍超賣,B級4倍超賣。那對于不同等級的容器,可輕松得知其所需的物理 CPU 個數。新分級體系所需要保證的就是一臺物理機上所有容器經過超賣比計算后得到的物理 CPU 個數必須小于物理機上的 CPU 個數。

圖片

上述的示例中,對于一個40核的物理機,可用的 CPU 數為: 40*90%=36核 (90%為計算各種 agent 和調度損耗之后的有效核數)。容器總共申請的核數為56核,經過超賣比計算后得到的所需物理核為36,剛好滿足要求。

通過明確超賣比,根據超賣比準備對應物理 CPU 資源的方式,在高負載期間,如果所有的容器都滿載運行,則物理機上的 CPU 資源將會按照超賣比承諾的比例進行分配。在低負載時刻,算力足夠時,由于機器整體空閑,容器之間幾乎不發(fā)生爭搶,此時容器可以正常使用 CPU。

單機資源保障:內存

在物理機層面,內存是所有容器之間共享的資源,傳統(tǒng)內核沒有對容器進行優(yōu)先級的劃分,所有容器的內存使用對于內核而言都是一視同仁。

內存對容器性能的影響主要體現在內存分配和內存回收上。

內存分級水位

圖片

操作系統(tǒng)內核會監(jiān)控整個系統(tǒng)的內存使用情況,當可用內存低于一定水位時,就會阻塞內存分配路徑,觸發(fā)內存回收操作。

某些場景下,低優(yōu)先級容器可能大量申請內存,導致內存水位線降職 min 水位以下,物理機面臨內存分配和回收時,高優(yōu)容器將會受到影響,無法及時的分配內存。

針對這個場景,內核新增了內存分級水位特性,允許按照優(yōu)先級設置不同的 min 水位。這樣,在申請內存時,低優(yōu)先級容器會先達到回收水位線觸發(fā)低優(yōu)先級容器的內存回收,而高優(yōu)先級容器的內存回收水位線較低,可以正常分配。

內存按優(yōu)先級回收

由于原生內存沒有對內存進行優(yōu)先級區(qū)分,因此當內核走到內存回收路徑,會無差別的進行內存回收動作。此時,可能高優(yōu)先級容器的內存被回收,而低優(yōu)先級容器內存則完好無損。

新分級體系的目標顯然是要在回收內存的時候優(yōu)先回收低優(yōu)先級容器的內存,這樣可以最大程度保護高優(yōu)先級容器的內存,進而保障高優(yōu)先級容器的性能表現。

圖片

基于優(yōu)先級回收的思想,內核所做的就是識別容器優(yōu)先級,然后按照容器優(yōu)先級逐一回收內存,直至內存水位線恢復健康水平。

先回收B級容器的內存

再回收A級容器的內存

最后才回收S級容器的內存

集群資源保障:quota

業(yè)務在申請容器服務的時候,一般需要指定單個容器的規(guī)格(CPU/內存大?。┖蜕暾埖臄盗?。匯總服務總共所需的資源量,即為 quota,quota 管理的最小單位為成本賬戶。

圖片

可以看到,在新分級體系下,quota 按照容器優(yōu)先級,分為了對應的S級/A級/B級 quota。quota 是用于描述業(yè)務的資源申請量,而對于彈性云和系統(tǒng)部而言, 則可以根據 quota,進行物理資源的準備。例如對于某個成本賬戶,申請的 quota 如下所示:

圖片

我們可以清楚看到,業(yè)務申請的 quota 量與實際準備物理機資源量之間的對應關系。

通過建立并規(guī)范 quota 的申請和使用流程,新分級體系能根據資源超賣規(guī)則有效的將 quota 的申請量與后臺真實物理資源的準備量結合起來,從而實現資源層面的強保障。另外,在 quota 體系逐步完善之后,還能根據 quota 使用率和容器的 CPU 使用率對 quota 進行有效的資源管控。

總結

很長一段時間,舊的彈性云分級體系存在資源爭搶、業(yè)務延遲、擴容失敗、業(yè)務無法準確評估容量、物理機數量難以評估等問題。這些問題的本質是由于沒有制定明確的資源準備和分配規(guī)則。

新分級體系立足于核心問題,提出了明確的資源超賣規(guī)則,在單機層面和集群層面都對容器申請的資源進行相應保障。在單機層面,保證了按超賣比轉化后實際的物理機資源不會超過物理機所提供的最大資源量,同時制定了明確的資源爭搶規(guī)則。在集群層面,建立并規(guī)范了 quota 申請流程,明確了 quota 與物理機資源之間的對應關系,保障了資源的供給,同時,也有效管控了quota ,避免資源的浪費。

通過在容器資源申請、容器調度、運行時保障、資源管控等多個方面添加資源保障策略,彈性云新分級體系支持容器高效穩(wěn)定的運行,確保了彈性云整體的穩(wěn)定性,也一定程度降低了物理機運營成本。