基于硬件虚拟化的云服务器设计与实现
2022-10-14郑臣明姚宣霞郑雪峰杨晓君
郑臣明,姚宣霞✉,周 芳,郑雪峰,杨晓君,戴 荣
1) 北京科技大学计算机与通信工程学院,北京 100083
2) 海光信息技术股份有限公司,北京 100193
3) 中科曙光信息产业成都有限公司,成都 610041
云计算、大数据和人工智能被称为当前技术领域的三架马车,其中云计算[1]被看作继个人计算机变革、互联网变革之后第三次IT 浪潮,已经深入到众多的技术领域中,逐渐影响人们生活的各个方面,出现了公有云、私有云、城市云、企业云、政务云、国资云、移动云计算等众多应用形式[2-3].云计算具有异构性、资源动态扩展、按需分配、资源池化等特点[4].
云计算正处于快速发展阶段,云计算的软硬件生态体系还在持续完善中,数据中心、云计算中心、互联网信息服务中心的云平台大多数呈现以高性能服务器为主体的构建特点,以高性能服务器[5]为物理节点,采用网络互联,通过在物理节点上构建虚拟机的方式提供云计算服务[6-9].这些物理节点一般都拥有自己的硬件资源,包括处理器、内存、存储、网络、I/O、供电、散热、管理等系统.这种构建方式的特点是服务器的硬件资源利用率较低,空闲物理节点的硬件资源不能高效地释放给其他对硬件资源需求旺盛的物理节点,造成系统资源的浪费,如果集群系统上一定规模,那么这种资源浪费的现象就会更加严重.统计报告显示,在没有采用虚拟化技术的系统中大部分服务器的CPU 平均利用率只有5%~25%.因此,如果能将服务器的全部硬件资源或部分硬件资源实现共享,通过负载均衡系统实现按需分配[10],提高服务器的硬件资源利用率,那么就可以在不增加服务器数量或不增加服务器硬件资源的情况下,使系统整体服务能力得到显著提高,同时使系统整体功耗显著降低,从而显著提高系统性能功耗比.
云计算发展之初,重点是在满足应用需求,没有仔细考虑实际效能问题,但随着云计算逐步的发展成熟,不得不面对云计算的资源弹性、按需简约问题[11-12].为了解决这个问题有两种技术方向,一种是不断地设计或改进软件虚拟化技术[13-15],另一种是设计或优化硬件资源虚拟化技术.KVM(Kernel-based virtual machine)、Xen、VMware、Hyper-V 是目前常用的软件虚拟化软件,基本原理是在物理裸机上运行相应的虚拟化软件从而模拟或虚拟出多个虚拟机,每个虚拟机在使用过程中就像真实地运行在物理机上一样.利用多个虚拟机能够充分有效地利用和动态配置各种有限的硬件资源从而提高资源的利用率.软件虚拟化技术发展得比较成熟,目前在进一步地提高云计算的资源利用率和性能上遇见了瓶颈,因为虚拟软件自身的运行毕竟会占用物理机的一部分资源.在另一个技术方向硬件资源虚拟化技术方面,许多服务器公司已在自身产品的研发上或多或少实现了部分硬件资源按需简约[16]的功能.这些服务器可概括为以下几类.SuperMicro 公司于1997 年发布了Twin 服务器,在1 U 空间内放入了两台所有部件完全独立的双路服务器.后续又出现了2 U 4节点、4 U 8 节点等多种形态,逐步采用了共享电源模块的方式来降低总体能耗,提升冗余性.此类服务器提升了部署密度,但能耗下降有限.在2000 年出现了刀片服务器,在一个统一的机箱内,可以插入多个计算刀片,一个计算刀片就是一台服务器,同时所有服务器可以共享风扇、电源、网络交换、管理监控等模块,因此计算刀片上可以仅有处理器、内存和硬盘部件,设计上可以得到很大的简化.刀片服务器具有管理比较方便、密度较高、能耗较低的特点.在2009 年,Intel 公司提出了一个微服务器概念,它是一种单插槽、可扩展、低功耗的入门级服务器,具有高密度以及更高效的资源模块共享的特点[17].微服务器大多采用Atom、ARM 等低功耗处理器[18],当然也有时为了均衡计算性能,会混合使用高性能处理器或者专用处理器[19].在2011 年,由阿里巴巴、百度、腾讯三方合作发起天蝎计划,并在同年年底确立了最初的技术规范天蝎1.0.在2019 年发展到天蝎3.0,天蝎计划旨在通过提出一种统一标准的设计规范,实现低成本的可靠的灵活扩展,目前对机柜子系统、节点子系统、供电子系统、散热子系统进行标准规范.
近些年来,在云计算中出现了裸金属服务器(Bare metal server,BMS)的概念[20],这是为了解决一些对计算和I/O 性能要求高、数据处理量大的业务而提出的一种服务器,利用它可使云计算能够应用于核心数据库、关键业务应用系统、高性能计算等场景.裸金属服务器是硬件和软件优势相结合的产物,本质上仍是一台传统的物理服务器,但同时又具备云计算技术的虚拟化服务功能.它是在只靠传统的软件虚拟化技术无法满足一些业务需求的情况下,采用硬件资源独占的方式分配给这些业务使用来解决性能瓶颈[21]问题,其实这种做法与云计算所追求的资源共享、按需分配的特点相悖.为此,阿里云对裸金属服务器进行了改进优化,推出了弹性裸金属服务器,即神龙云服务器[22].神龙云服务器兼具了物理机和云服务器的优点,本质上仍是一台裸金属物理机,即具有物理机的高性能、安全物理隔离的特点,另一方面采用独立于物理机CPU 的额外专用芯片[23](如FPGA、Intel Xeon CPU)分担原物理机CPU 的一些虚拟化任务,如虚拟机监视器(hypervisor)所承担的管理调度、设备软件模拟等方面的任务.神龙服务器同时利用额外的专用芯片桥接存储、网络等I/O设备,协助物理机CPU 实现I/O 设备硬件虚拟化.专用芯片能够运行阿里云的特有管理软件,可有效地整合进阿里云已有的管理系统中,实现快速的交付能力和实时的业务响应能力.神龙云服务器架构有三个模块组成:计算子板,I/O-Bond 桥接板,BM-hypervisor 底座.BM-hypervisor 底座作为基础物理服务器,采用Intel E5 系列CPU 扩展出16个PCIe(Peripheral component interconnect express)槽,每个槽对应一个计算子板,每个计算子板带有一个用FPGA 设计的I/O-Bond 桥接板用来连接计算子板和BM-Hypervisor 底座.每个计算子板就是一个独立的物理机,上面有CPU、内存、PCIe 总线和I/O-Bond 桥接板.I/O-Bond 桥接板是用FPGA实现的硬件接口,模拟实现I/O 设备,实现硬件虚拟化.BM-hypervisor 底座上的CPU 负责16 个计算子板的hypervisor 功能,并运行阿里云的管理软件.神龙云服务器的架构特点决定了比传统的云服务器具有更高的计算能力、更高的虚拟化效率,但其优势只能在阿里云体系下才能得到发挥,离开了阿里云体系其架构缺点也十分的明显.为了提高神龙云服务器的计算能力、虚拟化效率,采用16 个FPGA 芯片和一个Intel E5 CPU 作为专用的加速芯片,用大量专用芯片换性能所付出的成本比较高,对于小规模的云计算来说性价比不高,只有在像阿里云这样成千上万规模节点的云计算中才能体现性价比的优势.神龙服务器受限于BM-hypervisor 底座上CPU 的PCIe 扩展能力不能容纳较多的计算子板,单台神龙服务器能容纳16 个低端Xeon E3-1240 v6 计算子板,或者8 个中端Xeon E5-2682 v4 计算子板,或者1 个高端Xeon E5-8163 计算子板,16 个计算子板几乎已是上限,弹性的拓展能力受限.计算子板的异构性是神龙服务器的一大特点,但在单台神龙服务器内部同时只能使用一种规格的计算子板,如更换需要同时更换.
针对如上云服务器的不足之处,本文着眼于云计算系统内计算、内存、存储、网络以及其他I/O 资源研究一种基于硬件资源的虚拟化、共享池化技术,设计一种云服务器系统架构,分别形成计算池、内存池、存储池、网络池以及I/O 池,每种池中的资源既可同构、又可异构.根据本文提出的云服务器系统架构,设计云服务器原型机,并测试和评估网络池化性能、存储池化性能.此系统能够根据实际负载要求动态从资源池中申领资源、释放资源,使系统资源达到最大化的利用.
1 云服务器系统的架构设计
1.1 云服务器硬件资源池化方法
在传统的云平台架构中,每个物理节点都是一个独立的服务器,如图1 所示,物理节点拥有自己的硬件资源,包括处理器、内存、存储、网络、I/O、供电、散热等系统,这些硬件资源无法被其他物理节点所共享使用,致使虚拟机(Virtual machine,VM)只能建立在自己的物理节点上,而不能跨物理节点资源建立,在负载不均匀的情况下会造成不同的服务器忙闲不均,造成资源的极大浪费.
图1 传统的云平台架构Fig.1 Traditional cloud computing platform
云服务器所追求的一大特点是要构建计算、内存、存储、网络和I/O 的共享架构.服务器硬件资源共享的前提是将系统的计算、内存、存储、网络以及其他I/O 资源聚合在一起,分别形成计算池、内存池、存储池、网络池以及I/O 池,如图2 所示.每种池中的资源既可同构、又可异构.
图2 云服务器硬件资源池化示意图Fig.2 Diagram of server pooling hardware resources
为了实现服务器资源池化的目的,服务器硬件资源接入一个高性能互联网络,如图3 所示.一方面,通过管理系统按照应用负载的需求,有效地组织该物理节点的计算、内存、存储、网络和I/O 按需配置,另一方面,要确保按需构建的物理节点的高效能.客观上讲,资源共享会存在一定的共享开销,需要建立一种平衡的体系结构将各类资源的共享开销降到最低.
图3 基于高性能互联网络的硬件资源池化方法Fig.3 Hardware resource pooling approach based on a high-performance interconnection network
高效能的云服务器可以采用多级的高性能互联网络构建云服务器系统,硬件资源根据不同的需求(如与处理器的耦合程度、性能要求)分布在互联网络的不同层,这些硬件资源可以有本地宿主,也可跨层协调给远程宿主.
如图4 所示,本文设计的云服务器高性能互联网络由三级构成,以一级互联为单元构成二级互联系统,再以二级互联为单元构成三级互联系统,即全系统.
图4 分布式云服务器结构Fig.4 Distributed cloud server architecture
一级互联:对应一个物理节点,物理节点上可以有多颗CPU 和多组内存,主要实现CPU 资源和内存资源的池化.由于CPU 和内存对物理节点性能有很大影响,内存仅作为处理器的私有资源,两者之间的连接必须是紧耦合关系,采用专门的总线互联,例如第四代双倍数据速率(Double data rate 4,DDR4)内存总线.同一物理节点采用对称多处理 (Symmetric multi-processor,SMP)等方式组成多路CPU 的内存共享,CPU 之间通过超路径互联(Ultra path interconnect,UPI)总线、超级传输 (Hyper transport,HT)等类型的高速互联总线连接,采用高速缓存相关的非一致性内存访问 (Cache coherent non-uniform memory access,CCNUMA)、非一致性内存访问(Non-uniform memory access,NUMA)等架构/协议来实现内存资源的池化.此互联域内资源非常适用于对计算性能敏感性的业务场景.
二级互联:以一级互联域对应的物理节点为单元建立二级互联网络,这是针对一定数量的处理器彼此共享同一物理资源的互联架构.该级互联虽对互联的扩展性无特殊要求但对性能要求却很高,以降低因共享带来的开销.该级互联一般采用Crossbar 拓扑,在性能和吞吐量上满足共享要求.此级互联主要是针对存储、网络、I/O 资源的池化,为一级互联上的不同物理节点提供共享存储、网络、I/O 资源.二级互联避免了为每个物理节点单独设计私有资源而带来成本浪费的问题.与一级互联域配合使用,可解决需要大量处理器且对计算性能敏感的业务场景,如事务型数据库、企业资源计划(Enterprise resource planning,ERP)系统.
三级互联:以二级互联域作为单元进行三级互联,在二级互联的基础上解决共享资源系统可扩展性问题.网络拓扑可采用Mesh、Torus 等方式,网络协议可以采用公开协议,或者自定义的私有协议.通过该网络,一方面一个物理节点上处理器可以访问、共享三级互联域上任何一个节点的共享资源,实现全网区域的资源池化;另一方面根据系统的负载情况可以弹性的、无缝地减少或者添加三级互联的节点,以最小的代价缩小或者扩大云服务器的规模.此互联域非常适用于需要大量虚拟机平台、对计算性能要求不高、追求高性价比的业务场景.
1.2 云服务器体系结构的设计方法
根据如上所述三级互联资源的池化方法设计了一种分级硬件资源共享云服务器系统,如图5所示.
图5 一种分级硬件资源共享云服务器系统Fig.5 Cloud server based on a classified pooling hardware resource structure
因为CPU 和内存的配合对服务器性能的影响至关重要,现在的计算机体系结构一般把内存作为CPU 的私有资源,与CPU 一对一配置,所以把CPU 和对应的内存组成一个物理节点放在一级互联域里.物理节点可以是单路CPU,也可以是通过SMP、NUMA 等形式组合成的多路CPU.CPU可为x86 处理器、ARM 处理器、专用处理器以及其他架构处理器,可为高性能通用处理器(如Intel 的 Xeon,AMD 的Opteron),也可为轻量级处理器(如Intel Atom),还可为一些专用处理器(如AMD APU).轻量级处理器的应用可使云服务器获得高的性能成本比、高的性能功耗比和高密度.
多个物理节点组成一个计算模组,对应一个二级互联域.物理节点具有异构性,不同的物理节点之间可以配置不同类型的CPU,既可以使用追求高性能的通用处理器又可以使用追求高性价比的轻量级处理器,可根据云服务器使用的业务领域灵活配置.在具体实现上,可以把每个物理节点的存储总线(如SATA(Serial advanced technology attachment)总线)、网络总线(如千兆、万兆总线)、I/O 总线(如PCIe 总线、USB(Universal serial bus)总线、IIC(Inter-integrated circuit)总线)连接到互联架构控制器(Interconnection fabric controller,IFC)上,共享IFC 上连接的存储资源、网络资源、I/O 资源,从而实现硬件资源的池化.
作为云服务器系统核心的IFC 设有以下三类互联通道:
(1)上行.连接计算模组,聚合不同物理节点的资源总线,汇总连接到IFC 相应的Crossbar 总线上,如存储、网络、I/O 等总线.
(2)下行.连接网络、存储和I/O 等物理设备,为本地的计算模组和远端的计算模组提供共享资源.
(3)横向.连接其他IFC,实现互联规模扩展,互联协议可以采用公开的高速协议,例如万兆以太网协议、IB(InfiniBand)协议,或者自定义协议.网络拓扑可以采用2D Mesh、3D Torus 等架构,任意物理节点上的CPU 可以访问此网络上的共享资源.
2 云服务器原型系统的设计
根据上述提出的分布式硬件资源共享云服务器体系架构,构建了如图6 所示的云服务器原型系统架构,用于云服务器概念与关键技术的验证.此系统共有16 个物理节点,每4 个物理节点组成一个计算模组,计算模组之间采用2D Mesh 网络拓扑互联.图中M0 表示标号为0 的内存条;M1表示标号为1 的内存条;N0~N3 表示标号为0~3 的节点;Eth 表示以太网络.
图6 16 颗处理器云服务器原型系统架构Fig.6 Architecture of the 16-processor cloud server prototyping system
原型系统的架构分为三级互联,第一级互联域是一个物理节点,采用一颗海光信息技术股份有限公司型号为3235 CPU,配置两条DDR4 内存条.
第二级互联域是一个计算模组,包含四个物理节点,每个物理节点通过万兆、SATA、USB 总线采用星型拓扑结构聚合连接在IFC Crossbar 总线上,共享IFC 所连接的一个SATA SSD(Solid state disk)硬盘和100 G 以太网络.
第三级互联为四个IFC 采用2×2 Full Mesh 拓扑进一步互联,构建起4 个计算模组共16 颗CPU的云服务器原型系统.IFC 之间采用100 G 以太网络协议进行互联.
IFC 采用FPGA 芯片,FPGA[24-26]具有灵活编程的特点,能模拟出各种物理接口和各种总线协议,为云服务器原型系统调试和验证提供便利.
按照图6 所示的原型系统架构设计研发的云服务器原型系统样机如图7 所示,样机主要由如下部分构成:
图7 16 颗处理器的云服务器原型系统样品Fig.7 Sample of the 16-processor cloud server prototyping system
(1)四个计算模组:每个计算模组由四个物理节点组成,每个物理节点由一颗海光3235 CPU 组成和2 条DDR4 内存组成;海光3235 CPU 规格是4 核、8 线程,主频3.0 GHz,热设计功耗 (Thermal design power,TDP)为75 W;内存型号为Samsung M393A4K40BB2,容量是32 GB.整个云服务原型系统共有16 个物理节点,16 颗CPU、32 条内存条、共1 TB 内存容量.计算模组运行的OS 采用统信软件公司UOS 桌面版,即UOS-desktop-20-1031.
(2)物理节点:有一颗海光3235 CPU,通过内存总线连接2 条DDR4 内存条;从CPU 直接引出一个万兆以太网接口、一个SATA3.0 总线、一个USB2.0 总线连接IFC 模块.为了与IFC 上共享资源的性能进行对比分析,在第一个物理节点,即CPU0 直接连接私有的网卡和SSD 硬盘进行性能测试,所测得值作为对比分析的基准,其他物理节点不用引出.
(3)四个IFC 模块:每个IFC 模块基于一颗FPGA 设计实现.IFC 有三个互联通道,上行连接物理节点的万兆以太接口、SATA 和USB 总线,下行连接为计算模组提供共享的100 G 以太网络接口和SATA SSD 硬盘;横向通过100 G 以太网络和其他IFC 互联.FPGA 采用Intel Stratix 10 GX 2800系列(简称GX 2800),具体型号为1SG280HU2F 50E2LG,具有93.3 万个可编程逻辑单元、32 对可达17.4 Gbps 的全双工高速串行信号线和64 对可达28.3 Gbps 的全双工高速串行信号线,完全可以满足本设计的资源要求.例如对于一个100 G 以太接口大约需要4.2 万个可编程逻辑单元模拟实现网卡控制器,需要6 对28.3 Gbps 全双工高速串行信号线,其中4 对运行在25 Gbps 来传输网络数据,另外2 对作锁相环(Phase locked loop,PLL)使用.SATA 硬盘为Samsung 公司的6.0 Gbps 1.92 T SSD 硬盘,型号为 PM883-MZ7LH1T9HMLT.
(4)一个互联背板:支撑IFC 模块2×2 Full Mesh 互联.
云服务器原型系统实现了分布式硬件资源虚拟化共享模式,物理节点上的每个CPU 可按需配置IFC 上的存储资源和网络资源.每个物理节点的SATA 总线对应IFC 内一个虚拟硬盘代理模块,硬盘代理模块利用FPGA 的可编程逻辑单元模拟实现.虚拟硬盘代理模块通过XBAR 总线共享硬盘控制器.IFC 上挂接的SATA SSD 硬盘划分为一个共享分区和16 个私有分区,如图8 所示,在共享分区中部署操作系统、应用软件,可被16 个CPU共享,16 个CPU 在启动或者运行中可从共享分区中读取操作系统或应用软件的镜像,各自加载在本地内存中独自运行,并把运行产生的数据写入到共享分区内,从而达到冗余资源减少、软件维护简便高效的目的.私有分区为不同CPU 私有,存取经不同的硬件虚拟化通道一一对应,数据安全性高.共享分区和私有分区可按需分配、按需简约地灵活设计分区大小、所存数据的种类.虚拟硬盘代理模块通过IIC 总线与系统的管理芯片进行连接,一方面可以接收管理芯片的配置命令,对分区、数据包格式等参数进行设置;另一方面接受管理芯片的监控,反馈其运行的健康状态.对于网络资源的共享模式,在IFC 内部利用FPGA 的可编程逻辑单元模拟实现每个物理节点的网卡控制器和一个网络交换机来实现每个物理节点和下行设备的网络互联.IFC 上挂接的一个100 G 以太网络接口作为下行接口,可被所有的CPU 节点共享使用,可根据实际的网络需求灵活地调节对应物理节点的带宽.
图8 SATA 硬盘共享架构Fig.8 Architecture of a SATA disk in shared mode
云服务器原型系统灵活地、低成本地实现了在存储、网络I/O 等方面的硬件资源虚拟化,达到了按需分配、按需简约的目的.
3 云服务器原型系统的性能评估
对云服务器原型系统的网络性能、存储性能进行测试分析,评估分析硬件虚拟化性能和共享资源在三级互联系统中的性能损耗.
3.1 网络性能分析
从四个方面对云服务器原型系统的网络性能进行测试分析:裸物理机网络性能,硬件虚拟化网络性能,纯软件虚拟化网络性能,网络的聚合性能.测试软件采用国际上公认的benchmark 程序Netperf V2.7.0 软件.
裸物理机网络性能的测试方法是利用物理节点0 直连的一块Intel 82599ES 万兆网卡连接一个外部压力机来直接测试物理节点0 的万兆网络性能.通过Netperf 测试得到的三次实测数据的平均值为1172 MBytes·s-1,并以此值作为对比分析的基准.
硬件虚拟化网络性能的测试方法是物理节点0 的万兆网络接入IFC,经过网络的硬件虚拟化后,利用IFC 下行的100 G 网口连接一个外部的压力机进行测试.通过Netperf 测试得到的三次实测数据平均值为1168 MBytes·s-1,对比裸物理机测试结果发现硬件虚拟化的性能损耗是0.34%.这主要是因为IFC 在硬件虚拟化过程中数据转换延迟、端口重映射带来的损耗,可以忽略不计.
纯软件虚拟化网络性能测试是采用和裸物理机性能测试相同的硬件环境,利用统信软件操作系统UOS-desktop-20-1031 中的KVM 功能创建4 个物理核、64 GB 内存的虚拟机进行测试.通过Netperf 三次实测数据得到的平均值为1098 MBytes·s-1,是裸物理机性能的93.7%,是硬件虚拟化性能的94.0%.因为hypervisor 需要占用CPU 资源运行,CPU 必须要在虚拟CPU 环境与物理CPU 环境下频繁地来回切换,所以纯软件虚拟化网络性能有较大的损耗,大约是6%.
对于网络的聚合性能测试,采用原型系统中1~16 个物理节点通过IFC 同时与下行100 G 以太网口所连接的压力机传输数据进行测试.为了分析在不同物理节点数量情况下100 G 带宽的利用率,需要选择一个基准,利用CPU0 直连一块Mellanox 公司型号为MCX556A 100G 网卡,通过Netperf 三次实测数据得到的平均值11.7 GBytes·s-1GBytes/s(即11981 MBytes·s-1)作为对比分析的标准.1~16 个节点下行链路的带宽使用情况如图9所示,从1 个节点到10 个节点,下行链路带宽随着物理节点数量的增加几乎线性增长,一直到11485 MBytes·s-1,此时带宽利用率为95.9%,然后随着物理节点数量的增加带宽出现轻微下降,在16 个物理节点时,带宽为11279 MBytes·s-1,利用率为94.1%.这说明在1~10 个物理节点之间下行的100 G 网络带宽足够宽裕,一直到10 个物理节点时才被用满.超过10 个物理节点,由于下行带宽不足,不同节点之间存在竞争造成了内部损耗,所以带宽出现了下降,但下降比较缓慢.
图9 共享网络下行带宽Fig.9 Bandwidth of the downlink when host accessing
因为Netperf 被用来测试网络带宽的极限性能值,在平常使用过程中物理节点极少出现满负荷运行的情况,所以从以上分析可以看出,100 G 下行网络可有效支撑多个物理节点的网络共享,从10 个到16 个物理节点的带宽性能损失为1.8%,损耗比较小.可利用本原型系统的弹性扩展能力,在同一个IFC 上,即在第二级互联域上继续增加多个物理节点也不会引起太多的损耗,可进一步降低系统的成本.这表明本文设计的云服务器原型系统的网络池化设计工作正常,可以有效地降低了系统的复杂度.对比常规集群的搭建模式,此原型系统直接在IFC 内实现网卡控制器和交换机功能,可不用再为每个物理节点设计单独的网卡控制器、互联的交换机和复杂的网线连接拓扑,系统简洁,节省了成本,提高了计算密度.此网络池化的架构,一方面根据每个节点带宽需求及优先级可配置不同的带宽,达到自动的负载均衡,充分地最大程度地利用已有网络资源避免浪费;另一方面,此架构具有弹性、可无缝拓展系统规模的优势,不但可以升级IFC 下行网络,可采用更高速率的网络,而且也可以改变IFC 横向互联的网络拓扑,可灵活采用更高维数、更多种类的网络拓扑连接更多的物理节点,实现真正的按需分配、按需简约的目的,非常适合云计算应用的特点.
3.2 存储性能分析
云服务器原型系统中16 个物理节点共享IFC连接的一个2.5 英寸SATA 6.0 Gbps 1.92T SSD 固态硬盘,型号为Samsung 公司的PM883-MZ7LH1T 9HMLT,采用国际上公认的benchmark 程序FIO V3.12.2 测试存储性能.
从四个方面对云服务器原型系统的存储性能进行测试分析:裸物理机存储性能,硬件虚拟化存储性能,纯软件虚拟化存储性能,存储的聚合性能.
为了测试裸物理机存储性能,选择物理节点0 直连的SSD 硬盘进行测试,每项性能测试三次取平均值,得出4 K 随机读IOPS (Input/Output operations per second)性能为80832、4 K 随机写IOPS 性能为31873,并以此值作为对比分析的基准.
硬件虚拟化存储性能的测试方法是物理节点0 的SATA 总线接入IFC,经IFC 的硬件虚拟化后,利用IFC 下行的SATA 总线挂接SSD 硬盘进行测试.通过FIO 测试三次计算平均值,得出4 K 随机读IOPS 性能为80387、4 K 随机写IOPS 性能为31616,分别是裸物理机性能的99.4%和99.2%,对比裸物理机测试结果发现硬件虚拟化存储的性能损耗是大约0.7%.这主要是因为IFC 在硬件虚拟化过程中数据转换带来的损耗,对比真正的裸物理机性能,可忽略不计.
纯软件虚拟化存储性能测试是采用和裸物理机性能测试相同的硬件环境,在统信软件操作系统上创建4 个物理核、64 GB 内存的虚拟机进行测试.通过FIO 测试三次计算平均值,得出4 K 随机读IOPS 性能为73476、4 K 随机写IOPS 性能为28206,分别是裸物理机存储性能的90.9%和88.5%,是硬件虚拟化存储性能的91.4%和89.2%.性能损失的原因同样是因为hypervisor 占用了一部分CPU资源运行所致.
在存储的聚合性能测试中,原型系统中1~16 个物理节点通过IFC 同时与其下行接口所连接的SATA SSD 硬盘进行FIO 压力测试.选取上面的裸物理机的存储性能作为对比参考的标准.
图10 为16 个物理节点共享IFC 上SSD 硬盘4 K 随机读、随机写的IOPS 聚合性能,每项性能都测试三次取其平均值.
图10 共享存储系统IOPS 性能分析Fig.10 Shared storage IOPS performance analysis
从图10 中可以看出,对于随机读写性能来说,在1 个节点时性能最高,4 K 随机读IOPS 性能为80387、4 K 随机写IOPS 性能为31616,随着节点数量的增加随机读写的性能缓慢地下降.在16 个节点时随机读IOPS 性能为77247、利用率为95.6%,随机写IOPS 性能为30253、利用率为94.9%,也即16 个节点IOPS 聚合性能比裸物理机随机读写性能分别损失了4.4%和5.1%的性能,性能损失的原因是随着节点数量的增长,共享资源的调度管理损耗了一部分性能.
从以上随机读和随机写的性能分析看,在1~16 节点下云服务器原型系统都能最大限度地发挥IFC 上SSD 硬盘性能,存储聚合性能损失在5%左右.总的来说,存储的池化性能比较高、损耗可以忽略不计.普通服务器配置的一块SATA HDD(Hard disk drive)硬盘(如Western Digital 公司型号为 HUS722T2TALA604 硬盘)的4 K 随机读IOPS 性能为325、4 K 随机写IOPS 性能为303,由此可以得出云服务器原型机的SATA SDD 硬盘共享存储性能可完全满足近百个带有一块SATA HDD 硬盘普通服务器节点的使用需求.另外因为存储性能的测试是用FIO 程序来测试极限性能值,在平时使用过程中很少出现性能用满的情况,所以IFC 共享存储资源完全可以满足16 个物理节点的使用需求,并且可以根据物理节点的业务需求动态地分配存储容量和带宽,达到按需简约、按需分配的云服务器设计要求.
从云服务器原型系统的网络性能和存储性能分析来看,本文采用分布式硬件资源共享体系结构设计的云服务器原型系统一方面遵循按需简约、按需分配的设计理念,真正实现了服务器硬件资源的池化、虚拟化,可简易快捷地构建每个物理节点;另一方面,共享网络、存储的聚合性能损耗在5%左右,该损耗对大部分应用来说是可接受的,而且该原型系统的IFC 还是基于FPGA 器件来实现的,未来如采用ASIC 先进工艺实现,共享损耗还会进一步的降低.
4 结论
(1)不同于软件虚拟化技术,提出一种基于硬件虚拟化的云服务器系统架构,此架构优点是能够实现系统硬件资源的共享,硬件虚拟化速度比软件虚拟化速度更快,占用的系统花销更少,可以更加简洁地实现系统资源的虚拟化、池化,做到按需分配、按需简约的目的,与传统服务器相比最大限度提升服务器资源的使用效能.
(2)不同于常规的只能在单节点内进行资源的共享,本文设计的云服务器架构将服务器的硬件资源按照三级互联的方式分别设计了计算池、内存池、存储池、网络池,每级实现不同层次硬件资源的虚拟化,可实现单节点、跨节点进而实现全区域的资源池化.
(3)本文设计的云服务器采用三级分层互联域,对计算性能要求高的业务可在一级和二级互联域内运行,对于追求虚拟机数量、性价比高的业务可在三级互联域内运行.三级分层架构有效地扩展云服务器的适用范围.
(4)设计的云服务器架构具有异构性、可伸缩性.不同种类的CPU、存储、网络都可以无缝地融入到此云服务器内;根据云计算需求规模的大小,借助于此架构可以无缝地实现规模的变大或变小,具有较好的弹性,而不影响原先的架构和业务.
(5)研制了云服务器原型机,为产品化提供了参考;并实际测试了原型机的网络池化、存储池化的性能,硬件虚拟化的损耗可忽略不计,网络、存储的聚合性能损耗在5%左右,证明本文设计的云服务器架构可显著地提高云计算的性价比.