業界多數排程器均通過通過佇列使用不同打分策略以one-by-one的方式排程容器,設計上並不感知後續待排程容器資訊,序列擴容順序會左右排程結果,進而極大地可能會導致資源的浪費。因此需要感知集群狀態,並且進行容器遷移以減少資源的浪費與作業佇列等待
集團內部應用與應用、分組與分組之間有各種排程規則約束,如應用分時錯峰、cpu/記憶體密集型應用交錯布局。但本賽題簡化問題描述,不增加這些複雜約束
集團應用根據不同畫像特性,cpu-model定義了cpu-share、cpu-set 兩種型別
在一定時間內排程的得分
資源: 我們強約束機器上所有容器占用資源不能超過機器可用資源,盡可能避免因為超賣導致極端的cpu時間片爭搶、oom等情況發生。
干擾:目前不涉及
綁核: 我們期望在容器排程的時候,socket、core、cpu 對於不同的應用容器繫結上有削峰填谷的效果,抑或numa場景下同node下cpu分配。
具體來說有一下三種約束:(1)應用容器(可能會使用多個cpu的時候)盡可能不要跨socket分配cpu(2)應用容器盡可能不要同core分配cpu。下圖中應用5違背此規則。(3)cpu敏感應用容器之間盡可能不要同core分配cpu。
總結起來就兩句話對於使用多核的容器盡量不要誇socket分配;相同的容器或者cpu敏感型應用容器避免資源競爭不要同core分配cpu堆疊: 根據應用的特性,我們需要滿足 堆疊和打散 的需求。一台機器上最多部署的容器個數找到容器例項(pod)排程的最佳節點。
replicasmaxinstancepernode:在容器例項到達一定數量的情況下,單機例項的堆疊數
排程結果滿足設定的約束,並盡可能的降低約束
最小化資源碎片,每個宿主機節點的資源盡量用完
最少化機器使用量,節省機器成本
打散約束:我們希望通過約束同一應用容器單機的部署數量,來減少宕機、同機其他容器對該應用容器的影響,且需要盡可能去優化容器堆疊數。
綁核約束:期望同一宿主機上容器部署,單一容器盡可能不要跨socket分配cpu、單一容器盡可能不要同core分配cpu、敏感應用容器之間盡可能不要同core分配cpu。不然易給業務容器帶來效能上的損失。
遷移約束:容器動態遷移無論在排程鏈路還是業務穩定性上都是有損的,因而我們期望在動態調整整個集群時能夠盡可能少的減少遷移的容器數量。
可參考kubernetes多套打分排程演算法。
可參考各類啟發排程演算法。
可參考各類搜尋演算法。
可參考線性規劃類排程演算法。
可參考mesos多資源drf演算法。
可參考向量裝箱演算法。
可參考智慧型粒子群演算法。
可參考機器學習訓練應用、機器分數權重來優化排程打分演算法。
可考慮同規格應用合併優化。
可考慮一部分資料提前貪心布局,一部分資料最優求解。
可考慮混合多演算法結合,如啟發、群演算法。
可考慮將整個資料規模切分,分治法求解。
可考慮利用多核特性併發求解,取最優。
2019 阿里巴巴雲原生這一年
劃重點 spring 官方宣布 spring cloud alibaba 畢業 serverless 任務編排服務函式工作流公測。函式工作流可靠地執行流程步驟,並提供視覺化 日誌記錄和審計來追蹤監控工作流的執行,大幅簡化使用者編排分布式任務 微服務的難度,幫助使用者聚焦業務邏輯的創新 edas 專有...
阿里巴巴雲原生實踐 15 講
2019年6月24日至6月26日,在由 cloud native computing foundation cncf 主辦的雲原生頂級技術大會 kubecon cloudnativecon open source summit 上海 上,阿里巴巴為全球企業和開發者分享了26場實踐經驗 行業趨勢和技術...
阿里巴巴2023年提前批程式設計題解析
光明小學的小朋友們要舉行一年一度的接力跑大賽了,但是小朋友們卻遇到了乙個難題 設計接力跑大賽的線路,你能幫助他們完成這項工作麼?光明小學可以抽象成一張有n個節點的圖,每兩點間都有一條道路相連。光明小學的每個班都有m個學生,所以你要為他們設計出一條恰好經過m條邊的路徑。光明小學的小朋友們希望全盤考慮所...