聊聊降本提效這件事兒

語言: CN / TW / HK

本文根據作者在 9 月 20 日由中國計算機學會組織的 CCF TF 會議演講整理。

今天數字化的生產與生活方式成為後疫情時代的新常態,雲計算也已經成為社會的數字化基礎設施。如何利用雲原生技術幫助企業實現降本增效是很多 IT 管理者和開發者關注的話題。

01

背景

Aliware

01

阿里雲容器產品家族

阿里雲容器產品 ACK 覆蓋了從公共雲、邊緣雲、到本地數據中心的各個場景,讓所有需要雲能力的地方,都能獲得統一的容器基礎設施。

容器服務 ACK 支持了外部數萬企業客户 IT 架構的容器化,優化上雲成本,提升用雲效率,同時 ACK 也是很多阿里雲產品的基礎設施,支撐雲產品的 Serverless 化。比如阿里雲上消息服務、RDS 數據庫、數據湖分析、彈性 AI 服務等等。同時容器服務也支撐了阿里集團的全面雲原生化,目前規模已達到數千萬核。

02

FinOps 與雲原生

站在經濟學角度,雲計算是將 IT 的固定成本轉化成為可變成本,這對企業傳統的 IT 成本管理方法也帶來了挑戰。於是 FinOps 理念也應運而生。

在 FinOps 基金會的定義中:FinOps 是一種不斷髮展的雲財務管理科學與實踐,通過數據驅動的支出決策幫助工程、財務、技術和業務團隊進行協作,使組織能夠獲得最大的業務價值。

FinOps 是“Finance”和“DevOps”的綜合體,強調業務團隊和工程團隊之間的溝通與協同。 在 FinOps 實施過程中我們可以將其劃分為:成本洞察、成本優化、成本運營三個階段,幫助企業通過數字化手段實現成本可視,可優化與可控。

利用雲原生技術實現上雲效益優化,可以從幾個層次入手:

基礎設施層 ,我們關注的要點有:

  • 用法 – 選擇合適的算力適配工作負載,比如對高性能計算等場景,選擇計算型實例,或者利用 GPU、RDMA 等加速設備實現降本提效。

  • 用量 – 根據工作負載的特徵,進行合理的容量規劃。

  • 價格 – 選擇包年包月、按量付費,採用不同計費方法,在資源的確定性、成本之間進行合理取捨。

容器編排層 ,我們關注在分佈式集羣上,讓應用更加穩定、高效地運行,並充分利用雲的彈性能力降低成本。

應用架構層 ,我們既需要解決架構中的性能瓶頸,也需要關注應用架構的現代化,並將穩定性、可觀測性、安全等在研發流程左移,實現應用生命週期中的成本效率優化。

今天我會將聚焦在容器編排中的智能彈性、任務混部與數據加速等幾個方面介紹如何實現成本優化和效率提升。

02

Kubernetes 實現基礎設施彈性與應用彈性

Aliware

彈性是雲最核心的能力之一,可以有效降低計算成本,ACK 在資源層和應用層提供了豐富的彈性策略。

在資源層,當 K8s 集羣資源不足時,ACK 集羣可以利用 cluster-autoscaler 在節點池中自動創建新的節點實例。ACK 可以根據應用負載,選擇 ECS 虛擬機、神龍裸金屬實例進行擴容。基於阿里雲強大的彈性計算能力,可以在分鐘級實現千節點擴容。

在 ACK 集羣中一個更加簡化的方案是利用 ECI 彈性容器實例來實現彈性。ECI 基於輕量虛擬機提供了 Serverless 化的容器運行環境,具備強隔離、高彈性、免運維、免容量規劃的特性。彈性容器實例可以在 30 秒內擴容 3000 Pod,新浪微博利用 ECI 可以輕鬆應對突發的新聞事件;自動駕駛模擬仿真客户可以在 1 分鐘內拉起數萬核算力進行計算。

值得一提的是,我們可以使用 ECS 或者 ECI 的競價實例,利用阿里雲的空閒計算資源, 成本折扣可以低至按量付費實例的 90%。 競價實例非常適合無狀態和容錯性好的應用,比如批量數據處理或者視頻渲染等。

在應用層,Kubernetes 提供了 HPA 的方式進行 Pod 的水平伸縮,和 VPA 進行 Pod 的垂直伸縮。ACK 還內建了基於機器學習的 AHPA 方案來進一步簡化彈性體驗,提升彈性的 SLA。

01

應用水平伸縮面臨的挑戰與解決之道

在實踐中,很多業 務都存在波峯波谷,如果採用固定實例數的方式會造成較大的資源浪費。 因此 Kubernetes 中提供了 HPA 實現按需擴容實例數量,減少資源浪費。

HPA 可以根據應用負載變化調整設置實例數量,當應用負載高時擴容,當應用負載低時則縮容實例。但是 HPA 存在兩個不足:

  • 彈性的滯後性。彈性伸縮基於對監控指標的被動響應,此外由於應用本身啟動、底層資源擴容也需要一定時間。如果當業務高峯到達再擴容,有可能導致業務受損;

  • 配置的複雜性。HPA 的運行效果取決於彈性閾值的配置,配置過於激進可能導致應用穩定性受影響;配置過於保守,成本優化的效果就大打折扣。需要反覆嘗試才能達到一個合理的水平。而且隨着應用的變化,也會需要重新調整彈性策略。

CronHPA 是用户根據業務的週期性設定定時規則,在指定時間進行實例數伸縮,結合 HPA 可以在業務高峯期到來之前完成擴容,具備很好的確定性。它的缺點是手動設定較為複雜。

為此,達摩院團隊和阿里雲合作提出了一種 智能化彈性伸縮方案 AHPA ,可以根據歷史時序數據進行主動預測,提前擴容,避免彈性滯後。並且會根據實時數據動態調整主動預測結果,兼容週期變動等場景,減少人工干預。

03

AHPA

Aliware

01

核心辦法

AHPA 整體架構如圖 1 所示,分為數據採集、預測及彈性伸縮三大部分。

  • Data Collection 模塊負責從數據源收集監控 Metrics 指標並將數據轉為統一的格式傳入給 Prediction 模塊,兼容多種數據源,支持多種擴縮容指標。

  • Prediction 模塊負責根據輸入指標預測所需的 Pod 數量。Preprocessing 負責數據預處理,比如處理缺失數據等。完成預處理後將時序數據傳遞給 RobustScaler 算法進行分析和預測。

  • Scaling 模塊根據 Prediction 給出的結果,對 Pod 數量進行擴縮容。為保證應用平穩運行,其中  ScalingProtection 組件會對算法預測出的 Pod 數量進行修正,採取快速擴容,緩慢縮容的策略。

預測模塊中 RobustScaler 的算法框架實現如圖 2 所示。

  • 其中 Forecasting 組件用於時序數據分解。首先利用 RobustPeriod 算法檢測數據是否有周期性。如果數據存在週期性,則調用 RobustSTL(Seasonal-Trend Decomposition)算法分解出數據的趨勢、週期及殘差項;如果數據沒有周期性,則調用 RobustTrend 算法分解出趨勢和殘差項。

  • ResourceModel 組件用於資源模型構建,該模型的輸入為指標的時序數據,輸出為 Pod 數量。模型選用了統計學中的排隊模型。具體的模型與輸入的指標有關,單指標一般採用線性模型,多指標時往往採用非線性模型。

  • Planning 組件分為 Proactive 及 Reactive 兩種模式。Proactive 根據歷史指標數據進行主動預測,Reactive 根據實時數據進行被動預測。兩種模式的預測結果進行處理後輸出最終的擴縮容策略。

02

實驗結果

AHPA 採用的算法相比其他算法相比,具有較少的訓練數據量,更好的通用性和魯棒性等優勢。

• AHPA 可以幫助客户識別業務是否存在週期性;

• 當數據存在週期性時,AHPA 對數據缺失、毛刺以及業務變更引發的數據週期變化等有很強的魯棒性;

• 當數據不存在週期性時,AHPA 因具備一定的預測能力,可以提前感知數據趨勢變化;對數據丟失、噪音等有很強的魯棒性;

 

AHPA 相關論文也被 ICDE、SIGMOD 等頂會收錄。

03

AHPA 基於預測的自動彈性

AHPA 經在菜鳥 PaaS 平台、阿里雲智能語音服務多種場景經過驗證。

在智能語義交互場景中, 90% 的實例可以在業務來臨之前就緒。相比之前採用 HPA 方案,CPU 利用率提升 10% ,資源成本節省 20%。

04

分佈式系統中資源調度的複雜性挑戰

Aliware

Kubernetes 作為一個分佈式集羣管理系統,它的一個重要目標是:將適合的資源分配給適合的應用,滿足對應用的 QoS 要求和獲得最優的資源使用效率。

然而,分佈式系統的資源調度有着非常高的複雜性。主要挑戰包括:

  • 對多形態異構資源的支持。今天應用所需的計算資源不只是簡單的 CPU、內存、存儲等,而且包括多樣化的加速設備,比如 GPU、RDMA 等。而且,為了考慮到計算效率的最優化,要考慮到計算資源之間的拓撲,比如 CPU core 在 NUMA 節點間的佈局,GPU 設備間 NVLink 拓撲等。此外隨着高性能網絡的的發展、GPU 池化、內存池化等相繼出現,給資源調度帶來更多的動態性和複雜性。

  • 對多樣化的工作負載的支持。從 Stateless 的 Web 應用、微服務應用,到有狀態的中間件和數據應用,再到 AI、大數據、HPC 等計算任務類應用,他們對資源申請和使用方式有不同的需求。

  • 對多維度業務需求的支持。調度系統在滿足應用對資源需求的同時,也要滿足不同的業務需求,比如計算效率、優先級、穩定性、利用率等等。

調度系統需要多樣化的資源和多樣化約束之間進行動態決策,整體挑戰很高。

01

Koordinator-非侵入擴展 Kubernetes 支持任務混部

K8s 目前已經成為了容器編排和容器調度的事實標準,是雲時代的操作系統。我們希望可以利用 K8s 的編排調度能力,充分利用多種應用負載之間的削峯填谷效應,讓工作負載以更穩定、更高效、更低成本的方式去使用資源,這也是大家常説的任務“混部”能力。

阿里巴巴早在 2016 年就啟動了雲原生混部技術研發,歷經多輪技術架構升級和“雙 11”錘鍊,目前已實現全業務規模超千萬核的雲原生混部,日常 CPU 利用率在 50% 左右。基於阿里集團內部超大規模生產實踐經驗,阿里雲近期開源了雲原生混部項目 Koordinator ,它在 K8s 之上提供了對編排調度能力的增強。它包含三大核心能力:

  • 差異化 SLO 保障 :在 Kubernetes 之上抽象一套面向 QoS 的資源調度機制,比如延遲敏感型的在線類任務,和 Best effort 類型可搶佔的計算任務。在提升資源利用率的同時,讓低優先級的任務對延遲敏感型任務的影響 < 5%。

  • QoS 感知調度 :包括 CPU、GPU 拓撲感知等精細調度能力,幫助應用優化運行時性能效率,通過資源畫像、熱點打散等技術增強系統的調度和重調度能力,幫助應用改進運行時穩定性。

  • 任務調度 :支持大數據與 AI 相關的任務調度,比如 Gang、批量、優先級搶佔以及彈性 Quota(隊列間借用)等,從而更好地去彈性使用整個集羣資源。

Koordinator 項目完全兼容上游標準的 K8s,無需做任何侵入式修改。阿里雲容器服務提供了產品化支持,用户也可以基於開源項目應用在自己的場景中。這個項目還在快速發展的過程中,也歡迎大家一起共建。

02

差異化 SLO

Koordinator 可以 讓類似 Dubbo 微服務這樣的延遲敏感應用與 Spark 任務這樣的批處理計算任務可以同時運行在一個集羣中,從而提高集羣的資源利用效率。

Koordinator 提供了若干預定義的 QoS 類別,用於區分延遲敏感業務和延遲不敏感業務對運行時資源的差異化需求。Koordinator 通過資源畫像算法預測,可以將高優先級應用已分配但尚未使用的資源,超售給低優先級的計算任務。這樣可以將節點資源的分配率提高超過 100%。

如何保障資源超售場景下的應用穩定性是其中最大的挑戰。在運行態,Koordinator 節點側組件結合 CPU 微架構、OS、容器等多維度的資源隔離、干擾檢測、干擾抑制等手段,讓低優先級的任務對延遲敏感型任務的影響 < 5%。

這裏面會利用操作系統內核 cgroup的一部分能力;也針對新一代雲原生芯片進行優化。比如,通過 CPU 微架構的精細化拓撲感知,優化進程排布,提升緩存命中率,降低跨 NUMA 內存訪問等。在 Intel 芯片之上,我們可以通過引入 RDT、HWDRC 等技術可以根據用户應用的 QoS,動態調整 L3 緩存帶寬,降低由於內存帶寬爭搶導致的性能波動。

03

Spark 混部效果展示

在測試的 ACK 集羣上,有兩個 8 核 8G 工作節點。 每個節點已經部署一個 Nginx 測試應用。

我們把 Spark 任務以混部的方式提交到集羣上。這裏通過 metadata 指明瞭其 qosClass 為 BE,也就是 BestEffort,。並通過擴展資源描述了其資源申請和限額。

通過混部,我們可以看到,系統 CPU 利用率從不足 20%提升至近 50%;而且測試應用的響應延遲只增加了 4.4%。

Koordinator 可以在保障延遲敏感型應用的 QoS 前提下,實現資源利用率提升。

04

QoS 感知調度、重調度

此外,在 K8s 集羣中的工作負載是持續變化、彈性伸縮的。隨着時間的推移,集羣的資源分配狀態可能會失去平衡,比如可能出現部分負載熱點,可能導致應用運行延遲大幅增長。

以 CPU 負載為例,Koordinator 提供了 CPU 負載感知的調度能力,讓 Kubernetes 調度意識到資源分配和實際資源利用率之間的差距,在調度打分階段進行綜合的決策,避免將負載調度到熱點的節點上導致雪崩。

同時,為了持續的保障節點負載均衡,Koordinator 吸納了社區的經驗,為用户提供了下一代可擴展的重調度框架,同時提供了缺省的負載感知重調度策略,持續的驅動集羣的負載編排向優化目標靠攏。

下圖顯示了經過 Koordinator QoS 感知調度和重調度,集羣中節點資源實際利用率相對均衡,消除了熱點。

越來越多的 AI/大數據應用,希望通過容器化來簡化管理、提升彈性、優化資源利用率。過去 K8s 主要面向 Stateless 和 Stateful 應用,對計算任務類應用支持有限。阿里雲團隊和 K8s 社區展開了很多合作,完善了 Scheduler framework 並提供了一些關鍵的調度插件,來滿足計算任務類應用對資源效率、任務特徵、業務需求等的特殊性。目前,Kubernetes 社區成立 Batch Working Group,我們也一起定義 Batch Job、Queue 等核心 API、標準架構和參考實現。

我們也計劃通過 Koordinator 中開放 ACK 產品中對 AI、大數據、HPC 等異構工作負載的支持。

在 ACK 中,通過 CPU 拓撲感知調度,在內存密集型任務場景,相比於社區方案有 20%~40%的性能優化,在 AI 分佈式訓練任務,調度器針可以自動選擇最佳多 GPU 卡間互聯拓撲,提供最大通信帶寬,提升計算效率。對 ResNet、VGG 等典型 CV 類模型訓練有 1~3 倍加速。

05

數據密集型應用在雲原生環境上的挑戰

Aliware

除了調度之外,AI,大數據,HPC 等數據密集型應用雲原生化,還有一些技術挑戰有待解決, 具體來説:

  • 異構數據源帶來的多樣性挑戰 :企業中不同應用所依賴的存儲實現各不相同,有 HDFS、NAS、S3/OSS等等;其數據訪問的 I/O 特性也不同,比如隨機讀海量小文件和順序讀大文件。隨着業務場景的發展,經常需要聯合處理來自不同的存儲系統的數據,這樣帶來了異構數據源訪問的複雜性。

  • 存算分離架構導致的 I/O 性能和吞吐的挑戰 :計算存儲分離架構可以大大降低存儲成本,並且提升計算彈性。但相應增加了了數據訪問延時。這有可能導致計算性能的下降,降低 CPU/GPU 等資源的實際利用率。而隨着彈性深度學習等技術的興起,算力可以根據計算成本或者收斂效率變化而動態擴縮容,進而帶來 I/O 容量規劃和供給的變化。

  • 跨作業數據共享效率低下的挑戰 :通過對模型訓練集羣的觀察,我們發現很多訓練任務使用同樣的數據集。同一作業流水線上的不同步驟也可能需要訪問相同的數據。但是由於這些數據重用無法被調度系統感知,導致數據被反覆拉取,降低了整體計算效率,也加劇了對數據源 I/O 資源的爭搶。

01

Fluid-數據編排的核心方法

為了能夠更好的解決數據密集型應用在雲原生環境上的問題,我們在開源數據編排項目 Fluid 中 對“計算任務使用數據的過程”進行抽象,提出了彈性數據集 Dataset 的概念,並作為“first class citizen”在 Kubernetes 中實現。

  • 數據集 Dataset,可以實現對異構數據源的統一管理和統一訪問抽象。

  • 通過自動緩存擴容和智能預取實現數據加速;還可以根據數據集的訪問的模式,來自動優化數據緩存的生命週期策略。

  • 調度系統可以自動感知多任務之間的數據集關聯與血緣,基於數據共享優化作業調度。

02

Fluid-雲原生數據編排與加速

Fluid 是阿里雲容器服務團隊和南京大學、Alluxio 聯合發起的開源項目,目前是 CNCF 託管的 Sandbox 項目,並且在 ACK 上也有對應的產品能力。主要由阿里雲容器服務團隊維護。另外 Fluid 也得到了也得到許多業界同行的支持,像中國電信、SAP、百度雲、騰訊雲都在積極貢獻。

Fluid 在架構上有幾個特點:

  • 零侵入 – 無縫融合 Kubernetes 生態;

  • 可擴展 – 支持多種緩存引擎,比如阿里雲 JindoFS、騰訊雲 GooseFS、開源的 Alluxio、JuiceFS 等等;

  • 高彈性 – 除了支持經典的 K8s 之外,對 Serverless 容器也進行支持,支持緩存 I/O 吞吐的水平擴展。

如果大家有 興趣可以進一步瞭解 Fluid 背後設計的思想的一些探索,相關論文已經被 ICDE 接收,歡迎查閲。 這個領域也是非常新的一個領域,希望大家能夠一起在社區參與創新。

03

Fluid-加速 AI 訓練效果

比如在 Resnet50 圖像分類模型訓練中。如果直接使用 OSSFS 進行數據訪問,在多機訓練環境中會受到 OSS 總帶寬的限制,訓練性能出現衰減。利用 Fluid 緩存加速支持分佈式訓練,可以實現接近線性的橫向擴展能力。與原方案相比,在 16 台 128 卡環境下,性能提升 80%。

在微博測試場景中,Fluid 針對海量小文件緩存優化,可以大大降低 HDFS 壓力,訓練速度提升 9 倍。

06

雲原生 FinOps 成本管理,助力企業高效用雲

Aliware

阿里云為企業構建了先進、普惠的雲原生產品家族。

2022 年 1 季度,在權威諮詢機構 Forrester 發佈的公共雲容器平台分析師報吿中,阿里雲容器服務 ACK 成為比肩 Google 的全球領導者,這也是首次有中國科技公司進入容器服務領導者象限。

在 2022 年 8 月,CSDN 2022  中國開發者調查報吿中,52%開發者選擇阿里雲容器雲平台。

今年 5 月阿里雲憑藉在雲上成本管理的產品能力,以滿分的成績通過了全部 33 個能力指標,成為國內首家通過信通院《雲成本優化標準》的雲服務商。

非常期待與大家共同探索,利用雲原生 FinOps 產品能力和技術,助力企業實現高效用雲。