APP下载

虚拟化性能损耗研究

2020-06-02杜雅红

铁路计算机应用 2020年5期
关键词:虚拟化内存程序

杜雅红,张 栋,黄 鑫

(中铁信弘远(北京)软件科技有限责任公司,北京100089)

在计算机技术中,虚拟化技术可以帮助有效地管理计算机中的各种实体资源[1-2],比如:CPU、内存、网络和存储等,它通过将计算机资源抽象出来并实现转换,让资源可以有效地动态分配和跨域共享,突破了实体资源不可拆分以及受地域限制的这一技术难点,让用户可以更加灵活、有效地使用这些资源[3-4]。虚拟化资源通常是指拥有计算能力和存储能力的资源[5]。

很多企业或者组织在是生产环境中使用虚拟化之前,都会对虚拟化技术的性能损耗进行测试,以确保虚拟化技术可以满足生产需要,但是,由于基础硬件及应用系统的不同,虚拟化的性能测试结果也不尽相同。鉴于此,本文进行了基于铁路标准硬件设施的虚拟化性能测试,为应用系统选择物理机或者虚拟化技术提供参考。

1 虚拟化技术介绍

1.1 VMware介绍

VMwarevSphere是一款商用的服务器虚拟化平台,组件包括vCenter Server、ESXi、vSphereWeb Client、vSphereClient 和vSphereHost Client。虚拟机的管理程序ESXi是vSphere所有产品套件的核心,是其他产品所依赖的基础。vCenter 可以集中管理VmwarevSphere环境,从而提高管理员对虚拟环境的控制[6]。

VMware 的系统架构,如图1所示。

图1 VMware系统架构

VMwarevSphere 主要组件及功能如下:

(1)VMwarevCenterServer:配置及管理虚拟化IT 环境的中枢节点。

(2)VMwarevSphereClient:用户可以使用此Client 从WindowsPC连接到vCenter server 或者

ESXi。

(3)VMwarevSphereWebAccess:用户可以通过此Web界面对虚拟机进行管理、对远程控制台进行访问。

(4)VMware虚拟机文件系统(VMFS):ESXi虚拟机使用的高性能集群文件系统。

(5)VMwareVirtual SMP:允许单一的虚拟机同时使用多个物理处理器。

(6)VMwarevMotion和StoragevMotion:VMwarevMotion 可以将运行态的虚拟机从一个主机动态迁移到另一个主机,且迁移期间虚拟机不需要关机,业务不受影响。

(7)VMwareHighAvailability(HA):可为虚拟机提供高可用性的功能。如果服务器出现故障,会在其他空闲主机上重新启动故障主机上的虚拟机。

(8)VMwareDistributedResourceScheduler(DRS):通过收集硬件资源,实现虚拟机的动态分配,同时平衡计算容量。

(9)VMwarevSphereSDK:用户可以通过调用此接口来访问VMwarevShpere的功能。

(10)VMware容错:为虚拟机启动容错后,会为此虚拟机创建副本虚拟机。主虚拟机上的所有操作都会同步到副本虚拟机上。如果主虚拟机出现故障,则副本虚拟机将成为主活动虚拟机,保证业务连续可用性。

(11)vNetwork分布式交换机(vDS):实现了分布式的虚拟交换机功能,使得虚拟交换机可以跨多个ESXi主机,简化网络运维工作量,并提高网络容量。同时,虚拟机在跨主机迁移时,保证网络配置不变。

1.2 KVM介绍

基于内核的虚拟机(KVM,Kernel-basedVirtual Machine)是一个Linux 的内核模块,支持X86(32 bit 和64bit)、s390、Powerpc等CPU。KVM 的虚拟化需要硬件支持(如IntelVT 技术或者AMD 技术),是基于硬件的完全虚拟化[7-8]。

在KVM中,虚拟机被实现为普通的Linux进程,由标准的Linux 调度程序进行调度。但是,KVM 本身不执行任何硬件模拟,需要QEMU 提供硬件I/O虚拟化。

KVM系统架构,如图2所示。

KVM支持的功能包括:

(1)支持CPU 和内存超分(Overcommit)。

(2)支持半虚拟化I/O(virtio)。

(3)支持热插拔(CPU、块设备、网络设备等)。

(4)支持对称多处理(SMP,SymmetricMulti-Processing)。

(5)支持实时迁移(LiveMigration)。

(6)支持PCI 设备直接分配和单根I/O 虚拟化(SR-IOV)。

图2 KVM系统架构

(7)支持内核同页合并(KSM)。

(8)支持非一致存储访问结构(NUMA,Non-Uniform Memory Access)。

2 虚拟化性能对比测试

2.1 测试环境

测试环境说明,如表1所示。

表1 测试环境说明

2.2 CPU对比测试

使用sysbench 测试框架,运行寻找质数的程序,指定上限值,寻找该值范围内的质数。上限分别取10000和100000000。上限是10000时,对比单位时间内(1s)程序的执行次数。上限是100000000 时,对比程序的运行时间。测试结果,如图3、图4 所示。

通过测试结果可以看出,不论是单位时间内程序的运行次数还是限定上限时程序的运行时间,物理机和两个虚拟机的表现都不相上下。也就是说两种虚拟化对于单进程的程序在CPU性能方面与物理机几乎没有差别。

2.3 内存对比测试

RAMspeed 是一个用来测试计算机系统缓存和内存性能的开源的命令行工具。使用RAMspeed 分别对3类主机进行不同块大小的整型和浮点型内存读

图3 上限是10000的测试结果

图4 上限是100000000的测试结果

写测试,结果如图5~图8。

图5 整型写内存测试

图6 整型读内存测试

图7 浮点型写内存测试

图8 浮点型读内存测试

由图5~图8可知,在数据块小于64 KB时,VMware对于内存的读写速度要明显高于KVM 和物理机;当数据块大于64KB时,两种虚拟化和物理机的表现相差不大。所以对那些需要频繁读写内存里的小块数据的应用,VMware 可以提供更高的性能。

2.3 磁盘IO对比测试

使用fio进行测试,fio是一个非常灵活的I/O测试工具,用来对硬件进行压力测试和验证,它可以通过多线程或进程模拟各种I/O操作,支持13种不同的I/O引擎。本次测试分别对硬盘驱动器(HDD)和固态驱动器(SSD)做了压力测试,测试结果如图9~图12所示。

通过以上测试结果可以看出,两种虚拟化在HDD盘的随机读时会有10%的性能损耗,其他情况下,可以提供和物理机同样的性能。

2.4 网络对比测试

图9 HDD盘4KB随机读写测试结果(队列深度32)

图10 HDD盘512KB顺序读写测试结果(队列深度32)

图11 SSD盘4KB随机读写测试结果(队列深度32)

图12 SSD盘512KB顺序读写测试结果(队列深度32)

使用iperf 进行测试,iperf 是一个网络性能测试工具,用来测试最大传输控制协议(TCP)和用户数据报协议(UDP)带宽性能。iperf 支持传入多种参数,还支持UDP 特性,可以根据需要调整。同时,iperf 还可以测试带宽,延迟抖动和数据包丢失。3种类型主机分别作为客户端与服务器端,进行TCP 和UDP 带宽测试。其中,UDP 测试指定单线程带宽为1Gbps,用10个线程同时发送数据占满带宽[9-10]。测试结果如图13~图14所示。

图13 TCP测试结果

图14 UDP测试结果

通过以上测试结果可以看出,VMware虚拟机作为TCP 客户端时,能提供的带宽会比物理机和KVM 虚拟机少10%左右;而作为UDP 服务器端时,KVM虚拟机提供的总带宽都要比物理机低60%,VMware虚拟机比物理机低10%左右;作为UDP 客户端时,KVM虚拟机提供的总带宽要比物理机低20%左右。所以如果应用系统以UDP 业务为主,选择物理机或者VMware 虚拟机可以获得比KVM 虚拟机更高的带宽。

3 结束语

本文分别就CPU、内存、磁盘I/O,以及网络带宽对物理机、KVM虚拟机和VMware虚拟机进行了对比测试。通过测试发现,两种虚拟化和物理机在CPU 性能方面并没有很大差异;在内存方面,频繁读写内存里的小块数据时,VMware 的表现更加突出;在磁盘I/O方面,两种虚拟化在HDD的随机读写上表现稍差;在网络带宽方面,如果应用系统以UDP业务为主,KVM虚拟机提供的带宽相对较小。

本文每项测试都是针对单项指标的测试,应用系统的运行经常需要同时使用这几项指标,所以应用系统在选择运行载体时需要综合考虑这几项指标的影响,根据应用特点选择合适的运行载体。当然,为了保证应用系统的稳定性,建议在不影响性能的情况下,使用多种运行载体。

猜你喜欢

虚拟化内存程序
给Windows添加程序快速切换栏
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
基于OpenStack虚拟化网络管理平台的设计与实现
试论我国未决羁押程序的立法完善
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
服务器虚拟化的安全威胁及防范分析
内存搭配DDR4、DDR3L还是DDR3?
浅谈虚拟化工作原理