理解 Azure 平台中虚拟机的计算能力
虛擬化平臺(tái)至今已經(jīng)發(fā)展了十多年的時(shí)間。其中 Hyper-V 技術(shù)現(xiàn)在也已經(jīng)是第三代版本。用戶對(duì)于虛擬化計(jì)算也越來越接受,這也有了公有云發(fā)展的基礎(chǔ)。然而在很多時(shí)候,用戶在使用基于 Hyper-V 的 Azure 平臺(tái)時(shí),仍然有關(guān)于虛擬機(jī)計(jì)算能力的疑問,例如 :
- 虛擬化的功能的確很強(qiáng)大,但是會(huì)不會(huì)有性能問題,運(yùn)行在 Hyper-V 平臺(tái)的虛擬機(jī)是不是比 Hyper-V 服務(wù)器的性能要差?
- 在 Azure 平臺(tái)上,由于 Azure 是多租戶的系統(tǒng),為了公平起見,是不是所有同一個(gè)大小,或是同一系列的虛擬機(jī)都會(huì)部署在同一種型號(hào)的物理服務(wù)器上?
- 我看到有的虛擬機(jī)使用的是 Intel 系列的 CPU,有的服務(wù)器使用的是 AMD 的 CPU,它們的主頻,性能都不同,為什么收費(fèi)是相同的,是不是當(dāng)中存在欺詐和不平等的行為?
今天,我們來詳細(xì)了解一下 Azure(Hyper-V)平臺(tái)上的虛擬機(jī)計(jì)算能力。在具體了解虛擬機(jī)的計(jì)算能力之前,我們先來設(shè)定一個(gè)計(jì)算能力的衡量標(biāo)準(zhǔn)。目前業(yè)界有很多 CPU 的評(píng)測(cè)工具。為簡(jiǎn)單起見,我選擇的是 wPrime,原因是:
- 容易使用,測(cè)試方法就是計(jì)算 10 億內(nèi)的所有自然數(shù)的平方根。
- 可以很方便選擇多個(gè)工作線程,這樣在多 CPU 的虛擬機(jī)上可以靈活配置。
- 測(cè)試不涉及內(nèi)存和磁盤系統(tǒng),結(jié)果也相對(duì)單純。運(yùn)算時(shí)間越長(zhǎng),運(yùn)算能力越差。
需要指出的是 wPrime 只是為了便于本文描述性能而采用的工具,其僅僅測(cè)試了虛擬機(jī) CPU 能力的某一個(gè)方面,并不代表微軟官方對(duì)于虛擬機(jī)計(jì)算能力的測(cè)試方法。本文中實(shí)測(cè)的數(shù)據(jù)僅僅是來自于一個(gè)或幾個(gè)特定實(shí)例,更多是用于表達(dá)不同虛擬機(jī)大小之間的比例關(guān)系,不作為官方衡量的依據(jù)。
針對(duì)于某些虛擬機(jī)計(jì)算能力的測(cè)試,實(shí)際上官方已經(jīng)公布了一些數(shù)據(jù)。而這些數(shù)據(jù)是基于業(yè)界公認(rèn)的測(cè)試方案,如 SPECint 2006 等。
- Linux VM 的計(jì)算基準(zhǔn)測(cè)試分?jǐn)?shù)
- Windows VM 的計(jì)算基準(zhǔn)測(cè)試分?jǐn)?shù)
眾所周知, Azure 平臺(tái)是基于 Hyper-V 架構(gòu)的。為了理解 Azure 平臺(tái)的虛擬機(jī)計(jì)算能力,我們需要初步了解下 Hyper-V 架構(gòu)。
此處并不需要詳細(xì)了解圖中所有方格代表的組件的工作原理,只需知道 Hyper-V 平臺(tái)存在兩種分區(qū)(Partition)。其中最常用的一個(gè)分區(qū),Child Partition,也就是我們通常意義上講的虛擬機(jī)。值得注意的是另一個(gè)特殊分區(qū),Root Partition,它是一個(gè)管理分區(qū),用來管理物理主機(jī)的設(shè)備驅(qū)動(dòng)、電源管理、設(shè)備熱插拔等。同時(shí),也是唯一可以直接訪問物理主機(jī)硬件資源的分區(qū)。此時(shí),大家可能已經(jīng)明白,在一臺(tái) Hyper-V 服務(wù)器上,當(dāng)我們連接上電源、鍵盤、鼠標(biāo)、顯示器,在本地登錄時(shí),我們實(shí)際上就是登陸了 Root Partition 這樣一臺(tái)虛擬機(jī)。而其他的 Child Partition 和 Root Partition 是并行的關(guān)系,Child Partition(虛擬機(jī))并不是運(yùn)行在 Root Partition 內(nèi)部的。
問題一:通常運(yùn)行在所謂的控制臺(tái)(Console)中的應(yīng)用程序,實(shí)際上是運(yùn)行在 Root Partition 這樣一臺(tái)虛擬機(jī)里的。那 Root Partition 和 Child Partition 的運(yùn)算能力有區(qū)別嗎?通過 wPrime 進(jìn)行第一個(gè)計(jì)算能力測(cè)試:在 Hyper-V 主機(jī)(Root Partition) 以及與其屬于同一物理服務(wù)器中的同樣核數(shù)的虛擬機(jī)上計(jì)算 10 億內(nèi)的所有自然數(shù)的平方根。為保證數(shù)據(jù)準(zhǔn)確,每臺(tái)機(jī)器計(jì)算兩次。結(jié)果如下:
| Child Partition | 236 秒 | 236 秒 | |
| Root Partition | 227 秒 | 229 秒 |
考慮到虛擬機(jī)內(nèi)部在測(cè)試時(shí)還有一定的 CPU 使用,以及 Root Partition 在 Hyper-V 的框架中的確有一些優(yōu)勢(shì),但是從測(cè)試結(jié)過上看,差距微乎其微,在 3% 左右。因此,為個(gè)人認(rèn)為從計(jì)算能力來看,Child Partition 和 Root Partition 是不存在差異的。
另外,我們注意到,Root Partition 和 Child Partition 顯示的 CPU 的型號(hào)是一致的,都是 i7-4770 @3.4GHz。其實(shí)這在 Hyper-V 的架構(gòu)上也可以理解。我們可以把物理主機(jī)的 CPU 資源看作是一個(gè)資源池,這個(gè)資源池原則上根據(jù)虛擬機(jī)的邏輯 CPU 的個(gè)數(shù),來平均分配給各個(gè)虛擬機(jī)。當(dāng)每個(gè) CPU 使用自己的時(shí)間片時(shí),他就可以使用物理 CPU 的主頻來完成自己的計(jì)算任務(wù)。
這時(shí),大家可能有一個(gè)疑問,在同一臺(tái) Hyper-V 主機(jī)上運(yùn)行的虛擬機(jī)的 CPU 是否有同樣的計(jì)算能力?換句話說,這些邏輯 CPU 是不是能夠以同等機(jī)會(huì)拿到 CPU 的時(shí)間片,當(dāng)它拿到 CPU 時(shí)間片后,是不是就能夠以物理主機(jī)的主頻來完成計(jì)算任務(wù)?我們來看一看 Hyper-V 上的虛擬機(jī)的 CPU 配置就清楚了:
在 Hyper-V 控制臺(tái)程序中,對(duì)于虛擬機(jī) CPU 配置有以下幾部分:
| Virtual Machine Reserve | 缺省為 0 | 系統(tǒng)為該虛擬機(jī)保留的 CPU 資源 |
| Virtual Machine Limit | 缺省為 100 | 該虛擬機(jī)可以達(dá)到的性能比例 |
| Relative Weight | 缺省為 100 | 該虛擬機(jī)在系統(tǒng)分配資源時(shí)的比重 |
第一個(gè)選項(xiàng)為虛擬機(jī)保留更多的資源,第二個(gè)選項(xiàng)限定了虛擬機(jī)是否可以完全使用物理資源,第三個(gè)選項(xiàng)設(shè)定了該虛擬機(jī)同其他虛擬機(jī)相比取得 CPU 時(shí)間片的幾率。其中第二第三個(gè)選項(xiàng)回答了我們之前的疑問:在同一臺(tái)物理主機(jī)上運(yùn)行的虛擬機(jī),他們?nèi)〉脮r(shí)間片的幾率是可以調(diào)整的,當(dāng)虛擬機(jī)獲得時(shí)間片之后,我們也可以限定它是否可以完全利用 CPU 的最大性能。簡(jiǎn)單的進(jìn)行測(cè)試,當(dāng)我們把 Virtual Machine Limit 的值從 100 改成 50,即表明該虛擬機(jī)只可以使用 50 的最大性能,測(cè)試結(jié)果如下:
| Limit = 100 | 330 秒 | 332 秒 | |
| Limit = 50 | 680 秒 | 679 秒 |
從測(cè)試中可以看出,當(dāng)虛擬機(jī)的上限被設(shè)定時(shí),虛擬機(jī)的計(jì)算能力也相應(yīng)被限定,盡管 Task Manager 中 CPU 的硬件型號(hào)及處理速度還和物理硬件保持一致。
小結(jié):
- Root Partition 和 Child Partition 在計(jì)算能力上沒有顯著的差異。
- 虛擬機(jī)的 CPU 類型與其物理主機(jī)的類型一致。它僅僅是一個(gè)硬件信息,而不代表計(jì)算能力。
- 在同一臺(tái)物理主機(jī)上運(yùn)行的多個(gè)虛擬機(jī),Hyper-V 完全有能力控制單個(gè)虛擬機(jī)的計(jì)算能力。
同時(shí),這也回答了我們?cè)谖恼麻_頭提到的第二個(gè)問題,同一大小,同一類型的虛擬機(jī)并不是一定部署在同一種硬件設(shè)備上。Hyper-V 可以控制虛擬機(jī)的計(jì)算能力。
在 Azure 平臺(tái)上,我們定義了很多虛擬機(jī)的大小標(biāo)準(zhǔn),其中只有 Dv2 系列和 F 系列的虛擬機(jī)指定了其是基于最新一代 2.4 GHz Intel Xeon E5-2673 v3 (Haswell) 處理器。對(duì)于其他系列的虛擬機(jī),Azure 并不保證其 CPU 的架構(gòu)是 Intel 或是 AMD。另外,對(duì)于 A 系列的虛擬機(jī),可以被放置在很多不同 CPU 類型的物理主機(jī)上。由于物理機(jī)房的服務(wù)器是在持續(xù)更新的過程中,其物理主機(jī)的運(yùn)算能力存在差異。但是根據(jù)我們之前的對(duì)于 Hyper-V 主機(jī)的分析可以得知,通過限定虛擬機(jī) CPU 資源(可以獲得的時(shí)間片的幾率,可以使用的物理資源的限定)的獲取,盡管主機(jī)的類型不同,用戶得到的是一致的 CPU 處理性能體驗(yàn)。
既然說到是一致的計(jì)算能力體驗(yàn),就存在一個(gè)衡量的標(biāo)準(zhǔn)。這也就是在 Azure 中引入 Azure Compute Unit(ACU)的原因。ACU 并不是一個(gè)絕對(duì)數(shù)值,而是我們將 A1 系列的虛擬機(jī)的單個(gè) CPU 計(jì)算能力定為 100,其他大小的虛擬機(jī)的單個(gè) CPU 計(jì)算能力為 A1 的倍數(shù)。例如,Dv2 系列虛擬機(jī)的單個(gè) CPU 的計(jì)算能力是 A1 系列的 2.1 到 2.5 倍,其 ACU 值為 210 到 250。我們?cè)?A,Av2 和 D 系列上來重復(fù) wPrime 測(cè)試 :
- A: Intel Xeon E5-2660 0 @2.20GHz
- Av2:Intel Xeon E5-2660 0 @2.20GHz
- Dv2:Intel Xeon E5-2673 v3 @2.40GHz
| A1 | 1 | 100 | 100 | 3830 秒 | 3822 秒 | 100 |
| A2 | 2 | 100 | 200 | 1926 秒 | 1896 秒 | 200 |
| A3 | 4 | 100 | 400 | 952 秒 | 940 秒 | 404 |
| A4 | 8 | 100 | 800 | 476 秒 | 471 秒 | 807 |
| A1_v2 | 1 | 100 | 100 | 3853 秒 | 3729 秒 | 101 |
| A2_v2 | 2 | 100 | 200 | 1883 秒 | 1845 秒 | 205 |
| A3_v2 | 4 | 100 | 400 | 923 秒 | 967 秒 | 405 |
| A4_v2 | 8 | 100 | 800 | 466 秒 | 466 秒 | 821 |
| D1_v2 | 1 | 210-250 | 210-250 | 1826 秒 | 1833 秒 | 209 |
| D2_v2 | 2 | 210-250 | 420-500 | 902 秒 | 902 秒 | 424 |
| D3_v2 | 4 | 210-250 | 840-1000 | 429 秒 | 428 秒 | 894 |
| D4_v2 | 8 | 210-250 | 1680-2000 | 221 秒 | 221 秒 | 1731 |
?備注
實(shí)測(cè)計(jì)算能力以兩次測(cè)試的平均值與 A1 的平均值 3826 相比,得到的計(jì)算能力。
在測(cè)試過程中,有 A 系列的虛擬機(jī)是使用 AMD Opteron Processor 4171 HE 的 CPU。根據(jù) wPrime 的測(cè)試結(jié)果,A1 到 A4 之間雖然保證相應(yīng)的比例關(guān)系,但不難發(fā)現(xiàn)同之前的 Intel 系列 CPU 的結(jié)果差距較大。其實(shí)這也是一個(gè)正常的結(jié)果,CPU 計(jì)算能力的測(cè)定往往同測(cè)試程序的編譯代碼,CPU 架構(gòu),服務(wù)器設(shè)計(jì)息息相關(guān)。在考慮 CPU 的計(jì)算能力時(shí),往往需要綜合考慮整型計(jì)算,浮點(diǎn)計(jì)算等等的測(cè)試結(jié)果。
| A1 | 1 | 100 | 100 | 2867 秒 | 2832 秒 |
| A2 | 2 | 100 | 200 | 1462 秒 | 1389 秒 |
| A3 | 4 | 100 | 400 | 724 秒 | 719 秒 |
| A4 | 8 | 100 | 800 | 350 秒 | 345 秒 |
針對(duì)于使用不同 CPU 架構(gòu)的虛擬機(jī)的計(jì)算能力,微軟內(nèi)部測(cè)試結(jié)果(結(jié)果暫未公開)表明,針對(duì)于 A 系列的虛擬機(jī),AMD Opteron Processor 4171 HE 的單個(gè) vCPU 的計(jì)算能力稍稍高于 Intel Xeon E5-2660 0 @2.20GHz,但誤差也僅僅在 5% 附近。這個(gè)數(shù)據(jù)可能和大多數(shù)用戶印象中的結(jié)論相反。使用 AMD 處理器的虛擬機(jī)在性能上并不弱于 Intel 處理器。
從以上的測(cè)試結(jié)果以及架構(gòu)分析中,我們可以確認(rèn)盡管在 Azure 平臺(tái)存在不同的物理主機(jī)類型,但是這對(duì)于 Azure 標(biāo)注的虛擬機(jī)計(jì)算能力,用戶可以得到一致的計(jì)算能力。
?
?
Azure 計(jì)算單位 (ACU) 這一概念提供一種比較 Azure SKU 的計(jì)算 (CPU) 性能的方法。?這有助于輕松確定最有可能滿足性能需求的 SKU。?ACU 目前在小型 (Standard_A1) VM 上標(biāo)準(zhǔn)為 100,而所有其他 SKU 表示 SKU 在運(yùn)行標(biāo)準(zhǔn)基準(zhǔn)測(cè)試時(shí)大約可以有多快。
?重要
ACU 只是一種規(guī)則。?工作負(fù)荷的結(jié)果可能會(huì)有所不同。
?
| A0 | 50 | 1:1 |
| A1 - A4 | 100 | 1:1 |
| A5 - A7 | 100 | 1:1 |
| A1_v2 - A8_v2 | 100 | 1:1 |
| A2m_v2 - A8m_v2 | 100 | 1:1 |
| D1 - D14 | 160 - 250 | 1:1 |
| D1_v2 - D15_v2 | 210 - 250* | 1:1 |
| DS1 - DS14 | 160 - 250 | 1:1 |
| DS1_v2 - DS15_v2 | 210 - 250* | 1:1 |
| D_v3 | 160 - 190* | 2:1*** |
| Ds_v3 | 160 - 190* | 2:1*** |
| E_v3 | 160 - 190* | 2:1*** |
| Es_v3 | 160 - 190* | 2:1*** |
| F2s_v2 - F72s_v2 | 195 - 210* | 2:1*** |
| F1 - F16 | 210 - 250* | 1:1 |
| F1s - F16s | 210 - 250* | 1:1 |
| M | 160 - 180 | 2:1*** |
*ACU 使用 Intel? Turbo 技術(shù)來增加 CPU 頻率和提升性能。?性能提升程度可能因 VM 大小、工作負(fù)荷和同一主機(jī)上運(yùn)行的其他工作負(fù)荷而有所不同。
***超線程,能夠運(yùn)行嵌套虛擬化
有關(guān)各種大小的詳細(xì)信息,請(qǐng)?jiān)L問以下鏈接:
- 通用
- 內(nèi)存優(yōu)化
- 計(jì)算優(yōu)化
- GPU 優(yōu)化
總結(jié)
以上是生活随笔為你收集整理的理解 Azure 平台中虚拟机的计算能力的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 当心!尿液变黄是身体在向你"报告"这几件
- 下一篇: Javascript获取类名方法