2019独角兽企业重金招聘Python工程师标准>>>  echo /dev/vda1 > orion.lun-LMLPHP

问题导读

1.  国内云商各有什么特点?

2.  AWS性能测试中为何性能较低?

3.  本测试中OS性能、IO性能哪些云平台比较稳定?

本原文最早整理发表于米扑博客: 

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

一、功能介绍

近一段时间以来,国内外云计算市场再一次风起云涌。这一次热潮与以往热潮最大的不同,就是开始玩真的了。微软、AWS、阿里、百度、新浪、腾讯、360、IBM以及大量新兴企业,纷纷宣布近期在国内公有云领域的大动作,要么就是开始落地运营,要么就是推出大量的新服务,还有的开始大大免费牌。就连电子商务网站如同京东、美团都要进来掺乎一下(详见米扑博客:全球云服务商对比:[阿里云](https://l.gushuji.site/aliyun),太贵了),要在现在公有云起步阶段站稳脚跟。

另外,百度、腾讯、360面向个人用户推出的免费网盘服务竞争的不亦乐乎。在这个过程中,最受益的当然是广大的用户,因为用户不是仅仅听到各大厂商的忽悠,而是可以实实在在的使用各家的资源和服务,切实的体验云计算的好处。

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

本文对比的平台有以下:

新浪云(SAE、SCH)

新浪算是国内做公有云较早的厂商了。它的模仿对象是GAE,主要提供PaaS服务,名字也很类似,叫做Sina app engine, SAE。不过,近期新浪也准备推出虚拟机服务,进入IaaS领域。目前SAE支持PHPPythonJava语言。其使用模式是:用户在本地开发代码,然后上传至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都有,而且在存储上增加了RedisMongoDB,通讯上增加了推送和触发服务。此外还提供了虚拟机服务。目前虚拟机服务只对少数开发者开放。

从文档上看,虚拟机服务支持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个数据盘

阿里云的资源管理和资源申请是在两个不同的门户里面。资源申请类似一个购物车,结账后资源出现在管理控制台里面。用户使用的时候,需要频繁在多个界面间切换

云引擎部分,支持phpNode.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

这个不用多讲,AWS是公有云第一品牌,也是业界标杆,从2006年起AWS就开始运营,可以说正是AWS造就了云计算当今的成果。AWS以IaaS起步,不过现今已经兼具IaaS和PaaS能力

Windows Azure     

这个是微软的公有云,本人的博客有非常多的描述。

Windows Azure 从2009年开始运营,最初以PaaS为主,如今也兼具IaaS和PaaS能力

Google Cloud

起初Google主打PaaS服务App Engine,知道今年才推出IaaS服务

Linode   

其特色是价格便宜,使用简便。

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

Benchmark Run: Mon Sep 04 2017 20:22:53 - 20:51:13

1 CPU in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       23736936.0 lps   (10.0 s, 7 samples)

Double-Precision Whetstone                     3556.3 MWIPS (10.1 s, 7 samples)

Execl Throughput                               3570.1 lps   (29.9 s, 2 samples)

File Copy 1024 bufsize 2000 maxblocks        565755.4 KBps  (30.0 s, 2 samples)

File Copy 256 bufsize 500 maxblocks          177397.0 KBps  (30.0 s, 2 samples)

File Copy 4096 bufsize 8000 maxblocks       1337004.0 KBps  (30.0 s, 2 samples)

Pipe Throughput                             1145152.0 lps   (10.0 s, 7 samples)

Pipe-based Context Switching                 254288.8 lps   (10.0 s, 7 samples)

Process Creation                              11098.7 lps   (30.0 s, 2 samples)

Shell Scripts (1 concurrent)                   4001.7 lpm   (60.0 s, 2 samples)

Shell Scripts (8 concurrent)                    547.7 lpm   (60.1 s, 2 samples)

System Call Overhead                        1846761.4 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX

Dhrystone 2 using register variables         116700.0   23736936.0   2034.0

Double-Precision Whetstone                       55.0       3556.3    646.6

Execl Throughput                                 43.0       3570.1    830.2

File Copy 1024 bufsize 2000 maxblocks          3960.0     565755.4   1428.7

File Copy 256 bufsize 500 maxblocks            1655.0     177397.0   1071.9

File Copy 4096 bufsize 8000 maxblocks          5800.0    1337004.0   2305.2

Pipe Throughput                               12440.0    1145152.0    920.5

Pipe-based Context Switching                   4000.0     254288.8    635.7

Process Creation                                126.0      11098.7    880.9

Shell Scripts (1 concurrent)                     42.4       4001.7    943.8

Shell Scripts (8 concurrent)                      6.0        547.7    912.9

System Call Overhead                          15000.0    1846761.4   1231.2

========

System Benchmarks Index Score                                        1064.1

2)运行后的目录结构

1

2

3

4

5

6

7

8

9

10

11

12

[root@mimvp-bj UnixBench]``# ll

total 144

-rw-r--r-- 1 root root 10133 Jun 30 08:19 Makefile

drwxr-xr-x 2 root root  4096 Sep  4 20:22 pgms

-rw-r--r-- 1 root root 17753 Jun 30 08:19 README

drwxr-xr-x 2 root root  4096 Sep  4 20:22 results

-rwxr-xr-x 1 root root 60436 Jun 30 08:19 Run

drwxr-xr-x 2 root root  4096 Jun 30 08:19 src

drwxr-xr-x 2 root root  4096 Sep  4 20:51 testdir

drwxr-xr-x 2 root root  4096 Sep  4 20:36 tmp

-rw-r--r-- 1 root root 17890 Jun 30 08:19 USAGE

-rw-r--r-- 1 root root  4622 Jun 30 08:19 WRITING_TESTS

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

OS: GNU``/Linux -- 2.6.32-279.2.1.el6.centos.plus.x86_64 -- #1 SMP Thu Jul 19 16:20:44 CDT 2012

Machine: x86_64 (x86_64)

Language: en_US.utf8 (charmap=``"UTF-8"``, collate=``"UTF-8"``)

CPU 0: <span style=``"color:#0000FF;"``>Intel(R) Xeon(R) CPU E5430 @ 2.66GHz<``/span``> (5320.0 bogomips)

<span style=``"color:#0000FF;"``>Hyper-Threading<``/span``>, x86-64, MMX, Physical Address Ext, SYSCALL``/SYSRET

2. 阿里云

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

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

1

2

3

4

5

OS: GNU``/Linux -- 2.6.32-358.6.2.el6.x86_64 -- #1 SMP Thu May 16 20:59:36 UTC 2013

Machine: x86_64 (x86_64)

Language: en_US.utf8 (charmap=``"UTF-8"``, collate=``"UTF-8"``)

CPU 0: <span style=``"color:#0000FF;"``>Intel(R) Xeon(R) CPU E5-2420 0 @ 1.90GHz<``/span``> (3800.2 bogomips)

<span style=``"color:#0000FF;"``>Hyper-Threading<``/span``>, x86-64, MMX, Physical Address Ext, SYSENTER``/SYSEXIT``, SYSCALL``/SYSRET

3. Windows Azure分数最高

从结果看,使用的是AMD 4171HE CPU,没有超线程

1

2

3

4

5

OS: GNU``/Linux -- 2.6.32-279.14.1.el6.openlogic.x86_64 -- #1 SMP Wed Dec 12 18:33:43 UTC 2012

Machine: x86_64 (x86_64)

Language: en_US.utf8 (charmap=``"UTF-8"``, collate=``"UTF-8"``)

CPU 0: <span style=``"color:#0000FF;"``>AMD Opteron(tm) Processor 4171 HE<``/span``> (4189.4 bogomips)

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. 进入 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

# ./orion_linux_x86-64 -run advanced -size_small 4 -verbose

ORION: ORacle IO Numbers -- Version 11.1.0.7.0

orion_20170904_2040

Test will take approximately 9 minutes

Larger caches may take longer

Name: /dev/vda1 Size: 21473787904

1 FILEs found.

TEST START

----------------------------------------------

Running point: Small=0, Large=0

Point 1 out of 8

Valid

Running point: Small=1, Large=0

Point 2 out of 8

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

# ./orion_linux_x86-64 -run advanced -size_small 4 -write 100 -verbose

ORION: ORacle IO Numbers -- Version 11.1.0.7.0

orion_20170904_2047

Test will take approximately 9 minutes

Larger caches may take longer

Name: /dev/vda1 Size: 21473787904

1 FILEs found.

TEST START

----------------------------------------------

Running point: Small=0, Large=0

Point 1 out of 8

Valid

Running point: Small=1, Large=0

Point 2 out of 8

这个测试会进行几组8K大小的随机读写和1M大小的连续读写测试。

前者用来测定IOPS能力,后者测定吞吐量

测试完成后,会发现生成并不是图形化的网页,而是许多xxx.csv文件,需要用 Excel 或 Number 转化打开

1)xxx.csv 文件列表

1

2

3

4

5

6

7

8

9

10

11

12

-rw-r--r-- 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 128 Sep&nbsp; 4 20:47 orion_20170904_2040_iops.csv

-rw-r--r-- 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 128 Sep&nbsp; 4 20:47 orion_20170904_2040_lat.csv

-rw-r--r-- 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 100 Sep&nbsp; 4 20:47 orion_20170904_2040_mbps.csv

-rw-r--r-- 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 582 Sep&nbsp; 4 20:47 orion_20170904_2040_summary.txt

-rw-r--r-- 1 root root&nbsp;&nbsp;&nbsp;&nbsp; 2931 Sep&nbsp; 4 20:47 orion_20170904_2040_trace.txt

-rw-r--r-- 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 104 Sep&nbsp; 4 20:53 orion_20170904_2047_iops.csv

-rw-r--r-- 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 104 Sep&nbsp; 4 20:53 orion_20170904_2047_lat.csv

-rw-r--r-- 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 60 Sep&nbsp; 4 20:53 orion_20170904_2047_mbps.csv

-rw-r--r-- 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 319 Sep&nbsp; 4 20:47 orion_20170904_2047_summary.txt

-rw-r--r-- 1 root root&nbsp;&nbsp;&nbsp;&nbsp; 2227 Sep&nbsp; 4 20:53 orion_20170904_2047_trace.txt

-rwxr-xr-x 1 root root 46350238 Sep&nbsp; 4 20:34 orion_linux_x86-64

-rw-r--r-- 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10 Sep&nbsp; 4 20:39 orion.lun

2)xxx.csv 文件内容示例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

# cat orion_20170904_2047_iops.csv

Large``/Small``,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5

0,&nbsp;&nbsp;&nbsp;&nbsp; 39,&nbsp;&nbsp;&nbsp;&nbsp; 48,&nbsp;&nbsp;&nbsp;&nbsp; 53,&nbsp;&nbsp;&nbsp;&nbsp; 54,&nbsp;&nbsp;&nbsp;&nbsp; 56

#

#

# cat orion_20170904_2047_summary.txt

ORION VERSION 11.1.0.7.0

Commandline:

-run advanced -size_small 4 -write 100 -verbose

This maps to this test``:

Test: orion

Small IO size: 4 KB

Large IO size: 1024 KB

IO Types: Small Random IOs, Large Random IOs

Simulated Array Type: CONCAT

Write: 100%

Cache Size: Not Entered

Duration for each Data Point: 60 seconds

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) 全球云服务器价格对比,请见米扑博客:全球云服务商对比:[阿里云](https://l.gushuji.site/aliyun),太贵了

参考推荐

国内公有云对比 - 功能篇 (CSDN)

AWS与[阿里云](https://l.gushuji.site/aliyun)在国内使用的对比评测

全球云服务商对比:[阿里云](https://l.gushuji.site/aliyun),太贵了

阿里云网络系列之经典网络和专有网络

AWS、Google、Apple云端宕机背后的故事

转载于:https://my.oschina.net/sunboy2050/blog/1528908

04-16 12:12