助力Koordinator雲原生單機混部,龍蜥混部技術提升CPU利用率達60%|龍蜥技術
文/OpenAnolis Kernel SIG
01 什麼是 CPU 混部
CPU 混部是指將不同型別的業務部署到同一臺機器上執行,讓它們共享機器上的 CPU 資源以提升 CPU 利用率,從而降低機器的採購和運營成本。但是,對於有些型別的任務來說,它們對延時非常的敏感,比如電商、搜尋或 web 服務等,這類任務的實時性很高,但是通常對資源的消耗卻不是很多,我們稱之為線上任務;還有一類任務,它們更多的關注計算或者批處理,對延時沒有要求,但是消耗的資源相對較多,我們稱之為離線任務。
當這兩類任務同時部署到同一臺機器上時,由於離線任務對資源的佔用較多,資源競爭導致線上任務的延時受到了很大的影響,而且,在超執行緒架構的機器上,即使離線任務和線上任務跑在不同的超執行緒 CPU 上,流水線和 cache 的競爭也會導致線上任務的執行受到影響。於是,CPU 混部技術誕生了,來解決離線任務對線上任務延時的影響,同時還能進一步提升 CPU 資源的利用率。
(圖 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 混部能力。對於這種情況,可能有以下幾種解決方案:
-
製作 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)
(資料來源:阿里雲 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)
從上面的結果來看,沒有 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- B站雲原生混部技術實踐
- 技術門檻高?來看 Intel 機密計算技術在龍蜥社群的實踐 | 龍蜥技術Intel
- 混部之殤-論雲原生資源隔離技術之CPU隔離(一)
- 龍蜥開源核心追蹤利器 Surftrace:協議包解析效率提升 10 倍! | 龍蜥技術協議
- 龍蜥社群成立雲原生 SIG,引入 3 大核心技術,共建雲原生生態
- 資料中心日均 CPU 利用率 45%?!阿里規模化混部技術揭祕阿里
- 龍蜥利器:系統運維工具 SysAK的雲上應用效能診斷 | 龍蜥技術運維
- 阿里開源雲原生混部系統Koordinator正式開源阿里
- 阿里巴巴雲原生混部系統 Koordinator 正式開源阿里
- 入門即享受!coolbpf 硬核提升 BPF 開發效率 | 龍蜥技術
- eBPF 雙子座:天使 or 惡魔?| 龍蜥技術eBPF
- B站基於K8S的雲原生混部技術實踐K8S
- 深入解讀基礎軟體雲原生面臨的挑戰 | 龍蜥技術
- 龍蜥開源Plugsched:首次實現 Linux kernel 排程器熱升級 | 龍蜥技術Linux
- 龍蜥社群高效能儲存技術 SIG 11 月運營回顧 | 龍蜥 SIG
- 效能提升 57% ,SMC-R 透明加速 TCP 實戰解析 | 龍蜥技術TCP
- 萬里資料庫加入龍蜥社群,打造基於“龍蜥+GreatSQL”的開源技術底座資料庫SQL
- 跨語言程式設計的探索 | 龍蜥技術程式設計
- 雲原生 SIG:關於 Koordinator 混部原理及最佳實踐 | 第 43 期
- 深入解讀雲場景下的網路抖動 | 龍蜥技術
- 直播回顧 | 雲原生混部系統 Koordinator 架構詳解(附完整PPT)架構
- 一文解讀機密容器的崛起和發展 | 龍蜥技術
- 螞蟻安全科技 Nydus 與 Dragonfly 映象加速實踐 | 龍蜥技術Go
- 基於 Coolbpf 的應用可觀測實踐 | 龍蜥技術
- SysOM 案例解析:消失的記憶體都去哪了 !| 龍蜥技術記憶體
- 技術解讀:Dragonfly 基於 P2P 的智慧映象加速系統 | 龍蜥技術Go
- 軟體調優方法有哪些?看看飛騰技術專家怎麼說 | 龍蜥技術
- 虛擬化解決方案 virtio 的技術趨勢與 DPU 實踐解讀 | 龍蜥技術
- 系列解讀SMC-R:透明無感提升雲上 TCP 應用網路效能(一)| 龍蜥技術TCP
- 14位資深大咖,11 場技術演講!龍蜥雲原生專場精彩回顧來了
- 龍蜥LoongArch架構研發全揭秘,龍芯開闢龍騰計劃技術合作新正規化架構
- 《可信計算技術最 佳實踐白皮書》釋出,龍蜥助力可信計算技術應用推廣(可下載)
- 直播回顧:隱私計算的關鍵技術以及行業應用技巧 | 龍蜥技術行業
- 如何透過 open-local 玩轉容器本地儲存? | 龍蜥技術
- 致敬 hacker :盤點記憶體虛擬化探索之路|龍蜥技術記憶體
- 依然順滑!Dragonwell 11如何改造全新垃圾回收器ZGC? | 龍蜥技術GoGC
- 如何保證 Java 應用安全?標準答案來了 | 龍蜥技術Java
- SysAK 應用抖動診斷篇—— eBPF又立功了! | 龍蜥技術eBPF