隨著云計算市場規模的快速增長,各云廠商基礎設施投入也不斷增加,但行業普遍存在資源利用率低的問題,在上述背景下,提升資源利用率已經成為了一個重要的技術課題。
將業務區分優先級混合部署(下文簡稱混部)是典型有效的資源利用率提升手段。業務可根據時延敏感性分為高優先級業務和低優先級業務。當高優先級業務和低優先級業務發生資源競爭時,需優先保障高優先級業務的資源供給。
業務混部的核心技術是資源隔離控制,主要涉及內核態基礎資源隔離技術及用戶態 QoS 控制技術。Skylark 是一種虛擬機混部場景下的 QoS 感知的資源調度器,由 openEuler Skylark 組件承載,在 Skylark 視角下,優先級粒度為虛擬機級別,即給虛擬機新增高低優先級屬性,以虛擬機為粒度進行資源的隔離和控制,在保障高優先級虛擬機 QoS 前提下提升物理機資源利用率。內核層提供了一些基礎資源干擾隔離機制,比如 CPU 調度硬優先級機制以及 SMT(硬件超線程)干擾隔離機制等。此外集群管理系統軟件 OpenStack 也需要感知虛擬機優先級,設計實現一套混部資源模型。
虛擬機混部由 openEuler 社區 OpenStack SIG、Virt SIG 以及 Kernel SIG 聯合開發。本文主要介紹 Skylark 組件的功耗管理技術。
為什么需要管理功耗
隨著各種混部方案的提出,服務器利用率有了明顯的提升。但是平均利用率的提高伴隨著的是瞬時利用率沖到 100%的概率大幅增加。服務器一般是以睿頻頻率運行,當 CPU 以滿負荷運行一段時間后,功耗的持續增加會大幅超過 TDP 觸發 CPU 降頻。由于服務器是以整顆 CPU 供電,所以同一顆 CPU 上的所有 core 將會同時降頻,將會影響該 CPU 上運行的所有虛擬機對應的客戶業務 QoS。當利用率降低后,功耗也降低到一定值時,頻率將再次升高到睿頻。因此,高的資源利用率會間接導致 CPU QoS 下降,在虛擬機混部后需要在提高資源利用率的同時保證 CPU QoS 或者說客戶業務不受到影響。
本文詳細介紹并分享了功耗相關的基礎概念以及虛擬機混部技術中功耗管理的技術細節。
CPU 功耗來源
CPU 的功耗主要是由晶體管工作產生,其功耗主要分為開關功耗、短路功耗和漏電功耗三類。下圖為 CMOS 反向示意圖。
其中,開關功耗主要是電容的充放電。例如當輸入低電平時,輸出端負載電容會進行一次充電。當輸入變成高電平時,電容中儲存的電能會以熱量的形式被釋放。當 CPU 中幾十億個晶體管同時釋放時,將會產生大量的熱能。短路功耗則是 P 管和 N 管短路時產生的功耗。漏電功耗是 CMOS 管不能嚴格關閉時發生漏電所產生的功耗,與制程和溫度有關。
CPU 功耗關系公式:
公式中,C 代表電容率(Capacitance),是個常數,和 CPU 的工藝相關,在 CPU 出廠時確定。P 是功耗(Power),F 是 CPU 運行的頻率(Frequency),V 是電壓(Voltage)。可以看出 CPU 的功耗和 CPU 運行的電壓以及運行的頻率成正比。而其中,電壓 V 和頻率有一定的對應關系,這是因為當 CPU 的場效應管進行一次充放電需要一定時間,只有充放電完成后采樣才能保證信號的完整性。電壓越高,充電的時間越短,即翻轉的頻率就越大。
TDP 是什么
TDP(Thermal Design Power)即熱設計功耗,簡稱熱功耗。它是用來指示 CPU 或者 GPU 在滿負荷運行時,散熱器需要達到的散熱熱量。根據能量守恒原理,CPU 運行需要輸入能量,即電源的功率。輸入的電流經過電容產生熱量,以熱能以及其他形式的能量散發出來,這些熱能如果沒有耗散掉,那么 CPU 的溫度則會越來越高,影響 CPU 的運行,TDP 代表了按照 CPU 設計運行的溫度范圍內需要耗散的熱能,是散熱系統的重要參考指標。TDP 越大,表示 CPU 在滿負荷工作產生的熱量就越大。
隨著睿頻 2.0 技術引入,TDP 已經不是 CPU 能夠排除的最大熱量了。在睿頻 2.0 中,引入了 PL1、PL2、PL3、PL4、和 Tau。
PL1 是 CPU 運行在默認主頻不含睿頻和 AVX 的功耗,大多數情況等于 TDP。PL2 是 CPU 可以達到超過 TDP 工作的最大功率限制。可以看出在 Tau 時間內 CPU 是可以超過 TDP 閾值運行的。PL3/PL4 一般廠家不設置,這里略過。Tau 是 CPU 能在 PL2 運行的最長時間。
在實際生產中,由于需要考慮到各種冗余以及生產安全,服務器并不能一直在最高功率下運行,而且為了保護 CPU,甚至會設置"功耗墻",當功耗大于一定閾值時,CPU 會自動調用調頻接口通過降低 CPU 的頻率來降低功耗。當功耗降低,CPU 溫度回復正常時,CPU 頻率會逐漸回復到原先頻率。
混部功耗管理技術
在 Skylark 虛擬機混部方案中,我們有數據采集,QoS 實時分析,QoS 實時控制,三個核心模塊。在這三個模塊中,通過以下算法實現功耗管理:
「功耗相關數據采集」:根據 host 上的 topo 關系,通過 MSR 寄存器,準確采集計算 CPU 每個核的頻率,以及每個 package 的功耗。
「功耗及利用率實時分析」:在每個定時周期中,根據設定的 TDP 閾值,標記功耗熱點 package,以及降頻 CPU 核,對降頻核上運行的虛擬機 CPU 利用率進行排序。由于我們要盡量保證高優先級虛擬機的 QoS,所以利用率最高的若干個低優先級虛擬機將被放入 QoS 調整隊列。
「QoS 實時控制」:在每個 QoS 調整周期,根據 CPU 核狀態,功耗熱點 package,限制或恢復 QoS 調整隊列中虛擬機 vCPU 的 CPU 帶寬,通過降低 CPU 帶寬,將減小降頻核的 CPU 利用率,來達到降低功耗的目的。
總結
在使用了高低優先級虛擬機混部方案之后,平均資源利用率的提高對應著 QoS 降低的風險也隨之增加。在 CPU 突發滿負載運行時,可能會因功耗升高觸發降頻而導致 CPU QoS 下降。我們在 Skylark 中提出了功耗管理技術,通過調整熱點低優先級虛擬機 vCPU 的 CPU 帶寬來間接調整功耗,保障 CPU QoS。
審核編輯:湯梓紅
-
cpu
+關注
關注
68文章
10870瀏覽量
211875 -
功耗
+關注
關注
1文章
810瀏覽量
31955 -
虛擬機
+關注
關注
1文章
917瀏覽量
28218 -
功耗管理
+關注
關注
0文章
8瀏覽量
7180 -
openEuler
+關注
關注
2文章
316瀏覽量
5894
原文標題:openEuler資源利用率提升之道 05:虛機混部介紹與功耗管理技術
文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論