Who limits the resource efficiency of my datacenter: an analysis of Alibaba datacenter traces
這篇文章發在 IWQoS 2019,是包雲崗老師團隊的工作,是 Jing Guo 和 Zihao Chang 在阿里巴巴實習期間發表的文章。本文對阿里巴巴 2018 年公布的第二版開源數據進行了詳細的分析,主要聚焦在數據中心資源使用效率上。
阿里巴巴在 2018 年 12 月公布了其第二版混部集群的開源數據,這版數據包含了4000+台機器的 8 天運行時數據,包括 4K 台機器、9K 個在線任務和 4M 個離線任務的靜態和運行時數據。
需要注意的是,2017、2018 這兩版數據,均是阿里巴巴內部私有雲的集群數據,並不是阿里雲的數據。
開源數據傳送門:https://github.com/alibaba/clusterdata
論文傳送門:https://dl.acm.org/citation.cfm?doid=3326285.3329074
本文對阿里巴巴 2018 年的公開數據集進行了詳細的分析,從在線任務和離線任務資源分配方式的不同切入,揭示了三個 insight:
- 在阿里巴巴的混部集群中,內存似乎成為了新的瓶頸,限制了資源使用效率的進一步提升。
- 離線任務在阿里巴巴的混部集群中優先順序低於延遲敏感型任務,同時具有相對較低的資源 QoS 要求,被限制了在混部集群的可調度時間、資源使用等,同時部分任務也出現了重調度等問題
- 在這版數據集中,90%以上的在線應用為 Java 應用,大量封裝在虛擬機中的 JVM,使集群中資源管理更加複雜,同時進一步限制了資源使用效率。
建議對本文感興趣的小夥伴可以閱讀一下論文原文,以下內容只是論文中的一小部分。
阿里巴巴混部集群架構
看過這篇文章(《集群調度框架的架構演進過程》)的小夥伴應該了解到,目前的集群作業調度框架有幾種主流形式:單體式、兩層架構、共享狀態、分散式(具體可參考以上文章)。
因為一些歷史原因,阿里巴巴的混部集群中,為了將在線任務和離線任務混合在一起運行,他們沒有重新設計一個調度器,而是使用了一種共享狀態和兩層調度相混合的調度框架。如下圖所示,Sigma 負責調度集群內的在線任務,Fuxi 負責調度集群內的離線任務。因為本身這兩個調度框架是獨立的,但為了實現混部和統一在離線資源池的目的,使用了一個協調的方式來解決調度的問題。Level-0(零層)就扮演了這麼一個協調的角色,它負責兩個調度器之間的數據傳輸、通信等等,通過這種方式來將兩個獨立的資源池合併起來。Level1 中有兩個調度器(Sigma 和 Fuxi),每個調度器的 Master 節點都可以看到整個統一資源池中機器節點的狀態,每台機器上都有這兩個調度器的 agent。同時在調度器的上一層(Level2)是各個不同的業務,如搜索、資料庫、MaxCompute 等。
這種共享狀態和兩層調度相結合的調度框架,在 2017 與 2018 年兩年的雙十一都得到了成功的驗證。