立即注册 登录
About云-梭伦科技 返回首页

admin的个人空间 https://www.aboutyun.com/?1 [收藏] [复制] [分享] [RSS]

日志

国内公有云对比- 功能介绍、性能测试

已有 1087 次阅读2014-9-14 10:34

问题导读
1.国内云商各有什么特点?
2.AWS性能测试中为何性能较低?
3.本测试中OS性能、IO性能哪些云平台比较稳定?


一、功能介绍

近一段时间以来,国内云计算市场再一次风起云涌。这一次热潮与以往热潮最大的不同,就是开始玩真的了。微软、阿里、百度、新浪、腾讯、360、IBM以及大量新兴企业,纷纷宣布近期在国内公有云领域的大动作,要么就是开始落地运营,要么就是推出大量的新服务,还有的开始大大免费牌。就连电子商务网站如同京东、美团都要进来掺乎一下,要在现在公有云起步阶段站稳脚跟。另外,百度、腾讯、360面向个人用户推出的免费网盘服务竞争的不亦乐乎。在这个过程中,最受益的当然是广大的用户,因为用户不是仅仅听到各大厂商的忽悠,而是可以实实在在的使用各家的资源和服务,切实的体验云计算的好处。

不过热闹归热闹,当用户真正去选择公有云时,就不难发现一个现实困境,就是如何选择一个适合自己的平台。公有云不像硬件,有着成熟的体系和标准,而用户选择时要考虑的因素也非常多,技术上主要的因素有性能、稳定性、安全性、网络、服务种类等等,而业务上则需要考虑价格、信任度、对自身业务上的帮助等。本文将简要对比下现在国内几个比较火的云平台(面向个人用户的除外,比如网盘),希望给大家一些初步的认识

本文对比的平台有以下:国内公有云对比: 功能篇之新浪云

国内公有云对比2- 功能篇之百度云

国内公有云对比3:功能篇之腾讯云

国内公有云对比4- 功能篇之阿里云

国内公有云对比5- 功能篇总结


先说明一点,由于国内公有云起步较晚,基本上所有的公有云都是模仿或者克隆国外现有的云平台,因此,这里不得不首先说明下国外几个主流的有代表性的云平台:
  • 亚马逊AWS http://aws.amazon.com/. 这个不用多讲,AWS是公有云第一品牌,也是业界标杆,从2006年起AWS就开始运营,可以说正是AWS造就了云计算当今的成果。AWS以IaaS起步,不过现今已经兼具IaaS和PaaS能力
  • 微软Windows Azure http://windowsazure.com 这个是微软的公有云,本人的博客有非常多的描述。Windows Azure从09年开始运营,最初以PaaS为主,如今也兼具IaaS和PaaS能力
  • Google Cloud https://cloud.google.com/. 起初Google主打PaaS服务App Engine,知道今年才推出IaaS服务
  • Linode. https://www.linode.com/ 其特色是价格便宜,使用简便。Linode是Linux node的缩写,不支持Windows。Linode的定位是VPS,其网络能力比较弱,没法支持虚拟网络。其价格差不多只有AWS和Windows Azure的一半。出于这些因素,Linode成为大量独立开发者的首选



二、测试

在简单了解各家云计算的能力之后,紧接着大家关注的问题就是性能、价格、稳定性等问题。本篇先从性能入手

本篇准备测试阿里云,Windows Azure中国站,并以AWS作为比较。测试对象以虚拟机为主,测试工具为两个:

  • Unixbench:开源的Linux性能测试工具,可以综合测试虚拟机的CPU、内存、文件、进程、脚本、系统调用、管道等多个维度,并且会给出一个总分。该工具介绍:http://code.google.com/p/byte-unixbench/

  • Orion: Oracle发布的一个免费IO测试工具,该工具可以测定磁盘的IOPS、吞吐量、延迟。尽管也有一些其他IO测试工具,比如dd、bonnie++、iozone,但是只有orion可以同时测定IOPS和吞吐量,这也是我选择该工具的原因。该工具介绍在http://www.oracle.com/technetwork/cn/topics/index-088165-zhs.html


OS性能测试

首先来看Unixbench,由于各家的虚拟机规格不同,我选择如下的虚拟机规格进行对比


测试使用的站点OS类型小规格中规格大规格
Windows Azure中国站北京CentOS 6.3 64位S
1核1.7G内存
M
2核3.5G内存
L
4核7G内存
AWS北美US EastCentOS 6.3 64位m1.small (1 ECU)
1核1.7G内存
m1.medium (2 ECU)
1核3.5G内存
m1.large (4 ECU)
2核7.5G内存
阿里云青岛CentOS 6.3 64位1核1.5G内存2核4G内存4核8G内存


尽管AWS的中规格只有1个核,但是根据AWS的配置,其等效的计算能力(ECU)是小规格的2倍,所以它跟Azure的M型是对等的。大规格同理
百度云和新浪云的虚拟机还未开放,暂不考虑
首先说明下测试过程。公平起见,本测试未做任何性能调优和配置变更,完全采用各家提供的缺省OS镜像。虚拟机也都没有配置SWAP分区


Unixbench安装与配置
首先用root登录目标虚拟机

1. 下载安装包。建议下载最新版

  1. wget http://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz




2. 解压缩
  1. tar zxvf UnixBench5.1.3.tgz





3. 进入UnixBench目录

4. 进行编译

make clean
make

5. 运行./Run即可开始测试,等待十几分钟即可

如果运行时报如下错误
  1. Can't locate Time/HiRes.pm






可以执行下
  1. yum install perl-Time-HiRes






安装缺少的包


在Windows Azure下,CentOS缺省没有安装gcc,可以在make之前运行如下命令安装gcc

yum --disableexcludes=main install gcc

在阿里云和AWS下,Unixbench需要安装一个perl扩展包,可在运行./Run前运行
yum install perl-Time-HiRes


Unixbench测试结果


虚拟机的性能,主要取决于两个因素:物理机性能,物理机上运行的虚拟机个数。了解虚拟化的人都会知道物理核和虚拟机的逻辑CPU(vCPU)并不是一一对应的。一个物理核可以支持多个vCPU,甚至一个超线程支持多个vCPU。这样一个2个4核支持超线程的处理器,首先在虚拟化层会变成16个核,进而可以支持最少16个vCPU。显然,vCPU对应的物理核配额越多,其性能就越好,Unixbench分数就越高

先看一下总分

 



1. AWS,这个分数不出意料的低。

Azure是AWS的3-4倍,而阿里云也有AWS的2-3倍。这个结果跟一个国外的第三方做的测试结果是类似的,详细情况可参考http://blog.csdn.net/shaunfang/article/details/9770527。为啥大名鼎鼎的AWS性能如此之差?这跟AWS的历史有关。AWS早在2006年就开始做云计算,当时就定下了小、中、大等虚拟机规格。大家都知道硬件能力每年都在增长,这样当AWS增加新的服务器时,其处理能力就比原有的强。如果新的服务器也支持同样的用户数,那么用户拿到的虚拟机就会比原有的强。这会造成用户在不同时间段申请的同规格虚拟机性能不同的情况。于是AWS提出一个ECU概念,即逻辑运算能力,用户申请的同规格虚拟机永远拥有类似的处理能力,并且用ECU来代表,比如1ECU就代表一个Sandy Bridge级Xeon的处理能力。这样的话,2010年的一台服务器可能会虚拟出10台小规格的虚拟机,而2013年的一台服务器就可以虚拟出20台虚拟机。阿里云和Windows Azure都比AWS晚,它们使用的处理器较新,起步的虚拟机规格就比AWS高好几倍了。目前,Azure所提供的一个逻辑核基本上对应一个服务器的物理核,而AWS显然是4、5个虚拟机共享一个物理核。另一方面,Azure的定价跟AWS一模一样,花一样的钱就可以获得比AWS强4倍的计算能力
AWS采用的是Intel Xeon E5430 CPU,主频2.66G,启用了超线程


  1.    OS: GNU/Linux -- 2.6.32-279.2.1.el6.centos.plus.x86_64 -- #1 SMP Thu Jul 19 16:20:44 CDT 2012
  2.    Machine: x86_64 (x86_64)
  3.    Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
  4.    CPU 0: Intel(R) Xeon(R) CPU E5430 @ 2.66GHz (5320.0 bogomips)
  5.           Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSCALL/SYSRET


2. 阿里云

尽管测试采用的阿里云主机配置不如Azure(主要是内存小一些),但是其最终性能却接近Azure,这说明阿里云采用的硬件比较新,另外,没有用一台物理机去支持大量虚拟机

从结果看,阿里云采用的是Intel Xeon E5-2420 CPU,主频1.9G,启用了超线程

  1.    OS: GNU/Linux -- 2.6.32-358.6.2.el6.x86_64 -- #1 SMP Thu May 16 20:59:36 UTC 2013
  2.    Machine: x86_64 (x86_64)
  3.    Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
  4.    CPU 0: Intel(R) Xeon(R) CPU E5-2420 0 @ 1.90GHz (3800.2 bogomips)
  5.           Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET


3. Windows Azure分数最高

从结果看,使用的是AMD 4171HE CPU,没有超线程
  1.    OS: GNU/Linux -- 2.6.32-279.14.1.el6.openlogic.x86_64 -- #1 SMP Wed Dec 12 18:33:43 UTC 2012
  2.    Machine: x86_64 (x86_64)
  3.    Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
  4.    CPU 0: AMD Opteron(tm) Processor 4171 HE (4189.4 bogomips)
  5.           x86-64, MMX, AMD MMX, Physical Address Ext, SYSCALL/SYSRET




结论:Windows Azure性能最好,是AWS的3-4倍,比阿里云高10-20%



IO测试
IO测试主要测试磁盘性能。目前,各家提供的虚拟机基本上有三种磁盘:
1. OS盘
2. 本地临时盘
3. 数据盘

其中,OS盘和数据盘都应该是持久化的,如果物理机故障或者虚拟机重启,上面的数据应该继续保留。OS盘和数据盘的区别,是数据盘建议用来存储应用和用户数据,而OS盘是缺省提供的,不建议放用户数据。数据盘一般可以虚拟机解绑,然后加载给其他虚拟机。本地临时盘是存储在物理机本地磁盘上,没有做持久化,很容易损坏或丢失,但其成本低,性能高,一般用来做缓存。

AWS和Azure都同时支持3种盘,阿里云支持OS盘和数据盘。AWS还有一种叫IOPS盘,本次没有比较


由于Orion测试需要清空数据,本测试只测数据盘和本地临时盘


虚拟机准备
每个测试都在一台小规格的虚拟机上完成,OS为CentOS 6.3 x64. 数据盘大小为10G


Orion安装与配置
Orion的下载需要去Oracle网站。
1. 进入www.oracle.com/technetwork/cn/topics/index-088165-zhs.html?TPCY5g
2. 选择x86_64版本下载,可能要求输入Oracle ID
3. 解压缩安装包
gzip -d orion_linux_x86-64.gz
4. 解压后得到一个文件,赋予执行权限
chmod +x orion_linux_x86-64
5. 创建 orion.lun文件,在里面写入测试的目标盘,比如/dev/xvdc. 需要注意,orion会直接在磁盘级进行读写,会损坏上面的文件系统,所以一定要用空磁盘进行测试

6. 执行读测试,该测试会进行4K大小的随机读和1M大小连续读
./orion_linux_x86-64 -run advanced -size_small 4 -verbose

7.执行写测试,该测试会进行4K大小的随机写和1M大小连续写

./orion_linux_x86-64 -run advanced -size_small 4 -write 100 -verbose
这个测试会进行几组8K大小的随机读写和1M大小的连续读写测试。前者用来测定IOPS能力,后者测定吞吐量


Orion测试结果IOPS,单位:操作/s,数字越大越好。

IOPS指标对于数据库类型的应用来说十分关键。


 


图中横轴代表的是采用Orion测试时并发线程数,或者叫IO队列深度。Orion测试IO性能的时候,会开启多个线程,每个线程循环进行IO操作。这样,当并发线程数多的时候,系统的IO请求会排队,能够进一步提升IO性能。当并发线程数大到一定程度时,比如20,系统的IO性能会饱和。在本次测试中,我们使用Orion缺省的测试方法,即并发线程数在1-5之间变化


  • 从数据盘的结果来看,Azure最好,并发线程数为5时,读写IO都可以达到800
  • 阿里云其次,读接近800,写有400多
  • AWS最不稳定。AWS官方的说法是提供100左右的IOPS,如果其他用户较闲,其IOPS也可以达到几百上千。从结果来看,AWS的IO性能在读写方面很不均匀,写很快而读很慢。结合网络上的资料来看,AWS的IO性能随时间、机型变化很大。显然,由于IO性能不稳定,AWS的自带磁盘是无法满足IO密集型应用需求的,所以AWS专门推出了一个IOPS存储来保证IOPS,而这种存储价格较高


作为对比,普通一块7200转的服务器硬盘(SATA盘)的IOPS一般为100左右,而存储专用的15000转的光纤盘IOPS可以达到200。因此,Azure的数据盘要比单块服务器硬盘快的多,基本上达到了一个小规模盘阵的处理能力


另外,本地临时盘的性能,要比持久化磁盘的性能强很多。临时盘使用了SSD来提升IO性能


本地临时盘
Windows Azure
1690
AWS
6302



吞吐量,单位MB/s,数字越大越好

 


可以看出Windows Azure性能最好,AWS和阿里云类似。由于需要做持久化,所有的数据盘流量都会经过网络,而公有云一般不会用光纤网络这种存储专用通道,这制约了数据盘的吞吐量,几十兆/s的性能基本和普通服务器硬盘的性能类似。作为对比,本地临时盘无需网络数据拷贝,性能超高



本地临时盘
Windows Azure
565
AWS
366



延迟,单位ms,数字越小越好

 


在数据盘部分,Azure的读写延迟都在10ms以内。阿里云的读延迟偏高。而AWS的读延迟更是高的夸张,而写延迟又非常低

临时盘性能大大超越数据盘,小于1ms的延迟一定是使用了缓存或者SSD技术


本地临时盘
Windows Azure
0.64ms
AWS
0.30ms


上面的测试都是在某一时间点的测试。我们知道虚拟机是运行在共享的硬件上,单一时刻的性能并不能体现虚拟机的综合性能和性能的稳定性。因此,我们还需要考察IO性能随时间变化的情况。


下面的测试,是连续24小时测试所有的虚拟机得出的性能结果

IOPS,数值越大越好,横轴是时间

 


结果显示:


  • AWS的性能确实十分不稳定,写性能最大和最小差5倍
  • 阿里云的性能相对稳定些,不过每天有一个时间性能会突然变差,这就是每天的晚上12点左右,阿里对虚拟机进行统一备份
  • Azure的性能最稳定,而且读写性能均衡

吞吐量,单位MB/s,数值越大越好,横轴是时间


 


结果显示:

  • Azure的性能最好,且稳定,24小时内都在60MB-110MB之间
  • AWS较不稳定
  • 阿里云每天会有一个性能低谷(备份时间)


延迟,单位ms,数值越小越好,横轴是时间
 

结果显示:

  • Azure最稳定,读写均衡,24小时内延迟都在5ms左右
  • AWS最不稳定
  • 阿里云每天会有一个突发性能下降(备份时间)

总结本文比较了AWS海外,阿里云和Azure三个公有云平台的OS性能和磁盘IO性能。

结果显示:

  • 在OS性能部分,同样规格的虚拟机Azure性能最好,阿里云次之,AWS性能仅有Azure和阿里云的几分之一
  • 在IO性能部分,对于普通数据磁盘,Azure的性能最好,最稳定,阿里云次之。AWS的普通磁盘性能非常不稳定,仅适合于顺序访问(追求吞吐量),而对于随机访问,必须使用价格更高的IOPS型磁盘。另外,要使用IOPS磁盘,必须使用专用型号的虚拟机(价格也高)

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条