问题导读
1. 国内云商各有什么特点?
2. AWS性能测试中为何性能较低?
3. 本测试中OS性能、IO性能哪些云平台比较稳定?
本原文最早整理发表于米扑博客:
一、功能介绍
近一段时间以来,国内外云计算市场再一次风起云涌。这一次热潮与以往热潮最大的不同,就是开始玩真的了。微软、AWS、阿里、百度、新浪、腾讯、360、IBM以及大量新兴企业,纷纷宣布近期在国内公有云领域的大动作,要么就是开始落地运营,要么就是推出大量的新服务,还有的开始大大免费牌。就连电子商务网站如同京东、美团都要进来掺乎一下(详见米扑博客:全球云服务商对比:阿里云,太贵了),要在现在公有云起步阶段站稳脚跟。
另外,百度、腾讯、360面向个人用户推出的免费网盘服务竞争的不亦乐乎。在这个过程中,最受益的当然是广大的用户,因为用户不是仅仅听到各大厂商的忽悠,而是可以实实在在的使用各家的资源和服务,切实的体验云计算的好处。
不过热闹归热闹,当用户真正去选择公有云时,就不难发现一个现实困境,就是如何选择一个适合自己的平台。公有云不像硬件,有着成熟的体系和标准,而用户选择时要考虑的因素也非常多,技术上主要的因素有性能、稳定性、安全性、网络、服务种类等等,而业务上则需要考虑价格、信任度、对自身业务上的帮助等。本文将简要对比下现在国内几个比较火的云平台(面向个人用户的除外,比如网盘),希望给大家一些初步的认识
本文对比的平台有以下:
新浪云(SAE、SCH)
新浪算是国内做公有云较早的厂商了。它的模仿对象是GAE,主要提供PaaS服务,名字也很类似,叫做Sina app engine, SAE。不过,近期新浪也准备推出虚拟机服务,进入IaaS领域。目前SAE支持PHP,Python,Java语言。其使用模式是:用户在本地开发代码,然后上传至SAE环境,SAE端为代码提供了运行环境和存储空间,SAE还提供监控、弹性伸缩等服务。这样,开发者不需要任何运维手段和工具,也不需要自己部署、管理服务器
目前,SAE提供以下4类服务:
- 存储类,包括MySQL、对象存储、Key-Value存储、Memcached缓存等
- 计算类,包括定时器、图片处理、邮件发送、网页抓取、消息队列等
- 辅助类,包括防火墙,以及一些应用迁移和调试工具
- 扩展类,包括地理信息服务,应该是由第三方提供的服务
SAE的管理界面很明显是以应用为核心的,每个应用的配置、代码及其关联的服务可以独立管理。
从其功能来看,SAE显然是面向互联网应用。
从技术层面来看,SAE的功能已经比较完整。
其优点是运行时间比较久,据官方说法已有52万个应用
不过,SAE的弱点也很明显:
1. 缺乏IaaS能力,这样就对开发者的自由度进行了局限。PaaS虽好,但是限制太多,语言、版本、组件、服务皆不能自由选择。
2. 缺乏与BAT(baidu, ali, tencent)抗衡的杀手锏。之前BAT都没有大举进入云计算特别是PaaS领域,而从今年开始,各家都推出了各自的AppEngine,而且,百度有搜索导入,腾讯有用户导入,他们会对SAE的用户产生很大的吸引力
3. 不提供备案,只对已备案的应用提供托管能力。这就是说,新的应用没法直接部署到SAE上,而是要找个第三方绕一下
百度云(BAE、BCC)
百度云推出的时间不长,与其声势浩大的网盘服务相比,其面向开发者的IaaS/PaaS服务相对有些默默无闻。百度网盘的首页是cloud.baidu.com,而面向开发者的首页是developer.baidu.com。如果直接搜索百度云,我们会直接进入百度网盘,可见百度对于云的定位还是以消费者为主,开发者为辅。后面为了区分百度云盘和面向开发者的云,我们把后者称为百度开发者云。
尽管如此,百度开发者云还是提供了完整的功能。
从其首页我们可以看出几个特点:
1. 面向web应用和移动应用
2. 将端和云整合在一起。尽管百度没有自己的应用商店,但是百度最近收购了91,其企图是通过强化移动入口吸引开发者,这样,百度就有了两个入口(搜索和手机助手)。因此,开发者门户并不是单纯的云服务门户,而是云+端+一系列工具一体的服务平台
下图是其开发者中心的管理门户,这里面渠道管理是指前端(web和app),开放云服务是后台
而主要的云服务都在应用引擎里面
在功能上,开发者云主要提供了AppEngine,称为BAE。这个BAE看起来功能比SAE更强大,SAE有的BAE都有,而且在存储上增加了Redis和MongoDB,通讯上增加了推送和触发服务。此外还提供了虚拟机服务。目前虚拟机服务只对少数开发者开放。
从文档上看,虚拟机服务支持windows/centos/ubuntu/redhat,规格上最小1核3G,最大4核32G,支持VNC连接虚拟机Console(这样虚拟机无需网络,甚至无需完全启动)。不过,很显然该虚拟机服务能力十分有限,首先它只有临时盘,无法进行数据持久化;其次它缺乏网络、安全支持。所以,目前的功能跟VPS类似,尚不是成熟的IaaS平台
另外,百度云并没有披露其物理机房信息和网络接入情况,目前来看部署应用时无法选择部署位置。这样的话,显然无法实现异地负载均衡和容灾,不太适合规模化应用。最后,与SAE一样,BAE并没有提出SLA承诺
做一个总结,百度开发者云定位在面向Web应用和移动App的PaaS平台,会主要和SAE和腾讯App Engine竞争
腾讯云
最近,腾讯也加入了面向开发者提供公有云服务的行列。目前,该服务只向少数用户开放,我有幸申请到一个账号,可以先睹为快
腾讯云的一个主要卖点是其游戏平台,众所周知,腾讯的主要收入来自于游戏,而腾讯也将自己的平台开放出来,让其他开发商的游戏接入进来,一同做大游戏市场。作为平台提供商,腾讯对于其接入的游戏有一定要求,收入分成就不用说了,除此以外,还需要将游戏托管在腾讯云之上,这也是腾讯云的起源。如今,腾讯把这个云平台开放给其他用户,不仅面向游戏,也面向所有Web和移动开发者。显然,云的利润比游戏低得多,腾讯这样做,主要也是希望聚集开发者,赢得人气
从腾讯云的公开案例来看,现在的用户都是游戏开发商
连入腾讯云的管理界面后,可以看到所有已订阅的服务。目前腾讯云上的服务比较少,核心服务就是3个:虚拟机、MySQL数据库、NoSQL存储。下面逐一了解下每个服务
虚拟机的配置可选范围较大,最小1个共享核1G内存,最大12核60G内存。操作系统包括3种Linux,不支持Windows
部署虚拟机时,没有地方选择部署机房,因此,腾讯云目前只有一个机房,估计在深圳
部署虚拟机后,可以对虚拟机控制,包括:重启、重置密码、回收、格式化。目测每个VM只支持一个系统盘和一个数据盘,而且数据盘部署以后无法改变大小,也无法从虚拟机解绑。腾讯宣布10月18日开始支持云硬盘,应该是对目前功能的改进
目前腾讯虚拟机没有任何安全防护,部署虚拟机后就直接暴露在公网上,安全性上有很大风险
云数据库是基于mysql做的服务,最大支持600GB,支持7500/秒TPS。管理界面采用phpMyAdmin
NoSQL存储是一个兼容Memcached的高速数据存储服务,估计是借鉴了Memcached的内存存储服务,它支持数据持久化,类似redis的思路。至于性能,腾讯并未公布
其他的几项服务,主要起支撑作用,比如CDN、云监控、负载均衡。值得注意的是,弹性Web服务也即将推出
综上,腾讯云目前的功能比较有限,而且也没有承诺服务质量,目前还无法做出完整的评价。不过腾讯的定位显然不是只做IaaS,而是希望成为完整的IaaS+PaaS服务提供商,从而支撑以游戏为主的生态系统。
上个月试用了下腾讯云,结果被黑了
腾讯云上来送了1000元费用,于是开个个虚拟机玩了下,总共开了没几天。结果前两天发邮件过来,说欠费800多,就是说不到一个月消费了1800。我赶紧查账单,结果看到了这样的计费
什么?带宽竟然收了600元。赶紧去查一下带宽怎么收费。原来带宽不算在虚拟机费用里面,是单独计费的。具体计费方法,简单来说就是:看你一天当中最大带宽占用,然后按此计费。也就是说,不管你总共传了多少数据,只看峰值,而且一个月里面只看峰值最高的几天。具体价格是这样:
IDC带宽当月总使用量小于等于300Mbps的部分,单价:1.80元/Mbps
IDC带宽当月总使用量大于300Mbps的部分,单价:3.60元/Mbps
我那几天的流量是这样的
因此,就算我一个月只有3天有流量,而其他时间流量为0,那么也按这三天算钱,而每天也是按峰值来算
其实我不记得为什么会有这么大峰值,也许是我下了个软件,也许是被黑了。但无论怎样,我收到一个天价账单(10倍于虚拟机的价格)
但另一方面,腾讯云并没有限制流量的方法,只要开公网ip,用户就要自己限制流量,否则就等着被黑吧
那么另1000块钱是怎么回事?腾讯云每个月会先冻结一部分金额,不管用不用,这样可能月初时账户就成负数了,到月末再把未消费的返还。账号变为负以后,会收到这样一封邮件:
为了保障您的业务能正常运营,请您务必充值缴纳全部欠费,如未能如期缴齐欠费,平台将采取包括且不限于以下措施,以维护平台的合法权益。由此造成的一切损失,由您自行承担:
1、系统自动回收您在腾讯云中所有的云资源(云服务器、云数据库、NoSQL高速存储、CDN所有数据);
2、要求您合法承担所欠金额(如从腾讯应支付给您的其他费用中直接抵扣);
3、法律范围内可以采取的其他措施。
太坑了吧,本来就是预付费还要预付中再预付,还没消费就把钱扣光然后要求充值抵账,电信运营商也没这么狠啊。按第三条,难不成还要起诉我?吓的我赶紧关掉所有服务
阿里云
如果说新浪SAE要做中国的GAE,那么阿里云就是想做中国的AWS。
阿里云早在几年前就布局云计算,时至今日已经小有规模。通过前几篇的分析,不难发现其他几家大型互联网企业的IaaS服务都是刚刚起步,而微软的Windows Azure也还没在国内正式运营。所以,目前想用IaaS的大中型企业之前基本上只有一个选择,那就是阿里云。不过,目前Windows Azure已经开始提供小范围使用,再加上其他几个厂商的加入,阿里云未来面临的竞争也会更加激烈。
阿里云的口号是,打造数据分享的第一平台,显然,做IaaS只是一个起步。阿里云在几年前收购了万网,获得了相应的IDC运营资质和用户,也解决了IaaS领域了大部分问题,比如备案、域名注册、安全防护等等。这跟微软与世纪互联合作,IBM与首都在线合作都是一个思路。这几家都是要踏踏实实做服务的,眼光不仅仅只是Web应用和移动应用,还包括了企业应用的范围。
从阿里云的服务类型来看,跟腾讯云十分类似。由于阿里云先,腾讯云后推出,可见腾讯云很大程度上参考了阿里云
在云服务器部分,阿里云提供windows/centos/ubuntu/redhat/debian多种OS,规格上,最小共享核512M内存,最大8核32G内存。全国有两个机房,分别在青岛和杭州
在部署模式上,阿里支持包月包年和按量两种,选择配置时,阿里云会实时计算出价格,这一点十分方便。同时,在部署和取消虚拟机时,阿里云都会短信确认,同时发送管理员密码到用户手机上。这一点上,更符合互联网用户习惯,或者说,跟支付宝是一个风格
从实际使用来看,按量付费十分不好用:部署后无法变更配置,无法增加磁盘,无法修改磁盘空间,无法停机。而且,启动按量付费的虚拟机时,账户余额必须大于100元。对于开发者来说,如果想临时启动一个虚拟机进行调试,就会比较麻烦。包月方式支持配置变更,但是最少也要花每月69元。按量付费唯一一个方便的功能,是支持定时删除虚拟机
包月形式的
虚拟机的管理界面比较简单,具有基本的虚拟机、磁盘、快照、镜像管理功能。虚拟机支持启动停止、修改密码。网络部分的功能十分欠缺
阿里云的磁盘支持快照,可以从快照回滚。不过不能从快照创建新的磁盘。另外,一个磁盘也无法从一个主机解挂,再加载给另一个虚拟机。也就是说,两个虚拟机之间无法通过磁盘、快照等方式进行数据移动,只能在应用层面进行网络拷贝。同时,按量付费的虚拟机只能加载一个数据磁盘,无法实现多块磁盘做条带化。而包月的虚拟机最多有4个数据盘
阿里云的资源管理和资源申请是在两个不同的门户里面。资源申请类似一个购物车,结账后资源出现在管理控制台里面。用户使用的时候,需要频繁在多个界面间切换
云引擎部分,支持php和Node.js,支持memcache,消息队列,计划任务
云数据库部分,支持MySQL和SQL Server
阿里云最具特色的要算它的存储服务,也正好印证了它的口号,要在数据上大作文章。阿里云在存储上的服务有6项,而存储之外的服务只有5项。在6个服务中,包含关系数据库、对象存储、结构化存储、大数据服务
另外,阿里也仿照AWS,建立了一个SaaS市场,为阿里云上的用户提供了一个用户入口。
阿里云前期积累的用户很多,有赞扬的,也有不断吐槽的,比如博客园。
总的来说,阿里云的优势是进入IaaS领域早,继承了万网的服务能力,提供免费的备案服务,提供免费的网站搬迁服务,这对中小网站十分有吸引力。同时,阿里云的市场推广力度大,广告打的到处都是,今天打折,明天赠送,很是热闹。阿里云的缺点,在IaaS部分缺乏虚拟网络和VPN,无法进行虚拟机组网,无法满足传统应用在在组网上的需求,而在PaaS上,阿里云的能力十分欠缺,这会导致客户粘性差,造成客户十分容易流失
青云
说起青云,很多人可能没听说过,不过,一年之内这个名字必然成为国内云计算热点。青云是一家创业公司,专注做IaaS,目标是超越亚马逊。这家公司成立只有半年,两个月前开始接受试用。它的试用是完全免费的,也不需要邀请,给个邮箱就行。
青云官网: www.qingcloud.com
青云为什么有超越亚马逊的志向?
下面我就简要分析下。青云的CEO richard来自IBM,IBM有蓝云,所以青云的意思很明显,是青出于蓝。Richard是个极客程序员,他另外两个合伙人,分别来自腾讯和百度,而这家公司目前的团队规模,我猜测不超过10人。是不是很有硅谷范儿?Richard在IBM的时候,开发了一个项目,叫HSLT(High Scale Low Touch),这个产品就是一个IaaS平台,跟青云十分类似。HSLT完全基于互联网技术开发,跟传统的IBM软件开发方式完全不同,其核心思想是基于大规模分布式的低成本硬件,构建高可靠的IaaS平台。HSLT有几个特点,第一是虚拟机部署快,第二是系统支持自愈,第三是全软件实现虚拟存储、虚拟网络。尽管功能上跟OpenStack类似,但架构上HSLT跟openstack完全不同。HSLT从架构上就是为了满足上万台虚拟机部署和管理而设计的,或者说,是为了满足大规模公有云的需求设计的。这个产品是有跟AWS竞争的潜力。而青云不仅具备HSLT的完整功能,还具备了额外的功能,那就是用SDN实现的虚拟网络
青云绝对不是简简单单实现各家都有的功能,而是在几个功能点上做到极致,从而体现它的“酷”,否则,这种创业企业是无法跟其他巨头竞争的。在这几个功能点上,青云可以秒杀国内所有的IaaS提供商,这绝对不是夸大。
下面就眼见为实吧。门户左侧是其提供的服务,似乎看不出什么特别。这几项都是IaaS常见的服务。不过它的门户很清爽,而且将服务实例、日志、账户余额乃至工单都集成在了一起。这就是小而精的好处
青云的奥妙,就在这每个服务里面。只能说,用过才知道
神奇1:虚拟机从申请到部署完成只需要8秒,启动只需要1秒!同时部署10个100个虚拟机也是一样快。基本上,用户只要点击创建虚拟机,一眨眼虚拟机就可以登录了。
要知道,AWS上启动虚拟机,最快也得一两分钟,而国内的IaaS服务,基本都得5-10分钟。那青云是怎么做到的呢?虚拟机的部署,一般过程是:从源存储位置拷贝一个OS镜像作为虚拟机系统盘-〉宿主物理机挂载该系统盘进行配置->启动虚拟机。青云对这个过程进行了优化,在拷贝时采用了Copy on write技术,就是不进行真正的拷贝,而是获得一个快照,并将后续的写操作写入新的空间,这样,虚拟机就可以即时启动。此外,青云对linux进行了精简,只保留最基本的包,特别精简了自启动服务,这样实现了虚拟机从启动到现实登录界面只需1秒
从操作日志可以看出,不仅是虚拟机创建,基本上所有的操作,都是在秒级完成,可见青云将管理效率追求到极致
因为能做到秒级部署,所以青云提出按秒计费,世界上估计就此一家
神奇2:支持完善的虚拟网络和VPN,而且支持图形化设计
这个功能阿里云现在都还没有,更别说腾讯百度新浪了,而这个功能实际上是企业用户十分看重的,有了这两项功能才能更安全的连接虚拟机,并将云端的虚拟机与企业已有的云之外的服务器对接。虚拟网络的意思,是允许用户自己规划网络拓扑,将虚拟机进行二层互联或者三层互联,同网络内虚拟机可以互访,而不同网络的虚拟机相互隔离。VPN是将远程网络安全接入云网络
下图就是青云管理界面上的交互式网络设计图。相信每个网管都会使用。用户可以自己定义路由器,交换机,然后将虚拟机与交换机进行互联,将交换机连入路由器。用户可以自己规划每个子网的IP地址,可以绑定公网地址。为什么说它神奇呢?是因为虚拟网络功能之前只有AWS、Windows Azure等少数厂商可以做到,而青云不仅做到了,还做了一个交互式界面,不得不赞叹下
具体到实现机制,AWS和Windows Azure估计都是利用分布式路由表来实现的,而青云是采用SDN理念下的Openflow实现的。这两种实现机制的区别,是前者是静态路由,后者是动态路由。二者各有优劣,不过SDN最近特别火,又因为其开放性获得了相当多的关注
其他方面的各种小创新还有很多,虽然算不上神奇,但也可以说是让人眼前一亮。
- 在基本功能上,青云支持windows/ubuntu/centos/federa/debian OS, 最大支持8核32G内存
- 存储部分只提供块存储,不过一个虚拟机可以挂多个盘,每个盘最大500G
- 网络部分除了虚拟网络和VPN,还支持虚拟机同时加入多个自定义网络,可以自己手动分配IP。VIP支持流量控制
- 支持备案
- 监控支持从一分钟到一年的数据
- 提供API接口与命令行接口
回过头来,我们可以分析下青云的优劣势。
青云的优势是,使用简单,管理效率高,易用性强,这对于个人开发者十分具有吸引力。其弱点是,运营时间短,难以快速获得大中型客户的信任。个人认为青云可以定位为国内的Linode,靠低价和易用吸引低端用户。从长远看,如果青云能够一直保持这种技术上的领先优势,是很有可能做大做强的。
功能篇总结
经过比较,不难发现目前国内的公有云厂商分成两个路线,分别是IaaS和PaaS。IaaS以AWS为标杆,PaaS以GAE为标杆。新浪、百度目前以PaaS为主,腾讯、阿里、青云目前以IaaS为主。从长线来看,除了青云之外,其他所有厂商都会走向IaaS+PaaS的混合模式
下面,就对IaaS和PaaS领域内的公有云进行横向对比。同时,也将AWS、GAE和Windows Azure加入对比。
AWS、GAE和Windows Azure中在短期内只有Windows Azure会进入国内。因为IBM也宣布了落地国内的计划,有人可能会问IBM的公有云是什么样,其实IBM的公有云有好几套方案,一个是现有IBM Smarter Cloud的公有云方案,由TSAM和Websphere Pure application这种厚重的企业软件构成,一个是上一篇介绍过的HSLT,还有一个是IBM近期收购的SoftLayer的方案,最终在国内落地哪个还不得而知,这里暂不做比较
在PaaS部分,可以比较的厂商包括新浪SAE,百度BAE以及国外三巨头
很明显,国外三巨头领先优势明显,而且彼此之间难分伯仲。从国内来看,新浪和百度领先阿里较多,尽管新浪推出SAE较久,但BAE迅速赶上,功能上反而比新浪更多
在IaaS部分,可以比较的厂商包括腾讯,阿里,青云以及国外三巨头
同样的,国内厂商均落后于国际厂商。
Google目前在IaaS刚起步,明显落后于Azure和AWS。
Azure和AWS基本上同步,AWS比Azure强在提供更多的虚拟机规格和OS种类。
在国内,阿里显然比腾讯要强很多
通过总结可以看出,在虚拟机部分,国内的服务提供商目前提供的服务普遍缺乏配套的虚拟网络或者VPC功能,这使得虚拟机服务跟VPS服务区别不大
综上所述
Windows Azure和AWS是云计算领域最强的两个厂商,功能完善,覆盖广泛。
在国内,IaaS领域是阿里云目前领先,PaaS领域目前百度和新浪领先。
随着Windows Azure商用日期的临近,这种局面很快会被改写
另外,各个云服务各有各自的优势,短期之内估计很难出现AWS那种一家独霸市场的局面。
各家的优势领域总结
阿里云与新浪云:积累了许多早期用户,也积累了相应的运营经验
百度云:吸引“流量”型网站开发者
腾讯云:吸引腾讯系周边产品的开发者
青云:吸引独立开发者和部分小型开发商
Windows Azure:是企业用户和.NET阵营用户的首选。由于其强大的功能,相信也会吸引很多互联网开发者
最后,从机房分布来看,大部分大型的云服务提供商都把机房放在经济发达的城市,比如新浪在北京,阿里在杭州青岛,Windows Azure在北京上海。这和国外的云服务提供商的分布有很大差异,同时,这也给了国内其他云服务提供商很多生存空间
国外云平台
先说明一点,由于国内公有云起步较晚,基本上所有的公有云都是模仿或者克隆国外现有的云平台,因此,这里不得不首先说明下国外几个主流的有代表性的云平台:
这个不用多讲,AWS是公有云第一品牌,也是业界标杆,从2006年起AWS就开始运营,可以说正是AWS造就了云计算当今的成果。AWS以IaaS起步,不过现今已经兼具IaaS和PaaS能力
这个是微软的公有云,本人的博客有非常多的描述。
Windows Azure 从2009年开始运营,最初以PaaS为主,如今也兼具IaaS和PaaS能力
起初Google主打PaaS服务App Engine,知道今年才推出IaaS服务
其特色是价格便宜,使用简便。
Linode是Linux node的缩写,不支持Windows。
Linode的定位是VPS,其网络能力比较弱,没法支持虚拟网络。
其价格差不多只有AWS和Windows Azure的一半。出于这些因素,Linode成为大量独立开发者的首选
二、测试
在简单了解各家云计算的能力之后,紧接着大家关注的问题就是性能、价格、稳定性等问题。本篇先从性能入手
本篇准备测试阿里云,Windows Azure中国站,并以AWS作为比较。测试对象以虚拟机为主,测试工具为两个:
Unixbench
开源的Linux性能测试工具,可以综合测试虚拟机的CPU、内存、文件、进程、脚本、系统调用、管道等多个维度,并且会给出一个总分。
该工具介绍:
https://github.com/kdlucas/byte-unixbench (推荐)
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类型 | 小规格 S | 中规格 M | 大规格 L |
Windows Azure中国站 | 北京 | CentOS 6.3 64位 | 1核1.7G内存 | 2核3.5G内存 | 4核7G内存 |
AWS北美 | US East | CentOS 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型是对等的。大规格同理
百度云和新浪云的虚拟机还未开放,暂不考虑(注:本文写于2013年,百度云和新浪云等的虚拟主机在2016年前后已发布)
首先说明下测试过程。公平起见,本测试未做任何性能调优和配置变更,完全采用各家提供的缺省OS镜像。虚拟机也都没有配置SWAP分区
Unixbench 安装与配置
首先用root登录目标虚拟机
1. 下载安装包(建议下载最新版)
wget https://github.com/kdlucas/byte-unixbench/archive/master.zip (推荐)
wget http://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz (舍弃)
2. 解压缩
tar zxvf UnixBench5.1.3.tgz
3. 进入UnixBench目录
4. 进行编译
make clean
make
yum -y install gcc
./Run
5. 运行 ./Run 即可开始测试,等待十几分钟即可
1) 运行输出的结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
|
2)运行后的目录结构
1 2 3 4 5 6 7 8 9 10 11 12 |
|
3) 查看 results/ 目录下的html结果
http://demo.mimvp.com/unixbench/
如果运行时报如下错误
Can't locate Time/HiRes.pm
可以执行下
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 2 3 4 5 |
|
2. 阿里云
尽管测试采用的阿里云主机配置不如Azure(主要是内存小一些),但是其最终性能却接近Azure,这说明阿里云采用的硬件比较新,另外,没有用一台物理机去支持大量虚拟机
从结果看,阿里云采用的是Intel Xeon E5-2420 CPU,主频1.9G,启用了超线程
1 2 3 4 5 |
|
3. Windows Azure分数最高
从结果看,使用的是AMD 4171HE CPU,没有超线程
1 2 3 4 5 |
|
结论: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. 进入 Oracle ORION 下载 (ORION 11.1 版)
2. 选择x86_64版本下载,可能接受协议并输入Oracle ID账户密码
wget http://download.oracle.com/otn/utilities_drivers/orion/orion_linux_x86-64.gz
3. 解压缩安装包
gzip -d orion_linux_x86-64.gz
4. 解压后得到一个文件,赋予执行权限
chmod +x orion_linux_x86-64
5. 创建 orion.lun文件,在里面写入测试的目标盘,比如/dev/vda1
# echo /dev/vda1 > orion.lun
需要注意:orion会直接在磁盘级进行读写,会损坏上面的文件系统,所以一定要用空磁盘进行测试
6. 执行读测试,该测试会进行4K大小的随机读和1M大小连续读
./orion_linux_x86-64 -run advanced -size_small 4 -verbose
运行输出界面如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
7. 执行写测试,该测试会进行4K大小的随机写和1M大小连续写
./orion_linux_x86-64 -run advanced -size_small 4 -write 100 -verbose
运行输出界面如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
这个测试会进行几组8K大小的随机读写和1M大小的连续读写测试。
前者用来测定IOPS能力,后者测定吞吐量
测试完成后,会发现生成并不是图形化的网页,而是许多xxx.csv文件,需要用 Excel 或 Number 转化打开
1)xxx.csv 文件列表
1 2 3 4 5 6 7 8 9 10 11 12 |
|
2)xxx.csv 文件内容示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
3)xxx.csv 文件转换成 Numbers 图形化
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,数值越大越好,横轴是时间
结果显示:
1. AWS的性能确实十分不稳定,写性能最大和最小差5倍
2. 阿里云的性能相对稳定些,不过每天有一个时间性能会突然变差,这就是每天的晚上12点左右,阿里对虚拟机进行统一备份
3. Azure的性能最稳定,而且读写性能均衡
吞吐量,单位MB/s,数值越大越好,横轴是时间
结果显示:
1. Azure的性能最好,且稳定,24小时内都在60MB-110MB之间
2. AWS较不稳定
3. 阿里云每天会有一个性能低谷(备份时间)
延迟,单位ms,数值越小越好,横轴是时间
结果显示:
1. Azure最稳定,读写均衡,24小时内延迟都在5ms左右
2. AWS最不稳定
3. 阿里云每天会有一个突发性能下降(备份时间)
测试总结
本文比较了AWS,阿里云和Azure三个公有云平台的OS性能和磁盘IO性能,数据结果显示:
1) OS性能,同样规格的虚拟机Azure性能最好,阿里云次之,AWS性能仅有Azure和阿里云的几分之一
2) IO性能,对于普通数据磁盘,Azure的性能最好,最稳定,阿里云次之。
AWS的普通磁盘性能非常不稳定,仅适合于顺序访问(追求吞吐量),
而对于随机访问,必须使用价格更高的IOPS型磁盘。
另外,要使用IOPS磁盘,必须使用专用型号的虚拟机(价格也高)
选购结论
本文都是米扑科技调研对比的成果,目的是选购性价比高的云服务器:
1) 国内云服务器,选购腾讯云、阿里云、金山云(大米云折扣非常大)
2) 国外云服务器,选购AWS,其国外的价格比国内阿里云、腾讯云在国外提供的云服务器价格都低很多
3) 全球云服务器价格对比,请见米扑博客:全球云服务商对比:阿里云,太贵了
参考推荐:
国内公有云对比 - 功能篇 (CSDN)