透过SPECvirt 谈云测试的背景、原理及实操
大家好,我今天跟大家分享的topic是云测试。其实这是一个很大的话题,从商业化的APM公司,如云智慧、听云、OneAPM,到开源的解决方案pinpoint, perfKit, cloudcmp都属于这个范畴。
那今天我结合前一两个月的实操经验,先从一个很小众的角度来看云测试:云测试之SPECvirt。如果有兴趣,以后再找机会分享云测试之APM、云测试之Benchmark。说到这个SPECvirt,既有很强的理论,又有很具体的实操。希望这些“干货”对大家的工作能有些许帮助。
我的分享分为三大部分:
- 云测试的背景(先给大家概述下)
- 云测试的原理(这部分是比较枯燥些的理论)
- 云测试的实操(这部分是比较Detail的实操)
先说说云测试的背景
说SPECvirt之前必须先提一嘴SPEC
SPEC是Standard Performance Evaluation Corporation(标准性能评估机构)的简称,是一个全球性的、权威的、代表目前业界标准的第三方应用性能测试组织。成立于1988年,是由斯坦福大学、清华大学、微软、等全球几十所知名大学、研究机构、IT企业组成,得到Intel、IBM、Huawei等支持和全球众多用户的广泛认可。
SPEC测试体现了软件、硬件、虚拟化、云计算、中间件平台的综合性能和成本指标,被金融、电信、证券等关键行业用户作为选择IT系统一项权威的选型指标。比如银行证券交易系统、保险公司综合业务系统、电信计费系统、大中型电子政务系统等。
然后咱们过渡到SPEC的拳头产品SPECvirt@2013
随着企业云计算和虚拟化程度不断提高,SPECvirt2013是业界公认的虚拟化云数据中心场景下端到端系统组件性能基准,包括服务器硬件、虚拟化平台、客户机操作系统和应用业务软件. SPECvirt2013模拟了虚拟化和数据中心服务器整合场景下的通用负载,以评价整体系统的性能扩展能力。哪些通用的云计算数据中心负载呢?
- SPECweb:模拟web server、file server、infrastructure server的典型业务负载
- SPECjAppserver:模拟application server、database server的典型业务负载
- SPECmail:模拟mail server的典型业务负载
- SPECcpu:模拟间歇性高并发的batch server负载
下面给大家Show一下SPEC家族产品的价格:
可以看到SPECvirt官方是3千美刀一套,non-profit也得750美刀,还是比较贵的。下面我们就分析下,它为啥值这么多钱?里面的价值是啥?
第二部分云测试的原理
个人认为:SPECvirt最大的价值在于模拟实现了虚拟化云计算数据中心里典型的业务负载。试问我们做云的目的是什么?不是为了做基础设施而做基础设施,而是为了更好的服务于云上的业务和应用。那么吃透了云化业务模型的精髓,不仅是能够做云测试,对于现有云基础设施的调优也指明了方向,就看你怎么用了。
接下来,我先简要介绍下SPECvirt的架构,SPECvirt代表了业内公认的数据中心虚拟化云业务的典型负载。直接上图吧:
这张图是SPECvirt单TILE的构成,涵盖了从硬件、到虚拟化平台、到Guest OS、再到上层业务的端到端性能。其中上层业务包含6种类型的典型虚拟化服务器和对应的客户端:
- 基础设施服务器infraserver;
- 网页服务器webserver;
- 邮件服务器mailserver;
- 中间件服务器applicationserver;
- 批处理服务器batchserver;
- 数据库服务器dbserver。数据中心服务器整合比高时只需要增加TILE数量进行模拟即可
接下来剖析下典型的云化业务模型是啥?稍微提示下,这里面的理论可能会比较枯燥,所以我只略讲2个比较简单的业务模型。
SPEC webserver的电子商务业务负载模型
这个业务模型是基于一个真实电子商务网站的日志文件分析出来的,包含平均页面大小、图片大小、用户访问频率、网购表单等,说白了就是再现了苹果商店:store.apple.com。
整个业务过程可以被分为三个阶段:(1) 浏览;(2) 定制化;(3) 购买,共包含13个主要动态页面,通过建立了基于上述动态页面转换的马尔科夫链Markov Chain模型来刻画整个电子商务业务。
(1) “浏览”阶段包括的动态页面有:index(如选择地域、客户类型等),search(如商品搜索),browse(如罗列产品链接),browse_prodectline(如显示特定产品信息),productdetail(如显示特定产品细节)。
直接上Markov Chain模型图
稍微解释下上图,从顶端状态3-browse_prodectline(如显示特定产品信息)转换到状态4-productdetail(如显示特定产品细节)的概率是0.8,而反向转换的概率则比较低;
(2) 第二个阶段“定制化”阶段包括的动态页面有(就以在线订购Apple Macbook Air为例吧):状态5-Customerize1(如定制化CPU、内存、硬盘等内部固件),状态6-Customerize2(如选择质保、服务和培训等),状态7-Customerize3(如增加网线、鼠标、转换器等附件)。各状态间的转换关系也见上图。
(3)类似的,第三个阶段“购买”阶段包括的动态页面有:状态8-cart(购物车管理),状态9-login(购买前的登录或者注册),状态10-shipping(填写物流信息),状态11-billing(填写并验证付款信息),状态12-confirm(支付前确认所有上述信息)。比如,在上面基于动态页面转换的马尔科夫链Markov Chain模型中,状态10、11、12之间的状态迁移概率都是95%。
此外,模型中也统计了与上面13个动态页面对应的静态内容大小(如文字、图片等),并按照一定的概率组合返回给最终用户的网页请求。比如,状态4- productdetail动态页面对应的静态内容大小分布为下表所示:
SPEC webserver的电子银行业务负载模型
如果说电子商务业务模型模拟的是store.apple.com,那么电子银行的业务模型则可以类比为中国银行网上银行www.boc.cn,因为这个数据是某银行服务器约2个星期的日志,涵盖约1千三百万的业务请求。
这个银行业务模型的要点我提炼了三部分:(1) 基于On-Off的用户活动模型;(2) 基于Markov Chain的业务请求模型;(3) 用户体验约束。咱们分开简述下:
基于On-Off的用户活动模型是一个典型的幂律分布模型,即用户以一定概率进入电子银行网站后,经历一系列活动时段(也叫ON阶段),ON阶段之间是静默期(OFF阶段)。其中ON阶段就是第二部分要讲到的基于Markov Chain的业务请求模型,OFF阶段要么离开系统,要么再次进入ON阶段,这个过程可用符合帕雷托分布刻画,统计数据表明均值约为9秒。
基于Markov Chain的业务请求模型其实与前面电子商务业务负载模型的刻画思路一样,基于统计数据建模了用户账户、账单、转账、借贷四大类业务供16种状态的迁移概率以及每个状态对应的流量大小。这里就不再贴长表了。
用户体验约束是指调度上述活动时同时要遵循一些QoE的指标限制,比如95%的响应在2~3秒内返回是可以接受的。
小结一下比较枯燥的第二部分,我这里只是brief了SPEC webserver的电子商务和电子银行业务模型,SPECvirt还有很多业务模型。比如SPECweb的支持类网站业务模型(类似奇虎360打补丁),SPECmail的邮件系统业务模型(模拟了500个用户的查新、发送、删除、搜索邮件等常规邮件操作),SPECjAPPserver的生产/供应链管理/库存业务模型等等。这些真实有价值的业务模型为业务系统云化和基础设施调优将会提供重要参考。
今天的最后一部分:云测试的实操,包括安装部署、调错调优两个小部分
(1) 先说安装部署
SPECvirt 2013的安装部署通常包括如下九个步骤:
- 制作BaseVM用于后续克隆;
- SPEC infraserver部署(核心是Webserver的后端文件服务器);
- SPEC webserver部署(搭建类似典型LAMP环境);
- SPEC mailserver部署(基于开源的 IMAP 和 POP3 邮件服务器Dovecot);
- SPEC dbserver部署(部署MySQL, or Oracle);
- SPEC appserver部署(基于开源J2EE应用服务器glassfish);
- SPEC batchserver部署(基于SPEC CPU套件);
- SPEC client部署;
- 多Tile环境搭建。
通常来说安装部署过程一共需要配置近1K行Linux命令,整套环境搭建起来一般需要3~4天,不亚于命令行方式安装OpenStack的复杂度。这里广告下,经过我们的自动化,整个安装部署已从数天降低至数小时,工作效率提高10倍。
(2) SPECvirt的调错还是比较麻烦的,因为牵扯到的组件太多,在我测试过的主流虚拟化引擎中,曾经遇到httpd组件不全、时间不同步、Webserver脏数据、性能不足报错等各种报错进行Debug。而SPECvirt测试的调优手段包括网卡SR-IoV、VM资源预留、物理核绑定等技巧,具体细节就不再累述了。不同虚拟化引擎的得分也是有差异的。
SPECvirt跑起来一次需要2个小时,上个图感受下:
看不懂吧。通常重点关注Appserver的QoS值(第一行最后一位),Webserver的Fail数(第二行第7位)等。
分享人简介:
智囊团分享人:梁伟(David),中国电信研究院,博士毕业于中科院计算所,曾任职中石油(北京)数据中心架构师、华为(香港)诺亚方舟研究员,互联网、云计算与数据中心的实践者。
(联系我可以通过邮箱:[email protected]或者QQ:99584051)