在2018年,紫光股份旗下新华三集团CAS虚拟化软件(以下简称CAS)在Intel V4 CPU平台下,承载了26Tile的测试虚拟机业务,以2438分的优异成绩刷新SPECvirt_sc2013虚拟化性能测试记录,是业界相同服务器下的最好成绩。这份成绩的取得是新华三集团CAS研发团队10年间一直不断提升产品和技术实力的结果,新华三一直在夯实基础,认认真真做产品,致力于为客户提供较佳的虚拟化体验。
SPEC是什么
SPEC成立于1988年,由斯坦福、清华等全球知名大学、研究机构、IT企业组成,主要工作是创建、维护和支持各类数据中心软硬件系统的测试标准。所有测试方案均随着应用场景的变化而不断更新,以全面模拟真实的业务场景需求,同时,所有测试结果及详细的测试报告均会在SPEC官网公布。
SPECvirt_sc2013是SPEC诸多测试方案的代表,模拟了数据中心典型业务负载下虚拟化软件的带业务性能,涵盖硬件、虚拟化平台、虚拟客户机操作系统到上层的应用软件等多个部分,更契合用户实际的业务需求,其结果被金融、电信等关键行业用户作为虚拟化软件选型的权威性能指标,受到客户的高度认可。
SPECvirt是如何测试的
SPECvirt_sc2013基准测试包含多种 SPEC 标准的测试虚拟服务器,每种虚拟服务器承担不同的角色,提供不同的服务,6个虚拟服务器构成了一个“Tile”。具体包括:
1.基础架构虚拟服务器(Infrastructrure Server VM),是Web Server VM的后端。
2.网页虚拟服务器Web Server VM,电子商务业务负载模型,专注于业务响应时间、数据一致性及数据质量。
3.邮件虚拟服务器Mail Server VM,邮箱账户进行邮件处理,专注于高并发请求数据处理,而且不能有超过1%的失败率。
4.应用中间件虚拟服务器Application Server VM,供应链管理库存管理等处理。专注于业务流程、业务交易的及时响应程度。
5.批处理虚拟服务器Batch Server VM,模拟编译器运行处理、文件压缩等高CPU负载业务模型。
6.数据库虚拟服务器Database Server VM,是Application Server的后端,处理数据库高并发数据。
测试的过程就是增加Tile的过程,当Tile增加到一定数量时,会导致测试QoS下降,此时需要根据日志信息不断对软硬件进行调优,以消除QoS告警,提高虚拟机数量和总分值。测试完成后会产生加密的RAW文件,对测试配置、过程、结果进行自动记录,提交给SPEC组织,由SPEC组织根据该文件进行成绩有效性判定。
测试时,测试程序也会对业务负载情况进行自动测算整理。测试结束时,结合每种业务虚拟机的分值进行加权计算,数据标准化处理成百分制分数,每“Tile”会计算出一个Score分数值,服务器所能运行的每个Tile分数值进行累加,即为最终的总分。
例如图1, Tile1中Application Server分数为167.05,Web Server分数为173.62,Mail Server为127.53,那么针对Tile 1的分数就为(167.05/178.1 + 173.62/180.9 + 127.53/139.6)/3 *100=93.71,其中178.1、180.9、139.6为最大理论值。SPECvirt有一套复杂的计算算法,硬件不同、负载不同其最大理论值也都会有差异。
图1 SPECvirt 性能图表
SPECvirt测试通过后,服务器所能跑的每个Tile的Score分数进行累加计算,即为最终的Overall Score总分,Tile数目越多,每个Tile分数越高,则总分就会越高。
测试如何才能更优异
SPECvirt是一套非常全面的测试,包括系统的各个方面的性能,要结合服务器CPU、内存的运行原理进行充分的优化。CAS对虚拟化操作系统进行深入分析,通过各调试手段进行数据采集和分析,从而找到各性能瓶颈并进行针对性的优化,历时半年,终于在相同硬件服务器下刷新了SPECvirt_sc2013测试记录。测试过程中我们主要完成了以下几项工作:
1. 降低CPU访问延时
现在CPU硬件架构中,CPU缓存是位于CPU和内存之间的临时存储器,它的容量比内存小但访问速度快。当CPU访问的数据位于Cache中时,其就可以加快访问速度,CPU缓存分为L1、L2 、L3 缓存,其中L3 Cache各CPU之间共享,L2 Cache 是core间共享,L1 Cache为core独享。
图2 CPU缓存关系图
在虚拟化场景下,如何减少虚拟机vCPU的访问延迟?就是要多使用Cache加快CPU访问速度。默认情况下,虚拟机vCPU都是各物理CPU之间进行调度,这样L1、 L2 Cache miss会很严重,无法充分利用物理CPU的L1、L2 Cache加速。CAS在测试调优时,通过管理云平台针对不同SPEC测试业务场景需要,进行虚拟机CPU绑定,把虚拟机vCPU绑定到固定的物理CPU中,充分利用L1、L2 Cache进行指令及数据的缓存。
因为L3 Cache本身就是各CPU之间共享,但有的虚拟机业务对L3 Cache比较敏感,而有的虚拟机业务不敏感。CAS在测试调优时使用Intel CAT技术,通过配置工具对L3 Cache进行精细化调度分配,对L3 Cache敏感业务分配更多的Cache带宽,比如Batch Server就会获得更多的L3 Cache带宽。
2. 降低内存访问延时
现有服务器架构下,服务器都是有多个CPU处理器,有许多的内存槽位,如何有效地组织CPU和内存,从而构建出更大型系统,为解决该问题NUMA(Non-Uniform Memory Access)应运而生。NUMA非均匀内存访问架构是指多处理器系统中,内存的访问时间是依赖于处理器和内存之间的相对位置。这种设计里存在和处理器相对近的内存,通常被称作本地内存,还有和处理器相对远的内存, 通常被称为非本地远端内存。
如图3所示,当CPU0访问本地内存0时,路径是最短的,访问速度是较快的,而CPU0访问非本地内存1时,访问速度会有一定的限制,就增加了访问延时。
图3 CPU内存示意图
那么在虚拟化场景下,首先要充分利用服务器的NUMA特性,在虚拟机vCPU绑定的同时,也要将内存分配在该CPU处理器最近的物理内存上,这样就保证了CPU处理器和内存之间的路径最短,提高内存访问速度,有效降低访问延时。
CAS在测试调优时,会开启虚拟化操作系统内核NUMA功能和虚拟机NUMA功能。虚拟化操作系统内核CAS默认已经开启NUMA功能,测试时会再关闭操作系统NUMA自平衡功能,这样可以进行手动精细化控制。不同业务虚拟机,内存分配大小也不同,当虚拟机vCPU所在的物理CPU本地内存不足时,通过管理云平台配置虚拟机NUMA功能来加快访问远端内存的效率。
3. 设备中断亲和性设置
操作系统需要管理外部PCI设备,但是设备的访问速度远远低于CPU的速度,所以我们需要一种机制来弥补这种速度鸿沟,提高CPU的效率,为此我们引入了中断机制,让设备在需要操作系统处理外设相关事件的时候,能够主动通知操作系统。但是当中断到来时,会打断操作系统和应用的正常执行,让操作系统先完成中断处理,然后在恢复操作系统和应用的正常执行。
图4 中断处理示意图
在虚拟化场景下,虚拟机正在某物理CPU中运行时,服务器网卡收到一个报文,此时CPU会收到一个网卡中断,正在运行的虚拟机任务会被打断,先处理网卡报文收发,报文处理完后,再重新运行虚拟机任务,这样就浪费了虚拟机CPU时间,相对降低了CPU使用效率。
进行测试调优时,CAS通过管理云平台设置中断亲和性,把所有的设备中断都设置到某CPU中进行处理,该CPU只进行中断处理,这样既可以增加中断处理的效率,又可以防止打断虚拟机CPU的运行。除物理外设中断外,还有时钟滴答,也要减少这些滴答中断的影响,CAS通过修改内核参数配置,将虚拟机使用的CPU进行时钟隔离,减少时钟中断对虚拟机运行的影响。
4. 耐心,锲而不舍
测试不只是需要丰富的操作系统和虚拟化系统知识,也需要有足够的耐心,细致的分析每次测试结果,成功不是一蹴而就的。
一次完整的测试需要持续两个多小时。测试时,一直在输出日志,日志中存在关键信息,需要仔细分析。另外也需要编写相关脚本检测系统资源使用情况,跟踪系统负载波动。测试不能只测十五分钟或半个小时就停止,过早地停止看似节省时间,但对整体无把握,有点盲人摸象的感觉,哪怕分数值不理想,也需要静下心来完整测完两个小时,然后对测试的过程数据进行全局分析。
值得注意的是,业务虚拟机并不是配置越高越好。Batch Server业务是CPU密集型业务,我们在开始测试时配置1个vCPU,总是无法通过,我们认为该虚拟机配置两个vCPU应该可以通过,然后在此基础上一直进行优化,结果两个小时完整的测试后, Batch Server虚拟机业务却没有通过。最终原因是配置了两个vCPU的Batch Server虚拟机会启动两个线程去运行,测试的最后阶段才会启动第二个线程,此时内存分配不足,如果不完成整个测试周期,是很难发现这种问题的。
结束语
经过上面的经验介绍,大家对CAS如何通过SPECvirt测试获得优异的成绩,应该有了直观认识。成绩来源于积累,来源于CAS十年间一直致力于的开发和优化。相信未来会更美好,CAS会更努力保持卓越,为客户提供更好的云平台。