APP下载

联通沃云虚拟机扩展内存技术的方法研究

2018-05-03孟璞辉

信息通信技术 2018年1期
关键词:宿主机活跃时延

孟璞辉 高 丰

1中国联通云数据有限公司100084北京

2英特尔中国100013北京

1 研究背景

在云场景下,由于虚拟机的内存占用机制,其内存资源一旦分配,就会被虚拟机操作系统持续占用,即使该虚拟机大量内存资源空闲,被占用的宿主机内存资源也无法被其他虚拟机利用,造成资源池内存资源不足。

针对以上实际生产中的问题,传统的解决方法一般不外乎两种,一种是简单粗暴地增加服务器的内存配比,通过加大内存的方式解决内存不足的问题。第二种方法是通过swap的方式,将部分内存保存在硬盘上,缓解内存不足的压力。

其中方法一自然是简单有效,并且没有任何风险隐患。然而目前市面上DIM内存普遍价格为$10/GB,高昂的成本对于陷入红海的云计算从业者们更感到雪上加霜,难以接受。

而通过swap的方式解决内存问题则很不可靠。由于linux本身的内存优化机制,还有硬盘本身的性能所限,当应用直接访问swap内的资源时,往往会对应用造成极大的不利影响。

最新的Linux kernel都支持内存超分[1-3](Memory Overcommit),KVM还可以对相同类型的虚机利用KSM(Kernel Same-page Merging)合并完全一致的内存页表。但当部署密度较大时,随着活跃的内存页表增加,仍然容易出现swap,从而引起应用程序被强制中断或者运行异常。

在云场景中,虚机内部应用访问到swap资源,造成应用崩溃,进而影响到虚机的稳定性。当希望重新创建一个新的虚机接替原有的虚机时,本地内存资源仍然在被占用,而新虚机被迫在swap上创建内存,造成新虚机创建失败。这种负面的连锁效应对于整个云计算系统而言是灾难性的。

Optane[4-5]系列产品作为intel新推出的SSD产品线,采用了创新性的3D Xpoint存储介质,从基础材料上改变了传统NAND SSD的存储特性。其拥有更高的随机写性能,更低的访问延时和高达30 DWPD(Drive Write Per Day)的耐用性。

Intel Memory Drive Technology(IMDT)[6]是一种全新的扩展内存技术,利用Optane产品的优良特性以及高效的内存预取算法,可以将Optane系列SSD产品作为现有DRAM内存的扩充,从而为用户提供一种经济的大内存解决方案。而且这种内存扩展技术,对OS和应用/虚机而言是透明的,也就是不用修改OS内核、软件接口等。对于支持的平台,用户的软件堆栈将可以平滑迁移,提高解决方案上线的效率。

本项目就是针对其IMDT功能在云场景下的应用做出的验证性测试工作。本次实验中的Optane系列SSD产品通过PCIE 3.0接口与服务器相连,以扩展内存的形式为云服务器提供内存资源。

2 测试场景

在本次测试工作中,我们尝试通过采用Optane来扩展内存,解决内存不足问题。

首先在实验室搭建了联通沃云生产环境一致的测试环境,宿主机采用的是Dell R730服务器,其处理器为Intel的至强E5-2650 v4,双路12核,总计48线程。内存采用的是128GB DDR 4内存。硬盘为SATA SSD。BIOS启动配置修改UEFI:on。宿主机的操作系统为Centos7.1。虚拟机的操作系统是红帽7.3,QEMU为1.5.3版本。IMDT版本为8_2_1455_29。Optane型号为Intel_SSD_DC_P4800X 375GB。

2.1 对照组

在对照场景中,我们在没有Optane的情况下,模拟正常的云业务。根据实际业务场景,测试采用占比较多的通用计算型虚拟机,其规格为4核16GB。

由于128GB内存的限制,我们依照顺序在宿主机上启动了7台虚拟机,在全部虚拟机启动,并且占用了全部内存资源的时候,内存分配达到112GB,处理器占用28线程。此时内存分配已接近资源极限,在VM启动时利用linux自带工具free可观察到这一现象。

每台虚拟机内部通过stream[7-8]内存测试软件,通过CPU对数据块执行add(加法)、copy(复制)、scale(乘法)及triadd(前三种操作合一)操作,得到内存的IO带宽和延迟数据。通过设定参数,虚机的活跃内存为8GB,占比为50%,总活跃内存为56GB。

在测试过程中,7台虚机并不是同时启动,而是根据时序,逐台启动。这样我们可以获得宿主机在不同负载的情况下,内部虚拟机的内存性能曲线。

每个时序启动一台vm,每个时序内,启动的每台vm执行3次stream内存测试。

2.1.1 测试结果

带宽:单vm时平均带宽最大,可达到33GB/s(triad操作),随启动虚机数量增长逐步下降,7台虚机启动时,单vm平均带宽19GB/s(triad操作),全部7台vm总带宽达到133GB/s(triad操作),如图1所示。

图1 对照场景单虚机内存带宽图

时延:单vm时时延最低,为2.88ns(triad操作),随启动虚机数量增长逐步增长,7台虚机启动时,单vm平均时延5.586ns(triad操作),全部7台vm最大时延9.41ns(triad操作)。

2.1.2 结果分析

结果显示,当宿主机只有少量虚机活跃的情况下,每台虚机可以获得最优的内存性能。其单台虚机的内存带宽达到33GB/s(triadd操作),延迟为2.88ns(triadd操作)。而随活跃虚机的增加,宿主机上全部虚机的整体内存带宽仍在不断增加,但是对于单台虚机来说,其内存带宽已经受到影响而逐渐降低,而延迟也随之升高。在7台虚机全部启动,并活跃工作的时候,宿主机整体内存带宽为133GB/s(triadd操作),单虚机平均带宽为19GB/s(triadd操作),单虚机平均时延为5.586ns(triadd操作),最大时延为9.41ns(triadd操作)。此时,宿主机上活跃内存总量为56GB,分配值为112GB。

可以看到,即使是全部采用真实DRAM内存,宿主机的总内存带宽是存在一个比较明显且容易触及的极限。在全部虚机负载都较大的时候,各虚机共享宿主机的内存带宽,存在资源抢占,并且对于单个虚拟机,单个虚拟机内应用,内存性能存在较大的波动性(延迟从6.64ns到9.41ns)。

2.2 计算型虚机IMDT测试组

在标准测试场景中,我们增加了Optane作为扩展内存,模拟云业务。虚拟机的规格上,测试依然采用占比较多的通用计算型虚拟机,规格为4核16GB。

在通过Optane扩展内存时,我们按照其1:2的推荐比例使用。由于之前宿主机上是128GB的DIM内存,通过Optane获得了额外217GB实际可用的内存资源,此时在宿主机上已经可以看到内存资源扩展到了342GB。我们依照顺序在宿主机上启动了11台虚拟机,在虚拟机全部启动,并且占用了全部内存资源的时候,内存分配达到176GB,处理器占用44线程。此时处理器已接近资源极限。

每台虚拟机内部仍然通过stream内存测试软件,通过CPU对数据块执行add、copy、scale及triadd操作,得到内存带宽和延迟数据。通过设定参数,虚机的活跃内存为8GB,占比为50%,活跃内存达到88GB。由于stream软件的特性,在测试过程中,不论实际的活跃内存大小是多少,stream应用都会完全占用处理器线程的计算资源。因此在场景2中,虚拟机数量被处理能力限制在了11台的规模(44/48线程)。

相较于对照场景,通过采用Optane扩展内存,使得我们可以在同样的宿主机上多启动了4虚拟机,增幅60%。在实际生产中,考虑到应用往往不会完全占用计算资源,所以在实际生产中还有更大提升潜力。

在测试过程中,11台虚机根据时序逐台启动,以便获得宿主机在不同负载的情况下内部虚拟机的内存性能曲线,并方便与对照场景做对比。

每个时序启动一台vm,每个时序内,启动的每台vm执行10次stream内存测试。

2.2.1 测试结果

带宽:单vm时平均带宽最大,可达到33GB/s(triad操作),随启动虚机数量增长逐步下降,11台虚机启动时,单vm平均带宽13GB/s(triad操作),全部11台vm总带宽达到147GB/s(triad操作),如图2所示。

图2 标准测试单虚机内存带宽图

时延:单vm时时延最低,为2.94ns(triad操作),随启动虚机数量增长逐步增长,11台虚机启动时,单vm平均时延8.539ns(triad操作),全部7台vm最大时延16.26ns(triad操作),如图3所示。

2.2.2 结果分析

结果显示出与对照场景类似的趋势,即当宿主机只有少量虚机活跃的情况下,每台虚机可以获得最优的内存性能,而随启动的虚机增加,总体性能逼近宿主机极限,所有虚机则共享宿主机资源。

图3 标准测试单虚机最大内存时延图

标准测试场景中,其单台虚机的内存带宽最大带宽达到33GB/s(triadd操作),最低延迟为2.94ns(triadd操作),出现在第一时序内,此时只有1台虚拟机启动工作,负载最低。该结果可以认为等同于场景1的结果,其偏差完全在正常波动之内。这说明,Optane在内存调用的优化,使得系统可以优先使用真实DRAM内存,保证应用在真实DRAM内存充足的时候不会受到任何影响。

随活跃虚机的增加,整体趋势与场景1基本一致,即使分配内存值超过真实DRAM大小,测试结果仍然没有出现内存带宽的剧烈波动。在11台虚机全部启动,并活跃工作的时候,宿主机整体内存带宽为147GB/s(triadd操作),单虚机平均带宽为13GB/s(triadd操作),单虚机平均时延为8.539ns(triadd操作),最大时延为16.26ns(triadd操作)。此时,宿主机上活跃内存总量为88GB,分配值为176GB。此时虽然宿主机上分配给虚机的总内存大小已经超过了128GB,但活跃内存仍然小于真实DRAM大小,这反映出Optane针对内存的活跃度对内存资源进行了有效资源分类,并通过算法优化了内存地址的映射算法,保证应用性能。

2.3 计算型虚机内存大负载场景IMDT测试组

在大负载测试场景中,我们在标准测试场景的基础上,增加了虚机内应用的负载,将活跃内存率推高至80%。测试依然采用占比较多的通用计算型虚拟机,规格为4核16GB。大负载测试场景作为标准测试场景的扩展实验,虚机数量依然为11台,并且采取同时启动的方式,直接将应用负载推到预定值。此时宿主机上通过Optane获得了额外217GB实际可用的内存资源,宿主机上可以看到内存资源扩展到了342GB。同时处理器负载为44/48线程,内存为176G分配,143GB活跃内存。虚拟机中为4/4线程满负载,内存为13GB/16GB(活跃/总计)。此时活跃内存数也超过了真实DRAM内存的大小。一次性启动全部11台vm,执行2次stream内存测试。

2.3.1 测试结果

带宽:11台虚机在活跃内存达到80%时,单vm平均带宽15GB/s(triad操作),全部11台vm总带宽达到168GB/s(triad操作),如图4所示。

时延:11台虚机在活跃内存达到80%时,单vm平均时延达到12.63ns(triad操作),全部11台vm最大时延为24.66ns(triad操作),如图5所示。

2.3.2 结果分析

测试结果看到,其延迟有较大增长,平均时延达到12.63ns,最大时延达到24.66ns。较之前标准测试场景有较大增长。

最大24.66ns的结果,相较于测试中最优的2.88ns而言,劣化了接近10倍。虽然仍需结合具体应用,但是考虑到普遍的应用系统场景,其中网络、计算等其他因素造成的延迟,我们认为在内存上的100ns以内的延迟,仍属于可以接受的范围。

2.4 内存型虚机IMDT测试组

在大内存虚机测试场景中,我们仍然采用Optane扩展内存,实现342GB的内存容量,但是更改了虚拟机的规格。考虑到目前出现了大量高内存型虚机需求(计算内存比1:8),测试依然采用新的大内存型虚拟机,规格为2核16GB。

每台虚拟机内部仍然通过stream内存测试软件,通过CPU对数据块执行add、copy、scale及triadd操作,得到内存带宽和延迟数据。通过设定参数,虚机的活跃内存仍为8GB,占比保持为50%。

在虚机数量上,我们选择了18台作为本场景中虚拟机数量。此时宿主机上处理器分配资源达到32线程,分配内存值为288GB,活跃内存值为144GB。

在测试过程中,18台虚机根据时序,逐台启动。以便获得宿主机在不同负载的情况下,内部虚拟机的内存性能曲线,方便与对照场景、标准测试场景做对比。

每个时序启动一台vm,每个时序内,启动的每台vm执行1次stream内存测试。

图4 大负载场景单虚机内存带宽图

2.4.1 测试结果

带宽:单vm时带宽最大,可达到17GB/s(triad操作),随启动虚机数量增长逐步下降,18台虚机启动时,单vm平均带宽9GB/s(triad操作),全部18台vm总带宽达到169GB/s(triad操作)。如图6所示。

时延:单vm时时延最低,为5.72ns(triad操作),随启动虚机数量增长逐步增长,18台虚机启动时,单vm平均时延11.52ns(triad操作),全部18台vm最大时延22.57ns(triad操作),如图7所示。

图5 大负载场景下单虚机内存时延图

2.4.2 结果分析

测试结果显示单虚拟机时带宽最大,可达到17GB/s(triad操作),随启动虚机数量增长逐步下降,18台虚机启动时,单虚拟机平均带宽9GB/s(triad操作),全部18台虚拟机总带宽达到169GB/s(triad操作)。在时延方面,单虚拟机时时延最低,为5.72ns(triad操作),随启动虚机数量增长逐步增长,18台虚机启动时,单虚拟机平均时延11.52ns(triad操作),全部18台虚拟机最大时延22.57ns(triad操作)。

同大负载测试场景相比,活跃内存值相当,分配内存则接近扩充后的总内存极限,为全部场景中,对于宿主机压力最大的一种场景。通过Optane扩展内存,实现了18台大内存型虚机在50%活跃内存的场景下正常工作。其时延、带宽性能也与大负载测试场景类似,这一结果无疑是令人鼓舞的。

图6 大内存场景单虚机内存带宽图

图7 大内存场景单虚机内存时延图

2.5 计算型虚机Swap测试组

在该场景中,首先移除Optane ,配置swap扩展内存。然后启动7台vm,将宿主机上的内存占用至112GB。之后尝试启动vm8,使内存占用达到128GB的极限,尝试验证在使用swap的场景下,vm的IO状况和应用的健康情况。虚机的规格上采用了标准的4核16GB的配置。虚机内同样执行stream测试脚本。

2.5.1 测试结果

带宽:前7台虚机启动的时候,总带宽达到138GB/s,单台虚拟机带宽达到19GB/s。vm8启动的时候,各虚拟机状态出现不稳定,无法得出正常数据。如图8所示。

时延:7台虚机启动的时候,平均延迟6.125ns。vm8启动的时候,各虚拟机状态出现不稳定,无法得到稳定数据,记录最大延迟达到18.51ns,如图9所示。

2.5.2 结果分析

前7台vm稳定工作后,启动vm8后,全部虚机都出现不稳定状态。图10显示出虚机健康状况随测试变化情况。其中绿色代表虚机工作正常,浅绿色代表虚机进入不稳定状态,红色代表虚机内stream应用崩溃。可见在vm8在时序1启动并执行内存测试脚本后,仅有3台虚机仍正常工作,vm2程序崩溃,其余4台vm进入不稳定状态。之后更多虚机内应用崩溃,最终只有vm1仍保持正常。

实验显示,在采用swap方式扩展内存的时候,在内存活跃度达到50%的时候,就会造成应用因内存不足而崩溃。

Swap方式对照场景的测试结果,再次证明了在云计算业务下,如果只利用普通的memory commit技术,配合swap方式扩展内存的实际风险。在负载压力增加时,将造成整体系统高度不稳定,甚至虚机崩溃,不推荐在生产环境中商用。

3 理论分析

CPU访问内存的总带宽受限于CPU本身QPI总线和内存总线带宽的影响。NUMA架构下,内存分别直连各自的CPU核心。当CPU访问临近的内存数据时,可以获得较低的时延,而对于双路服务器而言,仍有50%的几率会访问到另一颗CPU所连接的内存,此时CPU对于内存的访问就需要经过CPU之间的UPI总线(Purley之前服务器为QPI总线),从而造成内存访问时延加大。而对于四路服务器,这一高时延访问的可能性增加至75%。因此,当启动运行的虚拟机数量足够多的时候,全部虚拟机的内存访问总带宽会逼近宿主机的物理极限,在各个测试场景下都可以看到这一现象。

图8 Swap场景下单虚机内存带宽图

图9 Swap 场景单虚机内存时延图

图10 Swap场景虚机健康图

对于宿主机来说,虚拟机的内存访问都要受到宿主机内存控制器的统一调度,而各个虚拟机对于宿主机而言是等价的,所以会出现不同的虚拟机所享有的内存访问带宽、时延上的差异,即各个虚机之间存在内存访问资源抢占的问题。这一点在测试中也体现得很明显。

IMDT在于其通过大量的测试数据结合机器学习算法,可以有效筛选真正的“热数据”,并将热数据保存至工作CPU/core直连的内存中。通过数据“冷热”分类,可以更高效地将数据分别存储到DRAM和Optane内。

IMDT同时协调CPU指令,将CPU对内存的同步操作部分优化至异步,减小内存读取时延对于CPU操作的影响。

最后IMDT通过自身的预取机制增加CPU访问内存的命中率,进一步减少数据访问时延。

IMDT的这些特性结合Optane P4800X自身在低IO队列下的高IO性能,使得我们可以用Optane SSD扩展DRAM器件,实现类似的内存IO性能。在使用IMDT的场景下,内存访问时延存在一定的增长,其增长在应用系统可接受的范围内,完全符合预期。

通过上述分析,可以看出并不是所有应用程序和应用场景都适合IMDT。IMDT适用于高并发,存在热点数据的场景。由于可以充分发挥系统预取的功能,IMDT的使用效果非常明显。同时,在部署中还建议DRAM和Optane容量比不超过1:8,从而避免过少DRAM造成存储热点数据不足的潜在问题。本文中的KVM虚拟化场景,不但满足了更大内存容量需求,也能保障吞吐和时延在合理的范围内。

4 结束语

本次测试项目中,我们成功地使用Optane为云服务场景中的宿主机扩展了内存,并且通过该服务器正常生成指定数量的虚拟机,提供可行的云服务。通过在云服务场景内引入Optane,并使用其内存扩展功能,解决了我们之前遇到的宿主机内存不足的问题。并且相较于其他解决方案,体现出IO性能、可用性、价格上的优势。表1总结了本次测试的环境及主要结果。

表1 测试场景及主要结果

通过本次测试工作,用数据验证了Optane在11/18台活跃虚拟机场景下的内存性能特征,而这一虚机数量并非IMDT技术的极限。根据实际应用的内存性能需求,并通过优化处理器及内存比例后,虚拟化比例完全可以进一步上升。

Swap测试场景的结果证明了该方式在云环境下的缺陷,而相较于真正的DRAM内存,Optane的价格也有优势。目前市场上Optane系列内存的价格在$4/GB,是DRAM内存价格(179$/16GB[9])的36%。在使用Optane扩展内存的时候,建议按照不超过1:2的比例配置,即1GB的DIM内存,辅以2GB的Optane。目前Optane系列产品规格为375G,即我们可以通过配置192GB的DIM内存,加上1块375GB的Optane卡,达到512GB内存的需求,其价格为传统的64%,单台服务器节约$2060。

新技术的涌现,总能为应用找到新的模式、场景和机遇。在本次测试和研究的开展过程中,英特尔又发布了最新一代的至强可扩展处理器,能使单台物理服务器更容易支持,整合更多数量的虚拟机(据英特尔的测试,它支持的虚拟机数量可比上一代产品提升20%),而且还可借助VMD(Volume Management Device)和VROC(Virtual RAID on Chip)技术,更为灵活地部署、更加便利地管理Optane,并有望更充分地释放其3D XPoint技术的性能潜力,而这或许也意味着虚拟机的内存扩展,将会迎来更大的弹性和更高的极限。

基于这样的考虑,我们准备在接下来的工作中,在配备至强可扩展处理器的服务器平台上,通过Optane做更多的应用层的验证,如验证在沃云平台虚拟化环境中,Optane作为Swap盘的性能特性研究、以及作为内存数据库应用的性能特性研究等。希望这些尝试,能将新的科技迅速转化为新的应用和收获。

[1]Redhat.Virtualization getting started guide[EB/OL].[2018-01-16].https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_getting_started_guide/index

[2]Redhat.Virtualization deployment and administration guide[EB/OL].[2018-01-16].https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_deployment_and_administration_guide/index

[3]Redhat.Virtualization tuning and optimization guide[EB/OL].[2018-01-16].https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/virtualization_tuning_and_optimization_guide/index

[4]Intel.Intel® Optane™ SSD DC P4800X Series Products[EB/OL].[2018-01-16].https://www.intel.com/content/www/us/en/products/memory-storage/solid-statedrives/data-center-ssds/optane-dc-p4800x-series.html

[5]Intel.Experience Transformative Technology[EB/OL].[2018-01-16].https://www.intel.com/content/www/us/en/architecture-and-technology/intel-optane-technology.html

[6]Inetl.Intel® Memory Drive Technology -- Enabling more affordable or bigger memory solutions for data centers[EB/OL].[2018-01-16].https://www.intel.com/content/www/us/en/software/intel-memory-drivetechnology.html

[7]LMbench-Tools for Performance Analysis[EB/OL].[2018-01-16].http://www.bitmover.com/lmbench/

[8]John D McCalpin.STREAM: Sustainable Memory Bandwidth in High Performance Computers[EB/OL].[2018-01-16].http://www.cs.virginia.edu/stream/

[9]成本测算参考价格[EB/OL].[2018-01-16].http://memory.it168.com/a2017/0321/3105/000003105503.shtml及https://memory.net/memory-prices/

猜你喜欢

宿主机活跃时延
5G承载网部署满足uRLLC业务时延要求的研究
嵌入式计算机软件测试关键技术研究
活跃在抗洪救灾一线的巾帼身影
基于GCC-nearest时延估计的室内声源定位
虚拟网络实验室在农村职校计算机网络技术教学中的应用研究
这些活跃在INS的时髦萌娃,你Follow了吗?
SDN网络中受时延和容量限制的多控制器均衡部署
简化的基于时延线性拟合的宽带测向算法
数据分析
数据分析