助力Koordinator雲原生單機混部,龍蜥混部技術提升CPU利用率達60%|龍蜥技術

OpenAnolis小助手發表於2023-02-28

文/OpenAnolis Kernel SIG

01 什麼是 CPU 混部

CPU 混部是指將不同型別的業務部署到同一臺機器上執行,讓它們共享機器上的 CPU 資源以提升 CPU 利用率,從而降低機器的採購和運營成本。但是,對於有些型別的任務來說,它們對延時非常的敏感,比如電商、搜尋或 web 服務等,這類任務的實時性很高,但是通常對資源的消耗卻不是很多,我們稱之為線上任務;還有一類任務,它們更多的關注計算或者批處理,對延時沒有要求,但是消耗的資源相對較多,我們稱之為離線任務。

當這兩類任務同時部署到同一臺機器上時,由於離線任務對資源的佔用較多,資源競爭導致線上任務的延時受到了很大的影響,而且,在超執行緒架構的機器上,即使離線任務和線上任務跑在不同的超執行緒 CPU 上,流水線和 cache 的競爭也會導致線上任務的執行受到影響。於是,CPU 混部技術誕生了,來解決離線任務對線上任務延時的影響,同時還能進一步提升 CPU 資源的利用率。

助力Koordinator雲原生單機混部,龍蜥混部技術提升CPU利用率達60%|龍蜥技術

(圖 1/混部單機 CPU 利用率示意圖)

02 核心 CPU 混部技術

CPU 混部技術,主要是透過單機作業系統排程器來實現的,透過任務型別來決定所分配到的 CPU 資源。龍蜥社群的三大原生技術為 Koordinator 社群提供了強大的 CPU 混部底層技術支援,包括:

  • Group Identity 混部技術

  • Plugsched 排程器熱升級技術

  • CPU 混部外掛產品

2.1 龍蜥 Group Identity 技術

龍蜥社群的 CPU 混部技術——Group Identity 給作業系統核心提供了 CPU 混部能力,例如 Alibaba Cloud Linux 2/3 和 Anolis7/8 OS 發行版均使用的是該技術。Group Identity 技術是在原有的 CFS 排程器中新增了另一個執行佇列來區分線上和離線任務,而且,為了避免對端 CPU(超執行緒架構)上離線任務的干擾,Group Identity 會對其進行驅逐。龍蜥的 Group Identity 技術已經經過阿里雙十一等大型活動以及大規模商業化的驗證,其 CPU 混部能力也得到廣大使用者和開發者的認可。

2.2 龍蜥 CPU 混部外掛

Koordinator 單機作業系統主要是 Alinux2/3 和 CentOS 7.9,對於前者,其 CPU 混部技術來源於龍蜥的 Group Identity,但是對 CentOS 7.9 而言,其核心目前沒有提供 CPU 混部能力。對於這種情況,可能有以下幾種解決方案:

  1. 製作 CentOS 的衍生版系統,幷包含 CPU 混部技術。

2.遷移到 Alibaba Cloud Linux 2/3 作業系統發行版。

對於第一種方案,需要從 CentOS 映象站中下載其核心原始碼,將 CPU 混部技術移植到核心,編譯後安裝,然後重啟系統便可以使用該技術,但這會涉及到業務遷移和停機,勢必會給業務方帶來昂貴的代價。

對於第二種方案,雖然遷移工作會有一定的工作量,但是,Alinux2/3 或 Anolis OS 包含了完整的混部資源隔離方案(CPU 混部僅僅是其中一點),技術紅利所帶來的收益遠比遷移代價要大得多。而且 CentOS 即將停服,為了解決 CentOS 停服問題,龍蜥社群推出了 Anolis OS 發行版作業系統,該發行版系統完全相容 CentOS,使用者可以進行無縫遷移。

針對 Koordinator 雲原生 CentOS 單機作業系統 CPU 混部能力的缺失,龍蜥社群開發人員給出了另一種方案,利用 plugsched 排程器熱升級技術提供一種 CPU 混部技術的排程器外掛包,該外掛包含了阿里雲早期(2017年)的 CPU 混部技術 bvt + noise clean,可直接安裝到 CentOS 7.9,不需要停機和業務遷移等工作。

2.2.1 Plugsched 神器

Plugsched 排程器熱升級,是龍蜥社群推出的 plugsched SDK 排程器熱升級開發工具,它可從 Linux 核心中將排程器解耦,形成一個獨立的模組,然後將 CPU 混部技術移植到排程器模組,形成一個排程器外掛,然後將其直接安裝到執行的系統中就可以使用 CPU 混部技術。Plugsched,可以對核心排程器特性動態的進行增、刪、改,來滿足業務的需求,且無需進行業務遷移和停機升級,還可以回滾。核心開發人員可透過 plugsched SDK 生產出各種型別的排程器外掛來滿足不同的業務場景。

Plugsched 排程器熱升級論文《Efficient Scheduler Live Update for Linux Kernel with Modularization》已被 ASPLOS 頂會收錄,裡面詳細介紹了 plugsched 技術原理和應用價值,以及全面的測試和評估。目前,plugsched 生產的外掛已在螞蟻集團、阿里雲和國內某大型網際網路企業規模部署。

Plugsched 開源連結:

2.2.2 Group Identity 測試

在 Koordinator 社群的在離線最佳實踐手冊中,對 Group Idnetity 混部技術做了測試,線上任務是 Nginx 服務,離線任務是 ffmpeg 影片轉碼,機器採用的是阿里雲神龍裸金屬伺服器,系統發行版是 Alibaba Cloud Linux 2,系統核心是 Alibaba Cloud Kernel 4.19,裡面搭載了龍蜥社群的 Group Identity CPU 混部技術,測試 case 如下:

基線:單獨執行 Nginx 容器

對照組:同時執行 Nginx 容器和 ffmpeg 容器,不設定優先順序

實驗組:設定 Nginx 為線上高優先順序任務,ffmpeg 為離線低優先順序

壓測機:在另一臺伺服器上使用 wrk 工具向 Nginx 服務傳送請求

測試結果:(單位:ms)

助力Koordinator雲原生單機混部,龍蜥混部技術提升CPU利用率達60%|龍蜥技術

(資料來源:阿里雲 ACK 在離線混部最佳實踐手冊)

從對照組中可以看到,當在、離線任務同時執行時,線上任務 Nginx 的長尾延時受到了很大的影響,尤其是 P99 延時,增加了 70% 左右。但是,給線上容器和離線容器設定優先順序後(啟用 Group Identity 混部功能),Nginx 的 P90 和 P99 長尾延時受到的干擾非常小,延時僅增加了 2.8% 和 3.2%。

2.2.3 CPU 混部外掛測試

為了比較 CPU 混部外掛與 Group Identity 的效能差異,開發人員對該排程器外掛進行了相同的測試,服務端配置:

測試機器:阿里雲神龍裸金屬伺服器 系統配置:CentOS 7.9 發行版,核心版本 3.10,安裝 CPU 混部排程器外掛

線上容器和離線容器的配置與壓力均與 Group Identity 測試的相同,測試結果如下:(單位:ms)

助力Koordinator雲原生單機混部,龍蜥混部技術提升CPU利用率達60%|龍蜥技術

從上面的結果來看,沒有 CPU 混部外掛,離線任務對線上任務的影響很大,P99 延時增長了一倍多,而安裝 CPU 混部外掛後,P99 延時的影響顯著降低,CPU 利用率也接近 50%。但是它的效能不及 Group Identity,Group Identity 能讓線上任務受離線任務的干擾小於 5%(CPU 外掛是 20% 以上),而且 CPU 利用率能達 60% 以上(CPU 外掛接近 50%)。

2.3 Group Identity 更勝一籌

從上面的測試資料來看,不論是離線任務對線上任務的干擾,還是 CPU 利用率的提升,Group Identity 的效能均明顯優於 Bvt + noise clean 外掛。這是因為兩套技術的實現原理不同導致的:noise clean 技術採用的是 throttle 機制,當排程器選擇下一個任務時,它會檢測對端 CPU 上的任務型別以及當前 CPU 正在執行的任務型別,如果在、離線任務同時存在,則會將離線任務 throttle 掉,然後繼續選擇下一個任務進行排程,保證線上任務優先執行且不被對端 CPU 上的離線干擾;而 Group Identity 則是給 CFS 排程器增加了低優先順序的執行佇列,每次選擇下一個任務執行時,優先從高優先順序佇列中選擇任務,而且新增了驅逐佇列來驅逐對端 CPU 上正在執行的離線任務。從方案設計來看,Group Identity 的設計更加適用於 CPU 混部場景。

從技術演進上來看,龍蜥社群對 Group Identity 技術仍然在維護更新,而 bvt + noise clean 技術已不再更新迭代。再者,龍蜥社群有完整的混部資源隔離方案,而且下一代 CPU 混部技術 Group Identity v2.0 正在投入研發,將會帶來更為強大的功能和效能。

對於 plugsched 排程器熱升級而言,它對龍蜥社群的 cloud kernel 4.19 和 5.10 的支援更加全面,且會持續維護。但本文的 bvt + noise clean CPU 混部外掛是支援在 CentOS 3.10 核心上,該核心不屬於龍蜥社群,因此 plugsched 對該核心的支援度不是很高,熱升級能力和範圍不及龍蜥核心。Plugsched 對 3.10 核心的支援後續也不再更新和維護。

03 結語

最後,歡迎廣大技術人員、開源愛好者和讀者使用者來體驗、參與和使用龍蜥帶來的 CPU 混部技術 Group Identity 和 Plugsched 神器。我們相信,不論是 Anolis OS、Cloud Kernel 還是 Plugsched,一定都會為各位看官帶來意想不到的收益和價值。同時,歡迎廣大技術人員、開源愛好者和讀者使用者一起加入龍蜥社群,與社群共同進步和發展。

相關連結可參考連結可移步龍蜥公眾號(OpenAnolis龍蜥)2023年2月27日相同推送檢視。

—— 完 ——


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70004278/viewspace-2937480/,如需轉載,請註明出處,否則將追究法律責任。

相關文章