什么服务器比较好?

本文为潮云实验室原创出品

写在前面
作为公有云的资深用户,测试过多家云平台数十个实例之后,我们一直在思考两个问题:客户最需要云厂商提供的核心能力是什么?应该如何评估一家云厂商的产品技术能力?

福利

阿里云1888服务器代金券

https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=vf2b5zld

接下来的几篇文章中,潮云实验室将结合长期的测试数据,帮助大家选择最合适的云服务器,同时探讨几家主流云厂商的产品差异和背后的设计理念。今天,我们先从计算入手。

跑分不是唯一标准
很长一段时间,跑分似乎成为衡量性能的唯一标准,但是从实际体验来看,单纯依赖跑分去选择产品,是非常片面的决断。

首先,有些跑分工具本身就有问题。比如,近期就有爆出Unixbench跑Pipe-basedContext Switching用例时,虚拟机的得分甚至超过同等级物理机的情况(目前已经有补丁修复)。

其次,跑分往往只能测出一段时间内的性能值,但不能体现产品长期的稳定性。

计算能力:主频, IPC, 稳定性
先来看一个简单的公式:

CPU的计算性能=主频× IPC(Instruction Per Clock 即每周期执行指令数)。

所以,提升CPU处理性能的途径,可以是提升主频,也可以提升IPC。

主频:高主频肯定能带来计算性能的增长,但是高主频的CPU往往价格昂贵,另外随着主频的提升,功耗会成指数级增长,这部分运营成本(opex)当然最后也会算给客户。

IPC:要提升IPC,可以通过提高指令执行的并行度来实现,主要有两个途径:一是提高微架构的并行度,二是采用多核架构。在微架构并行度一致的情况下,关注多核架构。采用多核架构,可以减缓由于主频提高而功耗急剧上升的坡度。如果功耗相同,毫无疑问多核CPU的性能会比单核CPU要高。

我们结合价格数据来看看,以下为华为云部分产品的价格和性能对比:

  1. 从提高主频的角度来看,对比计算性能,C3.large.2比S3.large.2提高了36%,但是价格却高了44%。

  2. 从提升IPC的角度来看,S3.xlarge.2比S3.large.2计算性能高一倍,价格也正好高一倍。

有兴趣的也可以去对比一下其他产品,都是类似的。

如果单纯要提升计算性能,采用提升IPC的方式,更具性价比。

稳定性:相对于前两个,稳定性很难在产品页面被参数化描述,但是却是企业场景里很重要的一点,我们来重点聊聊关于CPU稳定性的那些你还不了解的事。

稳定性和vCPU绑定
很多人有这样的疑问:为什么我购买的服务器CPU性能波动那么大?今天我们就来详细说说背后的主要原因:vCPU的绑定。

先来看看什么是vCPU绑定。

假设用户购买一个2 vCPU的虚拟机,我们来看看绑定和不绑定的区别:

在绑定的情况下,通过设置处理器亲和性(Processor Affinity),这两个vCPU会映射到预定core的两个超线程HT(Hyper-Threading)上。

有人会问为什么是同一个core的两个HT,而不是两个位于不同core的HT呢?这是为了独占该core的所有资源,避免其他用户的干扰。

而不绑定的情况下,这两个vCPU会随机落到不同core的任一超线程上,往往分布在两个不同的物理core。

绑定的时候,单个core采用超线程技术能同时执行两个线程,但它并不象两个真正的CPU core那样,有些资源是需要共享的, 比如图中的L1指令和数据缓存,L2缓存。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU core的性能。如果CPU core不分超线程,能跑出100%的能力的话,加了超线程大概能到115%-130%的能力。所以2个vCPU的性能大概等于115%-130%的单物理CPU core能力,但是该core所有资源被用户独占,业务运行稳定。

在不绑定时,每个vCPU往往单独分配去一个CPU core,这种情况下,大部分core内资源是和其他用户共享的,如图:

我们分为两种情况讨论一下:

  1. 服务器空闲,即另一个超线程空闲。这时候2个vCPU的性能能真正达到200%单物理CPU core的能力(资源被独立占用,无争抢),且较平稳。

  2. 服务器忙碌,你的vCPU会受到其他用户机的负载水平影响,双方产生资源争抢,表现为业务性能不稳定。

显然,使用不绑定的策略虽然能带来性能上的提升,但是和云服务的稳定性和隔离性的要求背道而驰,这相当于把自己业务稳定的主动权交给了其他用户!

那么问题来了,怎样确定云服务器有没有绑定vCPU!?

判断依据如下:如果测试单vCPU性能时接近物理CPU性能,而测试双vCPU性能时,两个vCPU性能都有一定程度的下降,那么这款实例是对vCPU进行绑定的。反之,如果两个vCPU性能仍然都接近物理CPU性能,那么一定没有绑定。

vCPU不绑定情况下性能测试
为了进一步论证,我们选取了一台腾讯云HS20专用宿主机(56核),来模仿vCPU不绑定情况下多租户“拥挤”的使用场景。

把该物理机分成7台8核32G的虚拟机,其中一台为被测机,另外6台为干扰机。

在不同的干扰压力下(无压力,N个进程跑super_pi压力等)的业务性能,测试结果如下(以mysql_read性能为例):

完整的mysql_read,mysql_write,mysql_read_write性能对比图如下:

可以看到,随着干扰进程数的增加,

  1. QPS明显呈下降趋势, read性能下降34%, write性能下降35%,read_write性能下降30%。

  2. 平均延时明显上升,read延时上升50%,write延时上升37%,read_write延时上升42%。

实验显示,vCPU没有绑定情况下,被测虚拟机受同机其他虚拟机的干扰非常大。

主流云厂商部分实例vCPU绑定盘点

用前文提到的测试方法,大致测了一下主流云服务器厂商的部分实例的vCPU绑定情况,结果如下:

可以看到,AWS和阿里云的企业级产品已经进行vCPU绑定,这些产品当然会有更好的稳定性体验。

腾讯云、华为云的几款实例及阿里云T5,AWS T2等非企业级实例,均未进行绑定,潮云实验室后续将对这几款产品进行进一步的性能测试。

小结
简单总结一下,要获得更好的计算性能,核数比主频更具性价比。

对于企业级用户来说,优先选择vCPU绑定的实例,计算性能更稳定、可预期。

不绑定vCPU在闲时可获得更高的性能,但隔离性差,不可预期,有一定业务风险。

在最终选型上,还是要根据自己的业务形态来选择合适的实例。

同时,我们也需要有清醒的认识,对云服务器来说性能测试和实际应用会有偏差,比如vCPU的绑定与否就会影响性能测试结果。

福利
阿里云1888服务器代金券

https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=vf2b5zld

腾讯云 优惠券

https://blog.csdn.net/chenjianandiyi/article/details/86411413

腾讯云 优惠券

新客户无门槛领取总价值高达2775元代金券,每种代金券限量500张,先到先得。
https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=1cdaea7b77fe67188b187bce55796594&from=console

云服务器、云数据库特惠,服务更稳,速度更快,价格更优
https://cloud.tencent.com/redirect.php?redirect=1014&cps_key=1cdaea7b77fe67188b187bce55796594&from=console

腾讯云网站解决方案帮您轻松应对建站成本高/网络不稳等常见问题
https://cloud.tencent.com/redirect.php?redirect=1027&cps_key=1cdaea7b77fe67188b187bce55796594&from=console

腾讯云云数据库MySQL入门机型仅12元/月,适用于广大用户入门学习、小规模业务系统场景,具备管理和扩展,主从实时热备,自动容灾等数据库全套功能。
https://cloud.tencent.com/redirect.php?redirect=1011&cps_key=1cdaea7b77fe67188b187bce55796594&from=console

腾讯云国际顶级CA机构SSL证书8.8折,云解析买一年最高送半年!
https://cloud.tencent.com/redirect.php?redirect=1005&cps_key=1cdaea7b77fe67188b187bce55796594&from=console

Redis单机版特惠2.1折起,为缓存业务量身定制,新用户8元起购
https://cloud.tencent.com/redirect.php?redirect=1035&cps_key=1cdaea7b77fe67188b187bce55796594&from=console

价格表

新账号领取优惠券能 优惠1888 可以注册一个新账号来领取

https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=vf2b5zld

你可能感兴趣的:(服务器)