在云计算风生水起的今天,众多关键业务已经运行在云上,作为提供计算载体的虚拟化,面对关键业务严苛的性能要求,该如何衡量和选择才是最优呢?SPECvirt作为业界公认的最权威、最严格的虚拟化性能测试标准,受到客户的高度认可。
挑战Specvirt测试
时间的指针回到2015年,当时我接到任务,开始备战SPECvirt2013虚拟测试。当时对我们而言,这是一个完全空白的领域,立项时连有用的资料都拿不出几份。
该项测试包含四种应用类型,最复杂的是中间件应用,涉及j2ee架构、ejb编译、运行、中间件软件glassfish的使用。我在研究生时期曾接触过corba中间件,但对于j2ee、ejb却一无所知。幸运的是部门内精通java的同事伸出了援助之手,向我传授了关于j2ee、ejb的原理和机制。
测试过程中遇到了一个棘手的问题,由于sql访问数据出错导致ejb运行异常,最后定位是由于测试工具的java代码不能很好兼容mysql数据库,修改sql语句后解决了该异常。
……
边摸索边查找资料,上官网论坛发帖求助,第一个tile得以搭建成功。
艰难的性能调优之路
接下来继续建立第2、3……直到第7个tile,期间不断遇到性能瓶颈,我穷尽一切办法解决问题。性能测试具有资源抢占的特点,需要持久的耐性去分析微调。比如tile1-4 的batch测试为cpu密集型,如果batch占用的cpu过量,虽然batch通过,但会对其他应用产生负面影响;又如中间件的低延时与web的高带宽也是互相争夺资源的,测试中经常出现web和appserver无法同时通过的情况。最终我采用cpu share,小参数微调资源占用量,有效解决了难题。
2015年,第一份测评答卷成功提交,测试分数超过了友商。那一年的时间里,我一刻不停地奔跑着,从拼命追赶,到与友商并驾齐驱。
当我们迈开步伐奋力奔跑的同时,友商也在不断进步。2017初,对方刷新了两个Specvirt2013测试结果,竞争形势迫切要求我们再次超越。经集体研究,我们定下了在2699V4 cpu上超越友商的测试目标。
这一次我不再是单刀作战,测试部和开发部也分别派出精兵强将,三人成团,开始协同作战。
老方法已不适用,敢于转变思路
之前参加测试的方法采用中间件glassfish+mysql,在单NUMA9tile 延时超标很多,无法通过测试。而官网发布的绝大部分测试结果均采用websphere+ db2,我们必须当机立断,做出改变!
团队陆续研究了jboss、weblogic,websphere这些中间件软件,尝试新软件的同时,也在重新开发学习一门新技术。最后我们确定采用websphere,安装部署websphere的实例过程不可避免遇到了各种异常,整个团队成员一起将安装文档、友商公布的测试数据包分析研究了十几遍,最终困难迎刃而解。
很快,我们搭建完成双NUMA两套测试环境,两套环境各自独立,互不干扰,加快了调优进度。2018年3月底,初步测试成绩25.2 tile达 2374分,已超过友商8分,但微弱的优势很容易被对手超越,所以我们决定继续向26tile极限冲刺。
我们全面排查所有配置、参数,对websphere、db2、gcc编译、jvm参数、网络参数等进行了全方位分析,最后通过对websphere队列数目的调整,大幅度改进了测试得分。
评审专家在美国,与中国有8小时的时差,因此我们发送完测试结果并不能马上得到回复。且由于没有发送大附件的权限,那段日子我们每晚请市场同事协助上传评审件、传递评审意见。为了能在第一时间得到评审结果,我们数次在凌晨等待市场同事转发最新的评审意见,并立即做出修改。
功夫不负有心人,经过大量的调整和优化,最终H3C CAS以2438分刷新了全球SPECvirt虚拟化测试记录,为行业树立了新的标杆。
新华三刷新全球Specvirt虚拟化测试记录
结语
回想起来,自己能在这个关键事件上尽一份力,让我深感人生的每一步都不会白走,每一次努力都不会白费。
技术路漫漫,上下求索方能致远。解决问题没有捷径,碰到问题多往前走一步,再坚持一下,说不定就柳暗花明了。幸运的是,我们从没有轻言放弃,终被成功眷顾。