当前位置:首页 > 技术教程 > 正文

作者: 从文

全网最全的网络资源分享网站

手机扫码查看

目前各家云主机性能评测分析

我们选取了亚马逊AWS EC2、DigitalOcean、Linode、阿里云作为测试目标,着重介绍了云主机的特点,云主机性能测试的方法,以及对几家典型高磁盘性能的云主机进行性能测试与性价比评测。

1概要

最近这些年,云计算越来越成为各个企业的业务方向,个人和企业用户开始使用各种各样的云计算服务。本文着重介绍了云主机的特点,云主机性能测试的方法,以及对几家典型高磁盘性能的云主机进行性能测试与性价比评测。

我们选取了亚马逊AWS EC2、DigitalOcean、Linode、阿里云作为测试目标。其中PPPCloud箭头、DigitalOcean、Linode都是明确的全SSD云主机,阿里云和AWS EC2支持组装出SSD盘云主机。

2测试环境

各大厂商云主机选型,遵循“配置最优”的原则,即每个厂商的在相同配置下选用配置优化最好的云主机,使对比更有准确性。

2.1.1 EC2--亚马逊

• 类型:类型选用xlarge,此类型为计算优化系列,vCPU 与内存比率比其他系列高;

• EBS:实例类型支持 EBS 优化功能,为 Amazon EBS I/O 提供额外的、专用的吞吐量。

• 卷类型:选用预配置 IOPS (SSD) 卷,硬盘选用80G后,IOPS选用最高的2400

2.1.2 EC2--亚马逊--高IOPS

• 类型:类型选用xlarge,此类型为计算优化系列,vCPU 与内存比率比其他系列高;

• EBS:实例类型支持 EBS 优化功能,为 Amazon EBS I/O 提供额外的、专用的吞吐量。

• 卷类型:选用预配置 IOPS (SSD) 卷,硬盘选用670G后,IOPS选用最高的20000。

注:增加此类选型,原因有两点:1)IOPS 必须介于 100 和 20000之间;2)IOPS 和卷大小之间的最大比率为 30:1。因此为了测试亚马逊最高的IOPS的性能,选用了670G的硬盘进行测试。

2.1.3 DigitalOcean

• DigitalOcean有9种类型的选择,为了对比的一致性,选择第5种类型。

2.1.4 Linode

• Linode有9种类型的选择,为了对比的一致性,选择第4种类型;

• 此种类型硬盘为192G,为了对比的一致性,在部署镜像的过程中,选择80G的硬盘;

• Linode支持选择数据盘,因此创建了60G的数据盘,用于与阿里云对比数据盘的性能;

2.1.5 ECS--阿里云

• 实例类型:实例系列选择系列一,不选择I/O优化(为了使用本地SSD),规格为4核8G;

• 阿里云支持选择数据盘,因此创建了60G的数据盘,用于与Linode对比数据盘的性能;

2.2.1 EC2--亚马逊

2.2.2 EC2--亚马逊--高IOPS

2.2.3 DigitalOcean

2.2.4 Linode

2.2.5 ECS--阿里云


3测试工具与方法

3.1.1 测试软件介绍

UnixBench是Linux平台性能测试的主流工具。

Unixbench的主要测试项目有:系统调用、读写、进程、图形化测试、2D、3D、管道、运算、C库等系统基准性能提供测试数据。大多数VPS都是没 有显卡或者是集显,所以图像性能无需测试,因此将图形化测试项注释掉了。(如果你需要测试graphic,则需要修改Makefile,不要注释 掉”GRAPHIC_TESTS = defined”,同时需要系统提供x11perf命令gl_glibs库。)

3.1.2 测试软件版本

版本信息:UnixBench5.1.3

配置信息:#GRAPHIC_TESTS = defined,即无graphic测试项

参数信息:无

3.1.3 测试方法

使用一键式脚本,进行测试,脚本测试方法如下代码:

UnixBench测试代码

wget https://teddysun.com/wp-content/uploads/unixbench.sh
chmod +x unixbench.sh
./unixbench.sh

3.2.1 软件介绍

磁盘的测试主要使用fio工具,该工具能够对磁盘的吞吐和iops进行测试,是较为权威的测试工具。

3.2.2 测试软件版本

版本信息:fio-2.1.3

配置信息:无

参数信息:filename=str,direct=bool, -iodepth 1 -thread -rw=$x -ioengine=psync -bs=4k -size=20G -numjobs=10 -runtime=300 -group_reporting -name=mytest

3.2.3 测试方法

测试项包括write randwrite read randread等4种类型,每种类型指定两种块大小4k、8k测试,测试大小为20G。

测试代码如下:

FIO测试代码

#!/bin/bash
SERVICES="write randwrite read randread"
count="1 2 3 4 5 6 7 8 9 10"
echo "">iotest
for c in $count
do
for   x   in   $SERVICES
do
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=$x -ioengine=psync -bs=4k -size=20G -numjobs=10 -runtime=300 -group_reporting -name=mytest>>iotest
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=$x -ioengine=psync -bs=8k -size=20G -numjobs=10 -runtime=300 -group_reporting -name=mytest>>iotest
done
done

3.3.1 测试软件介绍

dd使用两种参数进行测试

1)dsync可以当成是模拟数据库插入操作,在/dev/zone中读出一条数据就立即写入硬盘

2) -fsync同样也是将数据已经写入磁盘,但是是在经过缓存后最后再写入硬盘

3.3.2 测试软件版本

版本信息:dd (coreutils) 8.4

配置信息:无

参数信息:if=FILE,of=FILE,bs=BYTES,count=N,oflag=FLAGS,conv=CONVS

3.3.3 测试方法

具体的测试代码如下:

DD测试代码

dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
dd if=/dev/zero of=test bs=8k count=256k conv=fdatasync

3.4.1 测试软件介绍

phoronix-test-suite非常好用的系统基准测试工具,整合linux大部分测试软件,测试项多达200种,最终可以上传到网上进行结果查询。

3.4.2 测试软件版本

3.4.2.1 Processor Tests

版本信息:

测试主版本Phoronix Test Suite v5.8.1 (Belev)

测试套件版本c-ray-1.1.0

配置信息:无

参数信息:benchmark pts/ c-ray-1.1.0

3.4.2.2 System Tests

版本信息:

测试主版本Phoronix Test Suite v5.8.1 (Belev)

测试套件版本pybench-1.0.0

配置信息:无

参数信息:benchmark pts/pybench-1.0.0

3.4.2.3 Memory Tests

版本信息:

测试主版本Phoronix Test Suite v5.8.1 (Belev)

测试套件版本pts/stream-1.2.0

配置信息:测试项为Triad

参数信息:benchmark pts/stream-1.2.0

3.4.2.4 Disk Tests

版本信息:

测试主版本Phoronix Test Suite v5.8.1 (Belev)

测试套件版本aio-stress-1.1.1

配置信息:无

参数信息:benchmark pts/aio-stress-1.1.1

3.4.3 测试方法

3.4.3.1 Processor Tests

c-ray是一款多线程测试软件,用于测试Processor。

测试方法为:

phoronix-test-suite benchmark pts/c-ray-1.1.0

3.4.3.2 System Tests

测试方法为:

phoronix-test-suite benchmark pts/pybench-1.0.0

3.4.3.3 Memory Tests

STREAM 是业界广为流行的综合性内存带宽实际性能测量工具之一。随着处理器处理核心数量的增多,内存带宽对于提升整个系统性能越发重要,如果某个系统不能够足够迅 速地将内存中的数据传输到处理器当中,若干处理核心就会处于等待数据的闲置状态,而这其中所产生的闲置时间不仅会降低系统的效率还会抵消多核心和高主频所 带来的性能提升因素。 STREAM 具有良好的空间局部性,是对 TLB 友好、Cache友好的一款测试。

测试方法为:

phoronix-test-suite benchmark pts/stream-1.2.0

3.4.3.4 Disk Tests

测试方法为:

phoronix-test-suite benchmark pts/aio-stress-1.1.1

4 测试结果

UnixBench测试结果--总分
 

注:由于Linode为6核,为了方便与其他云厂商进行对比,因此linode的分值算法为:实际结果 *4/6,即4207.2*4/6=2804.8 

注:使用Fio测试,会对系统盘造成损失,甚至系统崩溃,在几个云主机测试过程中,由于linode使用系统盘测试时,系统直接无法使用,因此无法得出系统盘的测试结果 

注:我们认为可以并且需要创建数据盘的云主机只有阿里云和linode,因此只有这两家的测试数据。AWS EC2的数据盘和系统盘性质相同,性能相同。 

注:rocessor Tests测试结果数据越小越好 

注:System Tests测试结果数据越小越好 

注:Memory Tests测试的数据越大越好 

注:Disk Tests测试的数据越大越好 

5 测试结果评分

5.1.1 评分基准

1)每项测试结果分值最高者为100,其他按结果数据比例进行分值的确定

2)对于单核评分,直接按照百分制分值计算即可;

对于四核评分,linode配置为6核,因此理论上4核的结果应该为“测试结果”*4 / 6

5.1.2 评分公式

最高者测试分值:max;

本机测试分值:local;

比例:ratio=local/max;

最终结果result=ratio*100

5.1.3 评分结果

5.2.1 评分基准

1)每项测试结果分值最高者为100,其他按结果数据比例进行分值的确定

2)为了体现厂家真实的磁盘性能,评分按照趋于稳定后的I/O结果进行评定

3)测试项共8项(4k中read、write、randread、randwrite,8k中read、write、randread、randwrite),其中每项均按照比例进行分值确定,最终再按照百分制进行合并计算

4)Linode由于系统盘使用fio测试后,系统崩溃,因此没有Linode的数值,但是综合UnixBech、dd、Phoronix Disk测试结果,预估其分值应该在pppcloud和Do之间,大致分值可以定为85

5.2.2 评分公式

单项最高者测试分值:max;

单项本机测试分值:local;

单项比例:ratio=local/max;

单项结果:single_result =ratio*100

总体结果:result = ∑single_result / 8

5.2.3 评分结果

5.3.1 评分基准

1)每项测试结果分值最高者为100,其他按结果数据比例进行分值的确定

2)dd测试过程中测试了5次,取平均值得出测试的整体水平

3)dd测试了两种情况,因此得分会包含两种百分制分值

5.3.2 评分公式

最高者测试分值:max;

本机测试分值:local;

比例:ratio=local/max;

最终结果result=ratio*100

5.3.3 评分结果

 

5.4.1 评分基准

1)每项测试结果分值最高者为100,其他按结果数据比例进行分值的确定

2)Phoronix-test-suite测试process、memory、system、disk 四种类型,每种类型均得出百分制分值

3)process和system测试结果单位为时间,即数值越小性能越好;disk和memory测试结果单位为MB/s,即数值越大性能越好

5.4.2 评分公式

最高者测试分值:max;

本机测试分值:local;

比例:ratio=local/max;

最终结果result=ratio*1005.4.3

5.4.3评分结果

 

5.5.1 评分基准

1)测试工具评测

根据linux评测工具使用频率、测试效果、测试整体性,来确定每种工具的权重比例。

注:使用频率为各大评测机构或个人,对测试工具的使用的多少进行的评估; 

   测试效果为测试工具对于测试的准确定的判定; 

   测试整体性为测试工具是否测试系统的整个体系,dd和fio只是对于硬盘的测试,UnixBench是对于linux系统整体进行的测试,Phoronix利用第三方工具对系统分别进行的测试; 

2)测试工具权重比例

按照“测试工具评测”得出权重比例:

5.5.2 评分公式

UnixBench评分结果:score_unixbench

Fio评分结果:score_fio

DD评分结果:score_dd

Phoronix评分结果:score_phoro

UnixBench权重:weight_unixbench

Fio权重:weight_fio

DD权重:weight_dd

Phoronix权重:weight_phoro

最终评分结果:result=score_unixbenchweight_unixbench +score_fio weight_fio +score_dd weight_dd +score_phoro weight_phoro

5.5.3 性能评分结果

5.6.1 评分基准

1)各家服务器都选择linux系统

2)评分结果有2种,分别依据按小时计费和包月计费区分。

3)没有包月服务的,将小时折合成包月,计算总额作为包月价格。

4)性价比=计费价格最大值*性能分/价格。

5)不同付费方式的性价比不具有可比性。

5.6.2 评分公式

价格最高值:max;本机价格:local;

性能:performance

比例:ratio = performance/ local

最终评分结果:result = max * ratio

5.6.3 评分结果

从表中我们可以看出,pppcloud云主机的性价比在包月和按小时付费上都是最高的。

6 测试结果分析

UnixBench是一款开源的测试unix系统基本性能的工具,是比较通用的测试云主机性能的工具.

UnixBench会执行一系列的测试,包括2D和3D图形系统的性能衡量,测试的结果不仅仅只是CPU,内存,或者磁盘为基准,还取决于硬件,操作系统版本,编译器.

测试系统各个方面一系列的性能,然后将每个测试结果和一个基准值进行比较,得到一个索引值,所有测试项目的索引值结合在一起形成一个测试分数值.

从UnixBench测试结果看:1 pppcloud单核性能2090分是5大厂商中最高的,其次是亚马逊(包括aws-高iops)的云主机,分数为1800分,linode表现一般,得 分为1599.3,阿里和Do在此轮测试中表现不尽人意,仅仅在1000分左右徘徊。 2 pppcloud的多核测试中,得分为3840,和亚马逊aws的3774分并列第二名,仅次于linode的4200分,阿里和do同配置云主机跑分未 能突破3000大关,表现一般。但是本次由于linode的配置问题,选取的是linode的6核实例,而我们的云主机还保持在4核配置下,在少于2核的 情况,分数仅少400分左右,也可见pppcloud的强悍。如果linode在4核情况下,理论上数据应该为4207.2*4/6=2804.8,因此pppcloud的测试结果强于linode

综合排名上,按照上述分析pppcloud第一,aws居于次席,linode、digitalocean、阿里云紧随其后。

在fio测试环节,按照本fio测试参数进行的测试,aws(非高iops测试结果)明显落后,在块大小4k时候,读写速度始终难以超越10m/s,随着 块大小变化到8k,读写速度也线性增加到将近20m/s,可以在选型时看到,官方设定的iops限制在磁盘80G的情况下,为2400,相比其他厂商的上 万的iops来说性能相差很多,本次测试可以忽略aws。而阿里云的系统盘iops表现较差,相比aws的io测试来说,4k块大小测试的界限可以定位在 12m/s,8k快大小测试也满足理论上的12m2=24m/s,iops读写方面始终徘徊在3000左右。但是数据盘性能表现还可以,io性能无论是 从iops还是读写速度来说都是系统盘的4倍的样子,也就是4k块大小测试的界限可以定位在48m/s,8k快大小测试也满足理论上的48m2=96m /s,iops限制12000。所以我们有理由怀疑阿里的磁盘做了系统盘iops为3000,数据盘12000的限制,本次测试评论采用的是阿里的性能较 好的数据盘测试结果。同样linode也不出意外,iops限制在5000,4k块大小测试的界限可以定位在20m/s,8k快大小测试也满足理论上的 20m*2=40m/s。

Pppcloud和do的云主机单独来讨论,因为从测试结果可以基本得出结论,2者都分别在读写两方面限制了io性能,相比其他几家的总体限制,显得更加 精细。根据测试结果,猜测do的写iops限制在15000,读iops限制在50000,进而导致4k块大小读写速度分别在200m/s和60m/s徘 徊,8k块大小测试大小也线性增加到400m/s和120m/s;pppcloud的写iops限制在20000,读iops限制在55000,进而导致 4k块大小读写速度分别在260m/s和80m/s徘徊,8k块大小测试大小也线性增加到520m/s和160m/s。可以看出pppcloud在4k和 8k块大小测试中io性能明显超过do。

对于aws-高iops测试结果来看,配置的最高iops为20000。iops读可以达到20000以上,iops写维持在15000上下,但均比digitalocean和pppcloud小。

综上所述,pppcloud云主机顺序读性能平均超过do读50M到100M,随机读略低于do,但是云主机写性能高于do至少四分之一,且两者综合io性能此时也是明显高于其他云厂商,在磁盘io性能方面可以说是突出。

综合排名上,个人认为ppcloud第一,digitalocean第二,aws-高iops第三,阿里云第四,aws(非高iops)和linode由于io限制较低,都在5000以下,处于最后的位置。

在dd测试环节,使用dsync参数,即次数为一的方式往硬盘中写入,linode的写速度维持在100M/s,其次为pppcloud写速度在80m /s左右,略低于linode,其他几家再次向测试中结果不超过50m/s。使用fdatasync参数,即写入到磁盘的缓存中,然后再从磁盘缓存中读 取,一次性写入到硬盘当中,linode的写性能维持在900M/s左右,其次为pppcloud和do,基本维持在500m/s偏下,而阿里云和aws 没有超过100m。

综合排名上,个人认为linode是第一,pppcloud第二,do稍弱于pppcloud,位居第三,aws(包括aws-高iops)和阿里云处于最后的位置。

Phoronix Test Suite 默认是通过命令行来的进行测试的,但也可以调用GUI,Phoronix Test Suite 还提供了上传测试结果的服务,也就说你可以把你的测试结果上传在网上,从而可以和别的 Linux 用户测出来的结果进行对比。针对各项测试已经上传到网上并附有效果图,有兴趣的可以打开链接查阅具体结果。具体详情如下:

 Phoronix-test-suite官网上传结果
测试结果上传至Phoronix-test-suite官网,具体网页信息可见如下网页
aws测试结果:
1)aws-c-ray: 
http://openbenchmarking.org/result/1511160-BE-AWSCY411756
2)aws-pybench测试结果:
http://openbenchmarking.org/result/1511169-BE-AWSPYBENC65
3)aws-stream测试结果:
http://openbenchmarking.org/result/1511167-BE-AWSSTREAM50
4)aws-aio-stress测试结果:
http://openbenchmarking.org/result/1511163-BE-AWSAIO88685
aws-高iops测试结果:
1)aws-高iops-c-ray: 
http://openbenchmarking.org/result/1512033-HA-45609129194
2)aws-高iops -pybench测试结果:
http://openbenchmarking.org/result/1512033-HA-65498352919
3)aws-高iops -stream测试结果:
http://openbenchmarking.org/result/1512039-HA-23132151829
4)aws-高iops -aio-stress测试结果:
http://openbenchmarking.org/result/1512038-HA-56413929194

DigitalOcean测试结果:
1)Do-c-ray测试结果: 
http://openbenchmarking.org/result/1511165-BE-DOCY1666567
2)Do-pybench测试结果:
http://openbenchmarking.org/result/1511165-BE-DOPYBENCH90
3)Do-stream测试结果:
http://openbenchmarking.org/result/1511162-BE-ASD0STREA32
4)Do-aio-stress测试结果:
http://openbenchmarking.org/result/1511164-BE-DOAIO854856
Linode测试结果:
1)linode-c-ray测试结果:
http://openbenchmarking.org/result/1511163-BE-LINODECRA14
2)linode-pybench测试结果:
http://openbenchmarking.org/result/1511168-BE-LINODEPYB17
3)linode-stream测试结果:
http://openbenchmarking.org/result/1511160-BE-LINODESTR41
4)linode-aio-stress测试结果:
http://openbenchmarking.org/result/1511165-BE-LINODEAIO85
ecs测试结果:
1)ecs-c-ray测试结果:
http://openbenchmarking.org/result/1511169-BE-ECSCRAY1895
2)ecs-pybench测试结果:
http://openbenchmarking.org/result/1511165-BE-ECSPYBENC74
3)ecs-stream测试结果:
http://openbenchmarking.org/result/1511167-BE-ECSSTREAM56
4)ecs-aio-stress测试结果:
http://openbenchmarking.org/result/1511163-BE-ECSAIOSTR20

从本轮测试结果来看,云主机的cpu运算测试中,时间为34s,比linode多了整整10s,linode为24s,而阿里云比 pppcloud多7s,为41s,aws和do都已超过的50s的运算时间。系统综合能力测试中和阿里云、aws及 linode运算时间都维持在2000 Millisec左右,相差不大,do表现稍弱,用了3390 Millisec,略感意外。对于内存测试一项,阿里云结果为36820.53 MB/s,显示出了国内老大气概,相比其他厂家的20000 MB/s左右的结果,位居第一,在此项测试中pppcloud表现不是很突出,稍低于其他各大厂商。在磁盘测试中,凸显了pppcloud本地ssd的优 势,io性能得分1720.54 MB/s稳居第一的位置,其次是linode的io得分为1407.19 MB/s,阿里云和aws此项测试结果极为相近,为1200 MB/s左右,而do得分显得有些低,仅为720MB/s。

综合分析各大厂商各有优势及不足,维持在基本平衡状态。

 

未经允许不得转载:

作者: 从文, 转载或复制请以 超链接形式 并注明出处 从文网 · cecil wan-一个有态度的网站!
原文地址: 《目前各家云主机性能评测分析》 发布于2019-5-9

分享到:
打赏

评论

允许邮件通知

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏