虚拟化平台至今已经发展了十多年的时间。其中 Hyper-V 技术现在也已经是第三代版本。用户对于虚拟化计算也越来越接受,这也有了公有云发展的基础。然而在很多时候,用户在使用基于 Hyper-V 的 Azure 平台时,仍然有关于虚拟机计算能力的疑问,例如 :

  • 虚拟化的功能的确很强大,但是会不会有性能问题,运行在 Hyper-V 平台的虚拟机是不是比 Hyper-V 服务器的性能要差?
  • 在 Azure 平台上,由于 Azure 是多租户的系统,为了公平起见,是不是所有同一个大小,或是同一系列的虚拟机都会部署在同一种型号的物理服务器上?
  • 我看到有的虚拟机使用的是 Intel 系列的 CPU,有的服务器使用的是 AMD 的 CPU,它们的主频,性能都不同,为什么收费是相同的,是不是当中存在欺诈和不平等的行为?

今天,我们来详细了解一下 Azure(Hyper-V)平台上的虚拟机计算能力。在具体了解虚拟机的计算能力之前,我们先来设定一个计算能力的衡量标准。目前业界有很多 CPU 的评测工具。为简单起见,我选择的是 wPrime,原因是:

  • 容易使用,测试方法就是计算 10 亿内的所有自然数的平方根。
  • 可以很方便选择多个工作线程,这样在多 CPU 的虚拟机上可以灵活配置。
  • 测试不涉及内存和磁盘系统,结果也相对单纯。运算时间越长,运算能力越差。

需要指出的是 wPrime 只是为了便于本文描述性能而采用的工具,其仅仅测试了虚拟机 CPU 能力的某一个方面,并不代表微软官方对于虚拟机计算能力的测试方法。本文中实测的数据仅仅是来自于一个或几个特定实例,更多是用于表达不同虚拟机大小之间的比例关系,不作为官方衡量的依据。

针对于某些虚拟机计算能力的测试,实际上官方已经公布了一些数据。而这些数据是基于业界公认的测试方案,如 SPECint 2006 等。

  • Linux VM 的计算基准测试分数
  • Windows VM 的计算基准测试分数

众所周知, Azure 平台是基于 Hyper-V 架构的。为了理解 Azure 平台的虚拟机计算能力,我们需要初步了解下 Hyper-V 架构。

此处并不需要详细了解图中所有方格代表的组件的工作原理,只需知道 Hyper-V 平台存在两种分区(Partition)。其中最常用的一个分区,Child Partition,也就是我们通常意义上讲的虚拟机。值得注意的是另一个特殊分区,Root Partition,它是一个管理分区,用来管理物理主机的设备驱动、电源管理、设备热插拔等。同时,也是唯一可以直接访问物理主机硬件资源的分区。此时,大家可能已经明白,在一台 Hyper-V 服务器上,当我们连接上电源、键盘、鼠标、显示器,在本地登录时,我们实际上就是登陆了 Root Partition 这样一台虚拟机。而其他的 Child Partition 和 Root Partition 是并行的关系,Child Partition(虚拟机)并不是运行在 Root Partition 内部的。

问题一:通常运行在所谓的控制台(Console)中的应用程序,实际上是运行在 Root Partition 这样一台虚拟机里的。那 Root Partition 和 Child Partition 的运算能力有区别吗?通过 wPrime 进行第一个计算能力测试:在 Hyper-V 主机(Root Partition) 以及与其属于同一物理服务器中的同样核数的虚拟机上计算 10 亿内的所有自然数的平方根。为保证数据准确,每台机器计算两次。结果如下:

分区 测试一 测试二 CPU 性能
Child Partition 236 秒 236 秒
Root Partition 227 秒 229 秒

考虑到虚拟机内部在测试时还有一定的 CPU 使用,以及 Root Partition 在 Hyper-V 的框架中的确有一些优势,但是从测试结过上看,差距微乎其微,在 3% 左右。因此,为个人认为从计算能力来看,Child Partition 和 Root Partition 是不存在差异的。

另外,我们注意到,Root Partition 和 Child Partition 显示的 CPU 的型号是一致的,都是 i7-4770 @3.4GHz。其实这在 Hyper-V 的架构上也可以理解。我们可以把物理主机的 CPU 资源看作是一个资源池,这个资源池原则上根据虚拟机的逻辑 CPU 的个数,来平均分配给各个虚拟机。当每个 CPU 使用自己的时间片时,他就可以使用物理 CPU 的主频来完成自己的计算任务。

这时,大家可能有一个疑问,在同一台 Hyper-V 主机上运行的虚拟机的 CPU 是否有同样的计算能力?换句话说,这些逻辑 CPU 是不是能够以同等机会拿到 CPU 的时间片,当它拿到 CPU 时间片后,是不是就能够以物理主机的主频来完成计算任务?我们来看一看 Hyper-V 上的虚拟机的 CPU 配置就清楚了:

在 Hyper-V 控制台程序中,对于虚拟机 CPU 配置有以下几部分:

CPU 配置 缺省值 说明
Virtual Machine Reserve 缺省为 0 系统为该虚拟机保留的 CPU 资源
Virtual Machine Limit 缺省为 100 该虚拟机可以达到的性能比例
Relative Weight 缺省为 100 该虚拟机在系统分配资源时的比重

第一个选项为虚拟机保留更多的资源,第二个选项限定了虚拟机是否可以完全使用物理资源,第三个选项设定了该虚拟机同其他虚拟机相比取得 CPU 时间片的几率。其中第二第三个选项回答了我们之前的疑问:在同一台物理主机上运行的虚拟机,他们取得时间片的几率是可以调整的,当虚拟机获得时间片之后,我们也可以限定它是否可以完全利用 CPU 的最大性能。简单的进行测试,当我们把 Virtual Machine Limit 的值从 100 改成 50,即表明该虚拟机只可以使用 50 的最大性能,测试结果如下:

Virtual Machine Limit 测试一 测试二 CPU 性能
Limit = 100 330 秒 332 秒
Limit = 50 680 秒 679 秒

从测试中可以看出,当虚拟机的上限被设定时,虚拟机的计算能力也相应被限定,尽管 Task Manager 中 CPU 的硬件型号及处理速度还和物理硬件保持一致。

小结

  • Root Partition 和 Child Partition 在计算能力上没有显著的差异。
  • 虚拟机的 CPU 类型与其物理主机的类型一致。它仅仅是一个硬件信息,而不代表计算能力。
  • 在同一台物理主机上运行的多个虚拟机,Hyper-V 完全有能力控制单个虚拟机的计算能力。

同时,这也回答了我们在文章开头提到的第二个问题,同一大小,同一类型的虚拟机并不是一定部署在同一种硬件设备上。Hyper-V 可以控制虚拟机的计算能力。

在 Azure 平台上,我们定义了很多虚拟机的大小标准,其中只有 Dv2 系列和 F 系列的虚拟机指定了其是基于最新一代 2.4 GHz Intel Xeon E5-2673 v3 (Haswell) 处理器。对于其他系列的虚拟机,Azure 并不保证其 CPU 的架构是 Intel 或是 AMD。另外,对于 A 系列的虚拟机,可以被放置在很多不同 CPU 类型的物理主机上。由于物理机房的服务器是在持续更新的过程中,其物理主机的运算能力存在差异。但是根据我们之前的对于 Hyper-V 主机的分析可以得知,通过限定虚拟机 CPU 资源(可以获得的时间片的几率,可以使用的物理资源的限定)的获取,尽管主机的类型不同,用户得到的是一致的 CPU 处理性能体验。

既然说到是一致的计算能力体验,就存在一个衡量的标准。这也就是在 Azure 中引入 Azure Compute Unit(ACU)的原因。ACU 并不是一个绝对数值,而是我们将 A1 系列的虚拟机的单个 CPU 计算能力定为 100,其他大小的虚拟机的单个 CPU 计算能力为 A1 的倍数。例如,Dv2 系列虚拟机的单个 CPU 的计算能力是 A1 系列的 2.1 到 2.5 倍,其 ACU 值为 210 到 250。我们在 A,Av2 和 D 系列上来重复 wPrime 测试 :

  • A: Intel Xeon E5-2660 0 @2.20GHz
  • Av2:Intel Xeon E5-2660 0 @2.20GHz
  • Dv2:Intel Xeon E5-2673 v3 @2.40GHz
大小 CPU 数 ACU/CPU ACU 总计 测试一 测试二 实测计算能力
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

备注

实测计算能力以两次测试的平均值与 A1 的平均值 3826 相比,得到的计算能力。

在测试过程中,有 A 系列的虚拟机是使用 AMD Opteron Processor 4171 HE 的 CPU。根据 wPrime 的测试结果,A1 到 A4 之间虽然保证相应的比例关系,但不难发现同之前的 Intel 系列 CPU 的结果差距较大。其实这也是一个正常的结果,CPU 计算能力的测定往往同测试程序的编译代码,CPU 架构,服务器设计息息相关。在考虑 CPU 的计算能力时,往往需要综合考虑整型计算,浮点计算等等的测试结果。

大小 CPU 数 ACU/CPU ACU 总计 测试一 测试二
A1 1 100 100 2867 秒 2832 秒
A2 2 100 200 1462 秒 1389 秒
A3 4 100 400 724 秒 719 秒
A4 8 100 800 350 秒 345 秒

针对于使用不同 CPU 架构的虚拟机的计算能力,微软内部测试结果(结果暂未公开)表明,针对于 A 系列的虚拟机,AMD Opteron Processor 4171 HE 的单个 vCPU 的计算能力稍稍高于 Intel Xeon E5-2660 0 @2.20GHz,但误差也仅仅在 5% 附近。这个数据可能和大多数用户印象中的结论相反。使用 AMD 处理器的虚拟机在性能上并不弱于 Intel 处理器。

从以上的测试结果以及架构分析中,我们可以确认尽管在 Azure 平台存在不同的物理主机类型,但是这对于 Azure 标注的虚拟机计算能力,用户可以得到一致的计算能力。

  1. 不同的主机型号,不同的 CPU 架构, ACU 数值可以得到控制以保证一致的计算体验。
  2. 当虚拟机的大小改变时,实际的计算能力根据 ACU 的标称值线性增长。
  3. 不同的虚拟机系列,都可以根据以 A1 系列换算的 ACU 数值,达到相应的计算能力。

Azure 计算单位 (ACU) 这一概念提供一种比较 Azure SKU 的计算 (CPU) 性能的方法。 这有助于轻松确定最有可能满足性能需求的 SKU。 ACU 目前在小型 (Standard_A1) VM 上标准为 100,而所有其他 SKU 表示 SKU 在运行标准基准测试时大约可以有多快。

重要

ACU 只是一种规则。 工作负荷的结果可能会有所不同。

SKU 系列 ACU\vCPU vCPU:核心
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 技术来增加 CPU 频率和提升性能。 性能提升程度可能因 VM 大小、工作负荷和同一主机上运行的其他工作负荷而有所不同。

***超线程,能够运行嵌套虚拟化

有关各种大小的详细信息,请访问以下链接:

  • 通用
  • 内存优化
  • 计算优化
  • GPU 优化

理解 Azure 平台中虚拟机的计算能力相关推荐

  1. 理解 Azure 虚拟机的性能监视

    随着越来越多的用户将生产应用迁移到云平台,一些传统 IT 的运维功能也相应的需要改变,例如监控,备份等等.我们希望通过这一系列的文章来协助用户更好的理解在 Azure 云平台上实现资源监控的方法. 在 ...

  2. Windows Azure 虚拟网络中虚拟机的网络隔离选项

     最近我们发布了一份<Windows网络安全白皮书>(单击此处下载),文中深入说明了客户可以如何利用该平台的本地功能,为他们的信息资产提供最好的保护. 由首席顾问Walter Myer ...

  3. 【Microsoft Azure 的1024种玩法】二十六. 在Azure VM中手动部署Windows Admin Center管理平台

    [简介] Windows Admin Center是微软开发的一套可以部署在本地基于浏览器的GUI的工具集平台,其平台可用于管理Windows相关服务器和PC机器,我们可以利用Windows Admi ...

  4. Azure平台跨存储迁移虚拟机

    客户场景描述: 近段时间,客户注册了Azure测试账号(一个月的使用时间),进行测试使用,搭建了WEB网站服务,客户对Azure云平台,针对web开发,应用服务,非常满意,准备把web网站正式投入到生 ...

  5. vmware workstation中搭建云平台,虚拟机重启遇到的问题

    单节点双网卡搭建云平台 在vmware workstation创建时一定要注意配置文件中开启虚拟化功能即下图中虚拟化引擎中勾选第二项 我开始搭建云平台时,未完成上述配置 搭建完成云平台后,测试创建虚拟 ...

  6. Azure 应用服务、虚拟机、Service Fabric 和云服务的比较

    Azure 提供了几种托管网站的方式:Azure 应用服务.虚拟机.Service Fabric 和云服务. 本文可帮助你了解这几种方式,并针对 Web 应用程序做出正确的选择. Azure 应用服务 ...

  7. Java 并发编程解析 | 如何正确理解Java领域中的锁机制,我们一般需要掌握哪些理论知识?

    苍穹之边,浩瀚之挚,眰恦之美: 悟心悟性,善始善终,惟善惟道! -- 朝槿<朝槿兮年说> 写在开头 提起Java领域中的锁,是否有种"道不尽红尘奢恋,诉不完人间恩怨"的 ...

  8. Java 平台中的增补字符

    作者:Sun Microsystems, Inc. 的 Norbert Lindenberg 和 Masayoshi Okutsu 2004 年 5 月 English: Supplementary ...

  9. azure的虚拟机怎么选_Windows Azure案例: 选虚拟机或云服务

    01虚拟机和云服务 随着云计算技术和市场的日渐成熟,企业在考虑IT管理和运维时的选择也更加多样化,应用也从传统部署方式,发展为私有云.公有云.和混合云等部署方式.作为微软核心的公有云平台,Window ...

最新文章

  1. controller不跳转页面的几个原因_狗狗为什么不睡觉?是这几个原因
  2. 统计学习导论:基于R应用——第二章习题
  3. NeurIPS 2021 | 华为诺亚Oral论文:基于频域的二值神经网络训练方法
  4. boost::spirit模块实现罗马数字解析器(演示符号表)的测试程序
  5. Mysql-高性能索引
  6. 干货 | 工行分布式数据库选型与大规模容器化实践
  7. C#常用类库----CSV文件操作类
  8. 搞笑证件生成php源码,搞笑证件生成器下载
  9. 集合的洗牌,排序,拆分以及常用遍历方法
  10. PHP获取真实客户端的真实IP REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR
  11. python日记Day12——numpy速查中文手册
  12. 三网手机号码归属地查询小程序源码
  13. python版js压缩工具
  14. 木瓜 移动端 java 高工
  15. 如何预防网站的DDos攻击?
  16. HTML DOM nextSibling 和nextElementSibling属性
  17. Hexo编译静态资源生成博客图文教程
  18. vue加载html传参,Vue页面跳转时传参总结
  19. Android UVCCamera问题——Cause: null pointer dereference
  20. 小目标检测3_注意力机制_Self-Attention

热门文章

  1. Xcode9的xib只支持iOS7.0及以上版本
  2. python如何优雅判断类型
  3. vsftpd安装问题汇总(持续更新。。)
  4. asp。net中常用的文件操作类
  5. 将一个5X5的矩阵中最大的元素放在中心, 4个角分别放4个最小的元素(顺序为从左到右,从上到下,从小到大存放)其余数字从小到大
  6. Java学习笔记5-1——多线程
  7. 7-13 部落 (25 分)
  8. java实现gdal栅格矢量化,《GDAL源码剖析与开发指南》一一1.5 GDAL源码目录
  9. id jquery选择器 开头_HTML的id选择器类选择器
  10. java 事物_java事务