完爆 Best-Fit!看阿里如何最佳化 Sigma 線上排程策略,節約億級成本
2018 年“雙 11”的交易額又達到了一個歷史新高度 2135 億。相比十年前,我們的交易額增長了 360 多倍,而交易峰值增長了 1200 多倍。相對應的,系統數呈現爆發式增長。系統在支撐“雙 11”過程中的複雜度和難度呈現指數級形式上升趨勢。
作為阿里巴巴全集團範圍的容器排程系統,Sigma 在“雙11”期間成功支撐了全集團所有容器(交易線中介軟體、資料庫、廣告等 20 多個業務)的調配,是阿⾥巴巴運維繫統重要的底層基礎設施。Sigma 已經是阿里全網所有機房線上服務管控的核心角色,管控的宿主機資源達到百萬級,重要程度不言而喻,其演算法的優劣程度影響了集團整體的業務穩定性,資源利用率。本文將簡要介紹群體增強學習演算法在排程策略最佳化中的應用
王孟昌 達摩院機器智慧技術演算法專家
韓堂 阿里巴巴集團技術專家
王孟昌 達摩院機器智慧技術演算法專家
韓堂 阿里巴巴集團技術專家
計算資源排程及線上策略
當使用者向 Sigma 申請容器所需的計算資源(如 CPU、Memory、磁碟等)時,排程器負責挑選出滿足各項規格要求的物理機來部署這些容器。通常,滿足各項要求的物理機並非唯一,且水位各不相同,不同的分配方式最終得到的分配率存在差異,因此,排程器的一項核心任務就是按照某一策略從眾多候選機器中挑出最合適的物理機。
在文獻中,計算資源排程一般被表述為向量裝箱問題(vector bin packing problem),如果各應用的容器數量事先已知(如大促場景),排程器可一次性為所有容器生成最佳化的排布方案,此時問題可以表述為整數規劃,可使用通用求解器或專門開發的演算法來求解;
如果各應用的請求陸續到達 Sigma (如日常場景),排程器需要在每次請求到達時即時(線上)生成部署決策,此時問題可表述為馬爾可夫決策過程 (Markov Decision Process, MDP),原則上可以透過值迭代或策略迭代求得最優策略。
最常用的排程策略包括 First-Fit (FF) 和 Best-Fit (BF)。如果使用 First-Fit 演算法,排程器會將容器部署到遍歷中碰到的第一個滿足所有要求的物理機上;而 Best-Fit 演算法則會在滿足要求的物理機中挑選分配水位最高的機器來部署容器。對於經典的 bin packing 問題(即一維向量裝箱問題),First-Fit 和 Best-Fit 的近似比均為 1.7,即二者都可保證所使用的機器數不超出最優方案的 170%;對於 2 維及以上的向量裝箱問題,理論上不存在有著明確近似比保證的多項式演算法。
當物理機的某個資源維度明顯為瓶頸而導致其它資源維度普遍有剩餘時,其有效維度可視為 1,使用 First-Fit 或 Best-Fit 一般可以取得不錯的分配率;而一旦瓶頸並未集中體現在同一維度,兩種策略的效果就要大打問號了。
除了資源維度上的要求,實際排程中還有容災和干擾隔離上的考慮:比如同一應用的容器不允許全部部署到同一臺物理機上,很多應用甚至每臺機器上只允許有一個例項;某些應用之間還存在互斥關係(如資源爭搶),嚴重影響應用的效能,因此也不允許它們被部署到同一物理機上。這些限制條件的引入,使得常用策略越發水土不服了。透過人肉反覆試錯,勉強扛住了多次大促建站的壓力。然而,隨著各業務的擴張,線上容器的規模越來越大,資源變得越來越緊張,人肉調參的效率漸漸力不從心。
為了把排程同學從調參中解放出來,讓有限的資源扛住更大的壓力,達摩院機器智慧技術實驗室(M.I.T.)的決策智慧演算法團隊和 Sigma 排程團隊展開了緊密合作,對線上排程策略問題進行了研究,並開發了基於群體增強學習(SwarmRL)的演算法。
線上排程模型
記當前待部署容器的規格為向量 p∈P ,為其分配資源時叢集狀態為向量 s∈S,候選物理機的集合為 A⊆A,策略可表示為函式 π:S×P→A(π∈Π)。當按策略 π 選擇物理機 a=π(s,p) 來部署該容器時,該選擇的即時成本為 r(a),叢集的新狀態 s′ 由狀態量 s 、p 以及動作 a 共同決定,記為 s′=L(s,p,a);記後續到達的容器規格 p′, 對於線上排程,p′ 為隨機量。引入折扣係數 γ∈[0,1],系統的 Bellman 方程為:
最優排程策略可表示為:
理論上,透過隨機梯度下降,我們可以在策略空間 ∏ 中搜尋較優的策略,但想要更進一步地最佳化,甚至得到全域性最優策略,則需要藉助其它方法,特別是當最優策略可能是 multi-modal 形式。
群體增強學習 SwarmRL
為防止策略的最佳化陷入較差的區域性最優解,同時擁有較快的收斂速度,我們基於群體增加學習的框架來設計演算法。與傳統的增強學習方法相比,演算法使用多個 agent 來探索問題的策略空間,且多個 agent 之間存在互相學習機制,這使得演算法有了跳出區域性陷阱的能力。為獲取各狀態值(Vπ)的估計,一個準確的 Sigma 模擬器必不可少,在此鳴謝團隊同學基於 Sigma 的排程器開發了“完全保真”的模擬器 Cerebro。
演算法首先隨機初始化一群 agent 的策略,針對每個策略,透過模擬器獲取相應的的狀態值估計,記錄當前全域性最佳策略。在後續的每次迭代中,各個 agent 不斷更新自身的區域性最佳策略,並參照區域性最佳策略與群體當前全域性最佳策略,對 agent 自身的當前策略進行更新,再進行模擬,獲取新策略的狀態值估計,更新全域性最佳策略。如此迴圈,直到滿足收斂條件。
在各個 agent 狀態值的估計中,樣本(多個隨機抽取的叢集快照和擴容請求序列)和各 agent 的當前策略被輸入模擬器 Cerebro,追蹤模擬時叢集狀態的軌跡,即可得到該軌跡的總成本;基於多個樣本的軌跡總成本求平均,即得到相應策略下的狀態估計值。
其中 ξ1,ξ2∈[0,1] 為隨機量,Φ 為可行性保持對映,用於將逸出可行域的 agent 重新“拉回”可行域。在迭代中,區域性最佳策略 (πL) 和群體全域性最佳策略 (πG) 不斷更新:
下面我們先用一個隨機生成的小算例來對比一下演算法的效果。算例中涉及 30 個應用(見下表),其容器規格主要為 4c8g 與 8c16g,所用宿主機的規格均為 96c512g。
若在排程時,請求的順序和數量均為已知(“上帝視角”),即進行事後排布,使用整數規劃求得的最優解對應的分配率為 94.44 % (這也是所有排程策略在該算例上所得分配率的上界),共啟用 15 臺宿主機,具體排布方案為:
現實場景中,每個請求所處順序和容器數量僅在其到達 Sigma 時才揭曉,若採用 Best-Fit 進行動態排程,所得分配率為 70.83%,共啟用 20 臺宿主機,具體排布如下:
若採用 SwarmRL 學習所得策略進行動態分配,分配率為 94.44%,共啟用 15 臺宿主機,最終容器排布如下:
在該算例中,SwarmRL 學習所得策略的表現(94.44%)與“上帝視角”下最優排布的表現(上界)一致,明顯優於 Best-Fit 的表現(70.83%),改進幅度達 23.61%。
我們再隨機生成規模較大的請求資料:共計 3k 個請求,5k 個容器,其規格分佈如下圖:
相對於 Best-Fit,新策略節約宿主機 13 臺(4.48%),分配率提升 4.30%;相對於人肉策略,新策略節約 7 臺(2.46%)宿主機,分配率改進 2.36%。
考慮到實際場景中應用請求到達順序的隨機性,我們隨機打亂請求生成多個不同的請求順序,再分別應用三個策略按不同的請求順序進行動態分配:
Best-Fit 在不同請求順序下宿主機數量的極差為 39 臺,相對人肉策略的 84 臺而言,表現相對穩定,其波動幅度約為人肉策略的一半;人肉策略的平均分配率低至 81.85%,對比原順序下的 93.44%,可見人肉策略的效能並不穩定,表現出較劇烈的波動。而學習所得新策略的表現則相當穩定,其宿主機數量的極差僅為 3 臺,波動幅度約為人肉策略的 30 分之一;新策略的分配率平均比人肉策略的分配率高 13.78%,比 Best-Fit 的高 3.02%。
總結與展望
從提升分配率、節省資源的角度來看,SwarmRL 演算法可以產生出優於常用(以及人肉)的策略,並且有著較為穩定的表現。演算法部署到線上環境後,公共資源池的分配率峰值與之前相比有了明顯的提升。
隨著 cpu share 和混部的鋪開,除分配率外,新的場景將涉及更多目標,比如打散、負載均衡等,這些目標甚至還有互相矛盾的地方,而 SwarmRL 的執行機制天然適合具有多個目標的策略最佳化問題,可以十分方便地在策略空間中構造 Pareto Front,因而,後續我們將繼續研究新場景下的線上排程策略問題,充分挖掘 SwarmRL 的潛力,進一步提升 Sigma 的排程能力。
參考文獻
[1]David Simchi-Levi, Xin Chen and Julien Bramel (2014). The Logic of Logistics: Theory, Algorithms, and Applications for Logistics Management (3rd ed). Springer
[2]Richard S. Sutton and Andrew G. Barto (2017). Reinforcement Learning: An Introduction. The MIT Press
[3]Hitoshi Iima, Yasuaki Kuroe and Kazuo Emoto (2011). Swarm reinforcement learning methods for problems with continuous state-action space, IEEE ICSMC
[4]Yossi Azar, Ilan R. Cohen, Amos Fiat and Alan Roytman (2016). Packing small vectors. SODA'16
[5]Yossi Azar, Ilan R. Cohen, Seny Kamara and Bruce Shepherd (2013). Tight bounds for online vector bin packing. STOC‘13
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555606/viewspace-2284265/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 雲上建站流程全解,教你如何節約成本
- 節省數億IT成本,B站FinOps最佳化實踐
- 位元組跳動開源Katalyst:在離線混部排程,成本最佳化升級
- 史蒂文斯理工學院:汽車智慧技術每年可節約62億美元燃料成本
- 如何從流程上節約APP開發成本?北京銳智互動APP
- 爆款遊戲如何藉助 RocketMQ Serverless,打造流暢體驗並節省 98% 成本?遊戲MQServer
- 最佳化採購流程及降低採購成本策略
- 4天如何完爆Kafka原始碼核心流程!Kafka原始碼
- 如何打造數個億級爆款?FunPlus CTO伍濤分享爆款遊戲方法論遊戲
- 以太坊智慧合約升級策略
- 如何看阿里和SAP戰略合作的“再升級”?阿里
- 6個最佳化策略,助你降低K8S成本K8S
- 阿里巴巴 Sigma 排程和叢集管理系統架構詳解阿里架構
- 節省數億IT成本,B站FinOps實踐
- 關於如何節約資料庫連線的討論?資料庫
- 資料成本:雲端儲存成本高嗎如何節省資料儲存成本
- 【省頻寬、壓成本專題】從產品架構來看,PCDN如何節流50%架構
- 攜程 Redis On Rocks 實踐,節省 2/3 Redis成本Redis
- 如何做PB級大資料線上分析?看阿里實踐大資料阿里
- 為什麼雲伺服器可以幫企業節約成本?伺服器
- 混合多雲第二課——混合技術如何每年為京東節省上億元成本?
- 阿里人的不傳之秘:內部億級架構設計開發筆記(億級架構及最佳化等等)阿里架構筆記
- 4億安裝近千萬DAU 世界級遊戲爆款是如何研發的遊戲
- 千億級資料遷移mongodb成本節省及效能最佳化實踐(附效能對比質疑解答)MongoDB
- Facebook引入Haskell升級Sigma防禦系統Haskell
- Statista:Facebook收購WhatsApp如何完爆其他科技併購APP
- 百萬量級預約!IP改編手遊井噴式爆發
- 阿里雲Elasticsearch Severless 如何做到成本降低50%阿里Elasticsearch
- webpack專案開發完後,如何最佳化打包速度?Web
- 阿里釋出的規約外掛,細節都在這裡!!!阿里
- 300萬預約,上線3周流水破億,爆款《高能手辦團》背後的資料之道
- 乞丐是如何節約Java記憶體的Java記憶體
- Windows xp如何節約記憶體資源Windows記憶體
- AI降成本利器!阿里雲彈性加速計算例項來了,最高節省50%推理成本AI阿里
- 看《Among us》的爆火歷程,海外遊戲主播“整活”了派對遊戲遊戲
- 助推600+企業便捷地使用大資料,降低成本、節約能耗。大資料
- EMQX Cloud 更新:成本節省 20%+!低連線、大吞吐業務優選MQCloud
- 智慧合約量化跟單策略交易系統功能開發(需求細節)