• Welcome to LiuJason's Blog!

云筏容器云测评 by 故名|PaaS

Linux笔记 Jason 4 years ago (2020-10-29) 534 Views 0 Comments QR code of this page

本文转载自 https://blog.levas.top/2020/10/28/云筏容器云测评/

摘要

​ 本文站在一个小开发者角度去测试云筏容器云产品,重点关注容器云的计算性能,io性能,计费与性价比。不测网络。

需求分析

​ 近期我做的项目涉及以下内容:

  • opencv图片编辑
  • ffmpeg脚本开发
  • 机器学习模型训练(容器云不大适合,毕竟有显卡计算会更快)
  • python爬虫
  • python mysql的数据处理

​ 如上,除机器学习模型训练需要gpu不适合以外,其他的云筏容器云感觉都能胜任,但目前还不清楚容器云的流量费用,涉及网络的部分无法估计成本,是否实惠不得而知。目前云筏容器云仅有上海世纪互联机房,带宽成本高昂,作为个人开发者我是消费不起的,比如当下的一个项目要处理体积为64GB的图片,再加上数据库的体积,流量费用估计要破百了。听云筏客服表示后期会加hz德国节点,希望如此能降低流量费用,做到随便用吧。

简介

​ 首先,我的笔记本吃不住过高的负载,只能寻求其他计算资源;其次是,项目时有时无,长期租用独立服务器严重超支。曾经选择过华为云的计费服务器(至今已用了华为云一千多的代金券,白嫖太快乐了),国内贵州机房的价格最低,因为有代金券的存在,疯狂开机子开发用,不在意消耗。如图所示:

华为云价格图

​ 8核(2.6GHz,总共20.8GHz)16G内存40G硬盘的配置每小时1.2元出头(不考虑网络流量费)。作为对比,云筏的在频率数据一致的情况下,价格相对来说为华为云的45%,如下图所示:

云筏容器云配置图

​ 根据下文测试结果估算,同cpu性能,云筏容器云的价格是华为的48%左右。而如果要求华为云的硬盘性能达到云筏的水平,华为云的成本会更高。

​ 开发时为边测试边部署,所以存在debug时间,此时计算资源空置,如果使用一般的云服务器,就在此时持续计费,从而导致浪费。云筏容器云声称会根据负载自动增减容器云配置,从而在低负载时少扣费节省金额,希望这点能显著降低消耗。

​ 注:本文写于内测阶段,如上价格可能会变动,请以实际情况为准。

创建容器

​ 容器云的动态配置管理令我最费解的,是面板没有像云服务器一样以cpu核心数和频率给出不同级别配置的性能,而仅仅只给出了cpu主频,不好判断该加多少个计算进程。我打算按每GHz频率测试cpu性能,那么开始创建一个2GHz,镜像采用docker ubuntu:latest的容器作为测试环境。

W{2YOYV%8}0(KWIMH8U8%}U.png

​ 如上,选中上层的docker栏后,点击select image

sdjsdlgenwge

​ 搜索栏输入ubuntu后搜索,选中需要的镜像,点击next

GZ7U73U(J9%KZD363{}C03.png

​ 如上图可以调整配置,橙色线处可以调整容器配置,我设置为最低400MHz,最高2GHz。紫色为要创建的容器数量,绿线是硬盘大小,左侧红线是容器的名称,右侧红线是容器tag(暂时无法使用latest即ubuntu20.04,云筏表示会在11月10日升级支持),黄线处是每小时的价格,分别为最低配运行时的价格和最高配运行时的价格。

​ 创建时要从dockerhub拉取镜像,大致估计一下,这次开容器花了3,4分钟。

性能测试

写在最前面

​ 本文涉及的测试均发生于凌晨低负载时间段,可以认为此时表现好于其他时段。无法代表今后时期的任意时刻下,容器云的性能水平

综合测试

_0MG3QCY(X%6P7@A~8SA9J.png

​ 右侧标注出了容器的配置使用情况,刚开出来时使用了最高使用到了1GHz的频率,因而占用了3个“cloudlets”。开机过后很快降了下去,也就是最低配的情况。猜测是定时监测资源占用,如果高于上限或者低于下限就对应增减配,直到撞墙。这个监控频率目测估计在30秒以内。

EX}NE3{UXA43@BC97M$C0K.png

V@SJ`5NO(~BV1U%5{KK@SQK.png

​ 如上图,直接输出cpu信息和内存信息。内存令我有些奇怪,毕竟此时后台显示占用的是1个单位的资源,对应的内存是256MiB,但free -h显示的是1.2G,估计内存的定时监控和我想得不太一样,直接给到上限的动态内存防止进程突发而out of memory,即先给后计费。

​ 使用lenmonbench测试性能,如下图(没有网络是因为流量费太贵了,还想多玩玩)

%L238_$Y8%3{POLNP8AM~F.png

4Q01YFLN9EJZ@KM)ARI8T.png

​ 单核心分数880,中规中矩。内存带宽仅有14GB/s上下,感觉有些偏低,硬盘io还可以。

​ 在跑lenmonbench的过程中,面板显示占用的资源最高只有3个性能单位,难道是持续的时间不够久,于是再测几次。

0@@`B1RQ3N4SRY9V7QS3.png

​ 第二次的数据如上。现在开始开更大规模的容器试试,第二个容器的配置为:4GHz,20G硬盘,意在检测性能是如何翻倍的,以及硬盘内存io会不会有变化——会不会因为容量大小而有变化。

​ 第二个容器创建消耗了7分钟,可以得知容器的原生镜像实时拉取,并没有本地缓存,容器云有无镜像功能不得而知。这一次的容器4GHz的量超过了宿主机单核2.5GHz,cat输出cpu信息发现得到了2个cpu核心,这样我大概明白了它的资源分配机制,超量就给更多的cpu核心,以保证容器能得到足够的性能;然后试试监控容器的资源消耗,来进行计费。那么有没有可能在监控间隙突发占用cpu资源,在下一次轮询到来前挂起线程来降低cpu频率,从而规避监控来达到高性能低计费呢?

​ 第二个容器的lenmonbench结果:

I)Q6O~4FA%@7VE$GVF6T_H.png

​ 这一次容器拥有两个核心,因而单核心性能拉到了宿主机顶峰,达到了1056分;多核心达到1716分,相比之前2GHz时的880分提升了将近2倍,和容器云标称性能一致。同时内存io增大了,判断为cpu单线程性能增强后带来的增益,同样因此有一定增强的还有硬盘的4K写性能和1M读性能。

​ 在后台还看到了硬盘的iops limit,为60K;上行带宽限制为50Mbps;

​ 作为对比,以下是华为的1c1g小鸡数据。可以发现cpu单核性能上限,华为云强了8%(上文的容器云单核880分测试并未达到单核最大值,多次测试得到的平均值在1070分左右)。内存io读写两家相近。华为云使用了最低配的云硬盘,因而硬盘io性能非常拉跨,升级硬盘有更好体验,不过要加钱,懒得再测了。

Q3~RQPCDZ7A9QX~3E99{8.png

单线程性能测试cpu内存io硬盘4K写硬盘4K读硬盘连续写硬盘连续读
华为云(贵州)高6%相近差别不大
云筏容器云(世纪互联)相近完胜完胜差别不大完胜

​ 注:以上测试内容,因为测试内容单一,测试次数不够多,测试环境可能有改变等原因,仅供参考。

​ 接下来是极为漫长的unixbench,第二个容器(4GHz)的unixbench分数:

AZG{G`3UGLHA3UD83%2@8.png

WDU4{VAOP)L`JC~ERY$M_Q.png

极限性能测试

​ 云筏容器云支持最大96 cloudlets的容器,也就是38.4GHz的频率(超10GHz,全人类感谢3.84次),这怎么能不来玩一玩呢?

​ 在environment下点击change environment topology即可调整拓扑以及配置。

AMU39}5(ERC3EI_(ZX.png

​ 配置设置页面不再展示。Lenmonbench 多次结果:

{@BQZ_YU5@Q3BG0DVYJL7B.png

G5FLZ5RL8AC2{6PCQ%}U0S.png

GRE235@{M)_FM`~{00PK4.png

​ 可以看见,16核心的分配,资源很足,总分数破万了,这里给一个我的hz独服的测试分数(配置为i7-2600 16G 2*1T HDD Raid1) 作为参考

JLV6)OCV@Y7%1ZDC0%SGNR3.png

​ 多线程分数是4.24倍,hz独服为价格21欧元,4.24倍相当于月付700元,而满配容器(50G硬盘)的价格是0.981¥每小时,相当于月付706元。也就是说在计算性能上,两者价格已经很接近了。

CPU性能分配猜想

​ 一点猜想,容器云平台通过限制提供给容器的核心的频率来做到的限制最高性能。猜想是根据下图得来的:

3QFW0S8W(@@HO_M}6M}6K.png

​ 如上图,为96计算单位的最高配容器,提供了38.4GHz的计算频率,宿主机单核2.5GHz,38.4/2.5=15.36,为了凑够性能至少要16颗宿主机核心,容器也确实有16颗核心。提供给容器的16颗核心都运行在2.4GHz,总频率为2.4*16=38.4GHz,完全一致。新的问题来了,在跑多核计算的时候,如果限制了cpu上限频率,单核性能会不会被限制,是2.4GHz的成绩还是2.5GHz的成绩呢?

​ 据推算,“单核限制频率”最低能达到1.4GHz,即总计2.8GHz频率下,至少要分配两颗核心,每颗核心最高只能达到1.4GHz。根据这个设置创建一个容器看看。

8L%$KUI0624A$U6W{5XJK.png

​ 频率显示为1.4GHz,那么单线程性能受到影响了吗?跑个分看看。

S4)URW_@I9%Q}T(EJK`E.png

​ 如上图,单线程性能没有受到影响,我的想法不一致。所以这些字面数据没有意义。这意味着给出的频率即为性能指标,不会影响单核性能,当然多核心还是会受到影响的,猜测多核心满载时,频率自动降到这个基线上来。

内存测试

​ 测试环境:38.4GHz 24G的最高配,测试工具:mbw

​ 测试内存量分别为1MB,4MB,64MB,8192MB,测试结果如下。

1OB_$YZG`OQ3TTV4~5ZV)M.png

17N{9N1Z_N{B(VB)OXK.png

AOS~58HK0E9CJMOKOJQNEF.png

T7K36DWAN@FVB)RJ`)7@7.png

总结

​ 做长期项目的性价比,能上独服当然更好。但我接的更多是几天做完的单,一般按月租的独服就浪费掉了,云筏容器云计算资源的价格对我来说还是很划算的,而且能根据负载计费,更灵活。

​ 其次,云筏容器云容器量大的时候,出现抢占io的现象必然很频繁,那么io水平将达不到上述测试结果的水平。希望硬盘io不会让容器云变成垃圾场吧。


This article is under CC BY-NC-SA 4.0 license.
Please quote the original link:https://www.liujason.com/article/1036.html
Like (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址