隨著云計算市場規(guī)模的快速增長,各云廠商基礎(chǔ)設(shè)施投入也不斷增加,但行業(yè)普遍存在資源利用率低的問題,在上述背景下,提升資源利用率已經(jīng)成為了一個重要的技術(shù)課題。
將業(yè)務(wù)區(qū)分優(yōu)先級混合部署(下文簡稱混部)是典型有效的資源利用率提升手段。業(yè)務(wù)可根據(jù)時延敏感性分為高優(yōu)先級業(yè)務(wù)和低優(yōu)先級業(yè)務(wù)。當(dāng)高優(yōu)先級業(yè)務(wù)和低優(yōu)先級業(yè)務(wù)發(fā)生資源競爭時,需優(yōu)先保障高優(yōu)先級業(yè)務(wù)的資源供給。
業(yè)務(wù)混部的核心技術(shù)是資源隔離控制,主要涉及內(nèi)核態(tài)基礎(chǔ)資源隔離技術(shù)及用戶態(tài) QoS 控制技術(shù)。Skylark 是一種虛擬機(jī)混部場景下的 QoS 感知的資源調(diào)度器,由 openEuler Skylark 組件承載,在 Skylark 視角下,優(yōu)先級粒度為虛擬機(jī)級別,即給虛擬機(jī)新增高低優(yōu)先級屬性,以虛擬機(jī)為粒度進(jìn)行資源的隔離和控制,在保障高優(yōu)先級虛擬機(jī) QoS 前提下提升物理機(jī)資源利用率。內(nèi)核層提供了一些基礎(chǔ)資源干擾隔離機(jī)制,比如 CPU 調(diào)度硬優(yōu)先級機(jī)制以及 SMT(硬件超線程)干擾隔離機(jī)制等。此外集群管理系統(tǒng)軟件 OpenStack 也需要感知虛擬機(jī)優(yōu)先級,設(shè)計實(shí)現(xiàn)一套混部資源模型。
虛擬機(jī)混部由 openEuler 社區(qū) OpenStack SIG、Virt SIG 以及 Kernel SIG 聯(lián)合開發(fā)。本文主要介紹 Skylark 組件的功耗管理技術(shù)。
為什么需要管理功耗
隨著各種混部方案的提出,服務(wù)器利用率有了明顯的提升。但是平均利用率的提高伴隨著的是瞬時利用率沖到 100%的概率大幅增加。服務(wù)器一般是以睿頻頻率運(yùn)行,當(dāng) CPU 以滿負(fù)荷運(yùn)行一段時間后,功耗的持續(xù)增加會大幅超過 TDP 觸發(fā) CPU 降頻。由于服務(wù)器是以整顆 CPU 供電,所以同一顆 CPU 上的所有 core 將會同時降頻,將會影響該 CPU 上運(yùn)行的所有虛擬機(jī)對應(yīng)的客戶業(yè)務(wù) QoS。當(dāng)利用率降低后,功耗也降低到一定值時,頻率將再次升高到睿頻。因此,高的資源利用率會間接導(dǎo)致 CPU QoS 下降,在虛擬機(jī)混部后需要在提高資源利用率的同時保證 CPU QoS 或者說客戶業(yè)務(wù)不受到影響。
本文詳細(xì)介紹并分享了功耗相關(guān)的基礎(chǔ)概念以及虛擬機(jī)混部技術(shù)中功耗管理的技術(shù)細(xì)節(jié)。
CPU 功耗來源
CPU 的功耗主要是由晶體管工作產(chǎn)生,其功耗主要分為開關(guān)功耗、短路功耗和漏電功耗三類。下圖為 CMOS 反向示意圖。

其中,開關(guān)功耗主要是電容的充放電。例如當(dāng)輸入低電平時,輸出端負(fù)載電容會進(jìn)行一次充電。當(dāng)輸入變成高電平時,電容中儲存的電能會以熱量的形式被釋放。當(dāng) CPU 中幾十億個晶體管同時釋放時,將會產(chǎn)生大量的熱能。短路功耗則是 P 管和 N 管短路時產(chǎn)生的功耗。漏電功耗是 CMOS 管不能嚴(yán)格關(guān)閉時發(fā)生漏電所產(chǎn)生的功耗,與制程和溫度有關(guān)。
CPU 功耗關(guān)系公式:

公式中,C 代表電容率(Capacitance),是個常數(shù),和 CPU 的工藝相關(guān),在 CPU 出廠時確定。P 是功耗(Power),F(xiàn) 是 CPU 運(yùn)行的頻率(Frequency),V 是電壓(Voltage)。可以看出 CPU 的功耗和 CPU 運(yùn)行的電壓以及運(yùn)行的頻率成正比。而其中,電壓 V 和頻率有一定的對應(yīng)關(guān)系,這是因為當(dāng) CPU 的場效應(yīng)管進(jìn)行一次充放電需要一定時間,只有充放電完成后采樣才能保證信號的完整性。電壓越高,充電的時間越短,即翻轉(zhuǎn)的頻率就越大。
TDP 是什么
TDP(Thermal Design Power)即熱設(shè)計功耗,簡稱熱功耗。它是用來指示 CPU 或者 GPU 在滿負(fù)荷運(yùn)行時,散熱器需要達(dá)到的散熱熱量。根據(jù)能量守恒原理,CPU 運(yùn)行需要輸入能量,即電源的功率。輸入的電流經(jīng)過電容產(chǎn)生熱量,以熱能以及其他形式的能量散發(fā)出來,這些熱能如果沒有耗散掉,那么 CPU 的溫度則會越來越高,影響 CPU 的運(yùn)行,TDP 代表了按照 CPU 設(shè)計運(yùn)行的溫度范圍內(nèi)需要耗散的熱能,是散熱系統(tǒng)的重要參考指標(biāo)。TDP 越大,表示 CPU 在滿負(fù)荷工作產(chǎn)生的熱量就越大。
隨著睿頻 2.0 技術(shù)引入,TDP 已經(jīng)不是 CPU 能夠排除的最大熱量了。在睿頻 2.0 中,引入了 PL1、PL2、PL3、PL4、和 Tau。
PL1 是 CPU 運(yùn)行在默認(rèn)主頻不含睿頻和 AVX 的功耗,大多數(shù)情況等于 TDP。PL2 是 CPU 可以達(dá)到超過 TDP 工作的最大功率限制??梢钥闯鲈?Tau 時間內(nèi) CPU 是可以超過 TDP 閾值運(yùn)行的。PL3/PL4 一般廠家不設(shè)置,這里略過。Tau 是 CPU 能在 PL2 運(yùn)行的最長時間。
在實(shí)際生產(chǎn)中,由于需要考慮到各種冗余以及生產(chǎn)安全,服務(wù)器并不能一直在最高功率下運(yùn)行,而且為了保護(hù) CPU,甚至?xí)O(shè)置"功耗墻",當(dāng)功耗大于一定閾值時,CPU 會自動調(diào)用調(diào)頻接口通過降低 CPU 的頻率來降低功耗。當(dāng)功耗降低,CPU 溫度回復(fù)正常時,CPU 頻率會逐漸回復(fù)到原先頻率。
混部功耗管理技術(shù)
在 Skylark 虛擬機(jī)混部方案中,我們有數(shù)據(jù)采集,QoS 實(shí)時分析,QoS 實(shí)時控制,三個核心模塊。在這三個模塊中,通過以下算法實(shí)現(xiàn)功耗管理:
「功耗相關(guān)數(shù)據(jù)采集」:根據(jù) host 上的 topo 關(guān)系,通過 MSR 寄存器,準(zhǔn)確采集計算 CPU 每個核的頻率,以及每個 package 的功耗。
「功耗及利用率實(shí)時分析」:在每個定時周期中,根據(jù)設(shè)定的 TDP 閾值,標(biāo)記功耗熱點(diǎn) package,以及降頻 CPU 核,對降頻核上運(yùn)行的虛擬機(jī) CPU 利用率進(jìn)行排序。由于我們要盡量保證高優(yōu)先級虛擬機(jī)的 QoS,所以利用率最高的若干個低優(yōu)先級虛擬機(jī)將被放入 QoS 調(diào)整隊列。
「QoS 實(shí)時控制」:在每個 QoS 調(diào)整周期,根據(jù) CPU 核狀態(tài),功耗熱點(diǎn) package,限制或恢復(fù) QoS 調(diào)整隊列中虛擬機(jī) vCPU 的 CPU 帶寬,通過降低 CPU 帶寬,將減小降頻核的 CPU 利用率,來達(dá)到降低功耗的目的。
總結(jié)
在使用了高低優(yōu)先級虛擬機(jī)混部方案之后,平均資源利用率的提高對應(yīng)著 QoS 降低的風(fēng)險也隨之增加。在 CPU 突發(fā)滿負(fù)載運(yùn)行時,可能會因功耗升高觸發(fā)降頻而導(dǎo)致 CPU QoS 下降。我們在 Skylark 中提出了功耗管理技術(shù),通過調(diào)整熱點(diǎn)低優(yōu)先級虛擬機(jī) vCPU 的 CPU 帶寬來間接調(diào)整功耗,保障 CPU QoS。
審核編輯:湯梓紅
-
cpu
+關(guān)注
關(guān)注
68文章
11193瀏覽量
221896 -
功耗
+關(guān)注
關(guān)注
1文章
837瀏覽量
33049 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
966瀏覽量
30055 -
功耗管理
+關(guān)注
關(guān)注
0文章
9瀏覽量
7275 -
openEuler
+關(guān)注
關(guān)注
2文章
331瀏覽量
6644
原文標(biāo)題:openEuler資源利用率提升之道 05:虛機(jī)混部介紹與功耗管理技術(shù)
文章出處:【微信號:openEulercommunity,微信公眾號:openEuler】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
一種提升存儲資源利用率的方法
提升現(xiàn)網(wǎng)網(wǎng)絡(luò)資源的利用率和網(wǎng)絡(luò)承載能力的方法
openEuler 資源利用率提升之道 01:概論
openEuler資源利用率提升之道02:典型應(yīng)用下的效果
openEuler 資源利用率提升之道 03:rubik 混部引擎簡介
openEuler 資源利用率提升之道 04:CPU 搶占和 SMT 隔離控制
關(guān)于Swarm和Mesos資源利用率優(yōu)化實(shí)踐分析
云虛擬機(jī)按需物理資源分配方法
基于虛擬機(jī)負(fù)載高峰特征的虛擬機(jī)放置策略
基于自適應(yīng)虛擬機(jī)遷移的云資源調(diào)度及架構(gòu)
openEuler Summit 2021-云/虛擬化分論壇:業(yè)內(nèi)解決方案+虛擬機(jī)系統(tǒng)模擬
openEuler資源利用率提升之道:虛擬機(jī)混部OpenStack調(diào)度
廣凌房產(chǎn)管理系統(tǒng)(一):土地資源管理,提高資產(chǎn)資源利用率
Docker與虛擬機(jī)的區(qū)別
hyper 內(nèi)存,Hyper內(nèi)存:如何監(jiān)控與優(yōu)化hyper-v虛擬機(jī)的內(nèi)存使用

openEuler資源利用率提升之道:虛擬機(jī)混部介紹與功耗管理技術(shù)
評論