云计算环境中虚拟机内存自适应调节算法研究*

2017-01-18 08:15王德胜张伟哲鲁刚钊白恩慈
计算机与生活 2017年1期
关键词:负载量空闲内存

王德胜,张伟哲,郝 萌,鲁刚钊,白恩慈

哈尔滨工业大学 计算机科学与技术学院,哈尔滨 150001

云计算环境中虚拟机内存自适应调节算法研究*

王德胜,张伟哲+,郝 萌,鲁刚钊,白恩慈

哈尔滨工业大学 计算机科学与技术学院,哈尔滨 150001

WANG Desheng,ZHANG Weizhe,HAO Meng,et al.Research of adaptive virtual machine memory scheduling algorithm in cloud computing environment.Journal of Frontiers of Computer Science and Technology,2017, 11(1):70-79.

Xen虚拟机;swap空间;内存调度算法

1 引言

随着互联网时代的发展,云计算已经发展成大范围全局资源的池化、分配调度和管理监控,通过网络提供给用户动态易扩展且经常是虚拟化的资源,可以让用户体验超强的运算能力[1]。虚拟化技术的应用是将计算机的实体资源分开使用,重新呈现,虚拟机就是虚拟化应用的代表作。其中,Xen虚拟机凭着独特的虚拟化性能优势得到社会的广泛应用[2],主要应用于服务器应用整合、软件开发测试和集群运算等。

在学习工作过程中虚拟机的使用很多,用户实际使用时会发现,有的虚拟机会运行大量程序而使内存负载较大[3]。如果负载量大于事先设定的内存量,此时虚拟机会去使用swap而造成系统工作效率降低,而有的虚拟机运行进程较少,进而内存比较空闲。从全局的角度来看,内存有浪费现象,所有虚拟机的内存并没有得到很好的利用而使实际工作效率降低。在一台物理主机上运行多台虚拟机时,由于虚拟机在创建之初内存资源就已经是固定值了,当虚拟机由于运行进程太多而出现内存使用不足的情况时,可以设计合理的内存调度算法实现将其他虚拟机空闲内存分配到该虚拟机中,避免虚拟机使用swap空间。当所有虚拟机负载量高出总内存量,调节使各个虚拟机也能够分配到相应的内存,提高整体虚拟机运行时使用效率。这样不仅可以提高虚拟机的运行效率,还可以更加合理地利用整体物理资源。

显然,虚拟机内存静态分配不够合理,要实现动态的内存分配系统,需要考虑两个问题:一是正确使用内存调度的开发平台,本文研究的是Xen虚拟机,这个平台提供了气球驱动机制,能够稳定地完成内存调度任务;二是在多虚拟机运行时,各个虚拟机之间要有合理完善的内存调度策略。

本文从这两个问题进行讨论,重点关注内存调度算法的设计。目前已经有很多关于内存调度算法的研究,其中Zhang等人提出的虚拟机内存调度算法是本文研究和比对的对象[4]。该算法得出了一个当总内存能够满足总负载情况下的内存分配策略,但由于算法中没有考虑到swap空间的使用情况而使得调节过程变长,降低调节效率。同时该算法还忽略了总内存不能满足总负载的情况,这种情况下,调节结果会导致部分虚拟机内存调节越来越偏离合理值,且swap使用情况越来越大,也会导致部分虚拟机会因为分配内存太少而使得系统进程被杀死,出现死机情况。本文在Zhang的算法上,设计一个更加合理全面的内存调度算法,将swap使用情况作为算法计算的考虑因素之一,同时综合考虑总内存满足和不满足总负载两种情况。

本文探讨在Xen虚拟机中多虚拟机运行时的内存调度算法。第2章介绍多虚拟机内存调度系统的相关设计与实现;第3章介绍内存调度算法;第4章分析系统实验结果;最后,总结全文。

2 系统实现原理

下面主要介绍多虚拟机内存分配系统的相关技术和实现原理。

2.1 Xen虚拟机系统介绍

Xen Project包括Xen Hypervisor[5-9]。Xen Hyper-visor(即Xen的virtual machine monitor,VMM)位于操作系统和硬件环境之间,负责为上层运行的操纵系统内核提供虚拟化的硬件资源,为上层创建的虚拟机,也叫作域,提供相互隔离的物理资源环境。Hypervisor中并不包含任何与硬件对话的驱动,也没有与root或管理员对话的接口,因此通过赋予Domain0特权调用这些驱动来管理操作Hypervisor,这样就可以通过Domain0来调用Xen创建虚拟机(DomainU)的命令,从而创建其他虚拟机。另外Domain0中会载入xend进程,有管理DomainU的权限,提供DomainU的控制台访问权限,在创建虚拟机的过程中会直接与Domain0控制台对话并进行配置。

2.2 气球驱动机制

气球驱动机制这一概念最早是Carl在VMware ESX Server中提出并使用[10],后来沿用到Xen中,气球驱动机制提供了调节虚拟机内存的功能[11]。

在整个气球驱动过程中有充气(inflate)和放气(deflate)两个过程。图1所示为气球驱动原理。

Fig.1 Mechanism of Xen balloon driver图1 气球驱动机制原理

图1中给虚拟机VM1和VM2确定了初始内存,在运行过程中由于系统自调节或者Domain0控制Hypervisor进行内存调节,要将VM1的内存页面分配给VM2,首先Hypervisor向VM1发出获取内存页面的请求,通过后,运行在VM1中的气球驱动程序会进行充气操作,获取内存页面,将页面交付给Hypersivor;然后Hypervisor向VM2发出释放内存页的请求,通过之后,进行放气操作,将内存页面分给VM2,这样VM2就可以使用分配到的内存页面。Hypersivor获取页面时就已经做了处理,可以放心地释放给需要的虚拟机来使用。

2.3 XenStore

XenStore是在Domain之间的一种分等级的共享命名空间[12]。系统设计过程中将利用这一技术,对XenStore进行文件读写操作,在此过程中需要用到系统提供的接口函数,这样就可以在虚拟机使用过程中存储各个虚拟机的信息。在本文研究中会重点利用XenStore,其中/local/domain目录下就存储着每个domain的本地信息,也可以向该目录下读写数据,这样可以获取各个虚拟机在运行过程中的内存使用情况。

2.4 Libxenctrl

Libxenctrl是系统提供的C语言函数接口,该函数接口提供了很多功能,可以直接调用气球驱动完成虚拟机内存分配。列举几个有关的接口函数:xc_ interface_open()和xc_interface_close()分别是开启和关闭一个叫作xc_handle的句柄;xc_domain_set_maxmem()是设置虚拟机最大内存;xc_domain_set_pod_ target()是设置虚拟机目标内存。

2.5 proc文件系统

/proc[13]是非常特殊的虚拟化文件系统,它并不包含真正的文件,而是存储记录系统运行时的信息,比如系统内存信息、设备挂载信息、硬件配置等。因此,/proc可以被视为内核服务的控制和信息中心。其中/proc/meminfo文件是负责记录物理内存和swap空间使用信息的,像内存的空闲空间MemFree、总内存MemTotal、交换空间SwapFree和SwapTotal,以及被内核使用的buffer和cache等[14]。

2.6 Swap性能

Linux系统中的swap空间类似于Windows的虚拟机内存,当系统内存不足时,swap空间的功能是将磁盘虚拟成内存来使用,将内存中暂时不用的数据或命令移交到swap空间中,但是会有大量的I/O消耗,使系统性能有所降低。尽管swap空间可以作为虚拟的内存来使用,但是速度却远不及物理内存。本文论述目的之一就是让虚拟机分得足够的内存,从而避免使用swap空间造成不必要的消耗。

2.7 多虚拟机内存分配管理系统

系统架构如图2所示,系统分为服务器端、虚拟机端和网页端。主要的功能实现是在服务器端和虚拟机端,网页显示端只是将虚拟机的内存信息显示出来。

Fig.2 Automatic memory control system图2 内存分配管理系统

虚拟机端,主要负责从/proc/meminfo中收集内存和swap数据来说明虚拟机的内存状态,其中空闲内存=MemFree+Buffers+Cached。获取数据之后就可以将数据写入到Xenstore下的对应目录中,这样服务器端就可以从中获取数据。

服务器端,是整个系统的核心,里面包含着内存数据计算机构以及内存执行机构。前者是从Xen-Store下的对应目录中获取所有的虚拟机内存数据,根据设计的内存调节算法,根据虚拟机这一时刻的内存情况,计算出虚拟机下一时刻的目标内存。而后者就是为了调节所有虚拟机的内存,争取下一时刻到达算法计算出的目标内。

3 多虚拟机内存分配管理系统内存调度算法描述

现在已经有很多关于内存调度算法的研究[15-20],本文提出的多虚拟机内存调度算法思想来自Zhang等人提出的调度算法[4],但是经过推敲发现该算法的不足之处,进而做出修改得出更加合理完善的算法。表1为算法中的变量定义。

Table 1 Summary of key notations表1 变量定义

Zhang的算法如下:

式中变量A的原始意义是系统负载量的大小,然而没有考虑到swap信息是不合理的,因为内存不足使用swap的部分也是系统负载的一部分,也应当计算在A内。另外这个算法的思想不够全面,只能应用于系统总负载小于系统总内存的情况。

为了简化设计过程,沿用了式(1)中的一些变量,但是虚拟机的负载量重新定义为内存使用量与swap使用量之和。在虚拟机实际运行中,根据不同的内存使用情况可以分为两种情况:总内存量能够满足总负载量和总内存量不能满足总负载量。

3.1 总内存满足总负载

公式前半部分是固定的数据,也就是将所有内存按运行虚拟机数量进行均等分配;后半部分是关于每台虚拟机总负载量与平均负载量的差值的线性函数;参数τ是这个函数的关键。公式右边的所有数据,比如Ti,以采集到数据的时间为标准,以调节周期为时间单位,Ti是0时刻的数据。而公式左边的Nti是1时刻的数据,也就是说,左边的运算结果是虚拟机下一时刻的目标内存。

3.1.1 虚拟机可行域范围和τ的关系

在总内存满足总负载量的情况下,系统调节的目标是使得虚拟机分配得到的目标内存能够满足负载量,因此只需要满足:

当总内存量能够满足总负载量时,针对式(1),令Ai=Ti,其中Ti=Si+Ai,也就是将swap使用量算入虚拟机真正的进程负载量,如式(2):

也就是:

不等式中有τ和Ti未知量,是由Ti组成的变量。为了方便讨论,假设n=2,这样只需要满足:

τ在不等式中决定T1和T2的使用范围,通过图3可以观察到在不同τ下的虚拟机内存的可行解。

Fig.3 Relationship betweenτand memory图3 τ值和内存可行域的关系

横纵坐标分别为T1和T2。线段下方代表在该τ值下,两台虚拟机的内存只要保证这样的状态就不会使用swap空间。如果内存状态达到线段上方,此时虚拟机会使用swap空间而造成内存浪费现象。

τ<0的情况没有意义,会让最大目标内存小于0;τ>1的情况也是没有意义的,这会过度放大负载量与平均负载量的差值。当总负载量过高,而某台虚拟机负载量很低,会导致分配目标内存小于0,或者某台虚拟机负载量很高,会导致分配目标内存大于总负载,这些情形都是不合理的。因此参数τ∈[0,1]。

3.1.2 空闲内存的讨论

系统调节的目标是让虚拟机可用内存达到不使用swap空间,对于调节后的空闲内存进行如下讨论。

这里假设运行n台虚拟机,任意比较两个虚拟机调节之后的空闲内存大小。假设编号为a和b的两台虚拟机,借助空闲内存公式比较Fa和Fb,则有:

化简,可得:

由于τ∈[0,1],结果也正如上面讨论的那样,Fi∝-Ti。从空闲内存相减的结果中可以看到,如果虚拟机a正是负载量最大的虚拟机m,则结果如下:

因此从结果中可以看出,负载量最大的虚拟机在经过调节后,分得的空闲内存最小。

3.1.3 动态τ的使用

首先在可行域讨论中,只有τ=1时可以满足虚拟机在总内存范围内进行内存调节;其次当τ=1时,从调节结果上来看,是将所有的空闲内存平均分配到每个虚拟机中,这是一种盲目分配的行为,当系统能够正常工作时要尽可能减少调节内存的动作。

综合考虑这些,在调节过程中使用动态τ进行内存调节。

理论上系统调节的要求要使得每台虚拟机调节之后的空闲内存量大于0,这样调节的结果能够使虚拟机不使用swap空间。但在实际系统中,并不是当可用内存减少到0时才去使用swap空间,当可用内存少于某个值时,系统就会去使用swap。这里不对具体空闲内存降到什么程度才去使用swap做深究。假设虚拟机调用swap空间前的最小空闲内存为f,只需要保证一个值f′≥f,保证所有虚拟机调节目标内存中空闲内存不少于f′,要求满足Fi>f′。以此为条件,讨论参数τ。

系统调节之后虚拟机的空闲内存Fi=Nti-Ti,为了满足以上条件,则有:

分析公式结构易得当最大的负载Tm满足即可:

化简后,取临界条件,如式(4):

从上述内容得知,内存调节范围随着τ值增大而增大,负载量最大的虚拟机在最终分配的目标内存最大,并且空闲内存最小。在调节过程中,当内存申请最大的虚拟机仍然有不少于f′的空闲内存,按公式计算会有τ<0,此时强制使τ=0,即是将总内存均等分配到各个虚拟机,比较合理。等到最大负载量达到使空闲内存不大于f′时,τ值就可以根据公式计算得到,并进行调节。调节之后,负载量最大的虚拟机会调整到空闲内存为f′,而其他虚拟机可以分配到更多的空闲内存。当负载量最大的虚拟机经过调节后空闲内存不能达到f′,此时会使得τ=1,将可用内存进行均等分配。因此f′在调节过程中决定着内存调节的一些特殊情况的切换时刻。

3.2 总内存不满足总负载

对于总负载量高于总内存的情况,需要知道无论怎么分配系统都会去调用swap空间,因为系统无法超越实际资源的局限。

算法设计需要保证两点:一是保证每个虚拟机分配到最小内存,也就是在算法上设定分配目标内存最小值,以供系统进程运行;二是保证最小内存以外的内存都被使用,不能有空闲内存。

利用上面的算法处理总内存不能满足系统负载时,会出现负载量低的虚拟机显示系统进程被杀死而进入死机状态,因此要保证一个最小内存x运行系统程序。这个最小值跟上面的人工预留内存f相似,此处不需要它的具体数字,只需要保证在实际使用中确定一个参数x′>x。在实验操作中x′取150 MB。

算法的思路是,在获取虚拟机内存和swap空间使用信息之后,进过上述算法计算,如果出现分配目标内存不能达到x′的虚拟机,从所有虚拟机的总内存Ni中扣除x′内存信息,并且是当作已用内存来扣除。假设扣除之后的虚拟机内存为,即:

这使得Ti减少了x′,同时也改变了总内存N。假设所有虚拟机扣除之后的总内存为N′,则有:

然后将改变之后的数据带入式(2)中进行计算,得式(5):

这种情况下,虚拟机对内存可行域要求是全域可行的,因此要求τ=1。其实此时τ=1,导致的分配结果是所有虚拟机会使用相同大小的swap空间,从而使得负载量较小的虚拟机获得理论目标内存为负。为了解决这一问题,将目标内存为负的虚拟机内存置0,然后让所有为负的内存作为债务,利用τ=1的分配思想,让其他分配目标为正的虚拟机来还。还的思想是不断地平均分配债务给这些虚拟机,过程中会遇到“还不起”的虚拟机,则直接将其结果置为0,继续将债务平均分到剩余各个虚拟机中,直至还完。这样处理结束之后,会保证所有虚拟机的分配内存。最后Nti≥0分配内存再加上之前扣除的x′,即:

就可以保证所有虚拟机的目标内存:

在上述算法实现过程中,x′是最小目标内存衡量标准。在总内存不能满足总负载时,如果某台虚拟机不开启任何负载进程,内存调节系统为其分配不少于x′的内存,可能系统实际使用的内存比分配得到的目标内存要小而导致有空闲空间。不过在实验中发现,取x′为150 MB时,尽管有这种情况发生,造成的空闲空间也是非常少的,可以忽略不计。因此算法保证了系统在内存分配过程中内存都被使用,没有空闲内存,同时也保证了每个虚拟机的最小目标内存。

4 实验结果与分析

4.1 实验方案

实验主要测试多虚拟机内存调节算法相比较之前算法在功能和性能上的提升,创建10台虚拟机供实验测试。实验前给每台虚拟机设定相同初始内存和最大内存,在初始化虚拟机内存时将每台虚拟机都设置成统一值,方便实验数据对总内存的管理和计算。同时也要为每个虚拟机设置最大内存,这个可以根据实验预期的结果进行设定。在启动服务器端内存调节程序时,会输入总内存N和人工预留内存f′两个参数。

利用这些虚拟机,在功能方面设计了有效性测试实验,主要是模拟虚拟机实际使用过程中遇到的内存使用情况,设计的实验如下。

4.1.1 mono实验

mono测试就是根据输入参数[low,high],系统负载量从low开始进行申请,之后每隔相同时间等量递增负载量,直到负载量为high,之后负载量从high开始释放,每隔相同时间等量释放,直到负载量为low结束,其中low<high。

4.1.2 静态负载实验

静态负载测试是通过人工操作在不同的虚拟机上申请负载,从而模拟虚拟机使用过程中遇到的各种内存使用情况,整理内存调节过程中各个虚拟机内存的变化。该实验是与之前算法实验结果进行比对,观察新算法在功能上的提升,设计了几组比对情景。

另外,还设计性能检测实验测试系统运行时的性能,主要利用DaCapo测试集来比较两个算法的优劣性。

4.1.3 DaCapo实验

DaCapo测试集专门用于测试编程语言[21]、内存管理和系统结构,由一些开源的真实应用程序组成,运行时进行一些非正常的负载手段。DaCapo测试集开发至今,已经有了一些版本,本实验用的DaCapo测试集版本是9.12-bach。这个jar包中包含的测试程序,根据测试类型可分为内存测试型、磁盘测试型和CPU测试型。其中内存型测试程序有h2、tradebeans、tradesoap;磁盘型测试程序有eclipse、luindex;CPU型测试程序有avrora、fop、jython、lusearch、pmd、sunflow、tomcat和xalan。实验中将运行所有测试程序,所得测试结果是各个测试程序运行指定次数需要的时间,运行多次的目的是将同一项测试程序的结果取平均数,测得的结果更可靠,以时间消耗反应系统对应性能状态。

4.2 功能有效性测试

功能测试时首先设计mono测试来验证内存调度算法的功能有效性,然后用静态负载实验与之前算法实验进行比对。

4.2.1 mono测试

这个实验仅仅是为了验证本文算法的功能有效性。实验配置如表2所示。在Domain0上运行调节程序,在虚拟机上运行内存采集程序,在VM1中运行mono测试程序,并观察实验结果。本实验中令low= 50 MB,high=500 MB。

Table 2 Experiment configuration表2 实验配置

实验结果如图4所示,从VM1的内存变化曲线中可以看到,一开始mono增加内存负载时,VM1内存并没有变化,而是当空闲内存达到预留值时,才开始进行改变,此时从VM2中分得空闲内存,而VM2的内存也因此改变。从两台虚拟机的实验结果可以得出结论,模拟接近真实环境的动态负载量,内存调节系统对于内存的调节结果和预期一致,能够合理地为虚拟机动态分配内存。

Fig.4 Automatic memory curve of two VMs图4 虚拟机内存变化曲线

4.2.2 静态负载测试

这个实验是为了比对在不同内存使用情况下,新旧两种调节程序的调节情况。

情景1调节程序启动后,在一台虚拟机VM1中运行800 MB负载,实验配置如表3所示,图5是观察的VM1的数据。

Table 3 Experiment configuration表3 实验配置

Fig.5 Automatic memory curve of VM1图5 VM1数据变化曲线

情景2调节程序启动后,依次在10台虚拟机中运行1 GB负载程序实验配置如表4所示。在实验中以前的算法不能做出分配而导致实验失败,而图6是观察本文内存调度算法中每台虚拟机的内存数据变化曲线。

Table 4 Experiment configuration表4 实验配置

综合这两个实验,可以得出两个结论:(1)情景1的实验结果显示,负载程序启动后,在内存方面,新算法能够更快地调整到目标内存;在swap使用方面,新算法能够更短时间且更少地使用swap空间,这都说明了新算法提升了多虚拟机内存调节系统的调节效率。(2)情景2的实验更有说服力,旧算法不能对情景2进行处理,因为此时负载量已经超出总内存;而新算法仍然能够进行合理的内存分配。虽然看到最终每台虚拟机有几乎相近的swap使用量,那是因为总负载超出总内存的部分必须要swap空间来补给,并且这个swap使用量的结果也是非常合理的,说明新算法更加全面,不管总内存能否满足负载,系统都能合理稳定地为虚拟机分配内存。

Fig.6 Automatic memory curve of 10 VMs图6 10台虚拟机数据变化曲线

4.2.3 DaCapo测试

这个实验是为了检测新的调节算法是否能减少DaCapo的测试时间。

实验使用了5台虚拟机,每台初始内存为1 GB,实验配制如表5所示。为了检验内存调节系统对于物理主机性能提升的帮助,将对是否开启内存调节系统两种情况进行比较。至于负载量的选择,由于低负载状态并没有涉及太多内存调节过程,进行实验的话没有意义,实验中会选择让虚拟机处于高负载状态进行测试,因为该状态会有频繁调节过程。再分别测试在两种内存调度算法下的系统性能。

Table 5 Experiment configuration表5 实验配置

实验过程中,让虚拟机处于高负载的状态,分别测试虚拟机在两种内存调度算法下的内存调节情况。启动虚拟机后,运行服务器端和虚拟机端程序,在VM1虚拟机中运行1 GB负载程序,从调节程序中观察到虚拟机内存趋于稳定时,关闭调节程序,再开启调节程序,同时在该虚拟机中运行DaCapo测试集,测试所有程序,运行次数为10,并记录实验结果。

实验结果对比情况如图7所示,显示了DaCapo中的13个测试程序分别在新旧两种调节算法下的测试结果。从实验结果可以看到eclipse测试项的运行时间得到了明显的减少,这是disk类型的测试程序。还有tradesoap的运行时间也有微弱的减少,tradesoap是内存性的测试程序。整体看来,实验结果显示在虚拟机运行性能上得到了某些方面的提升。

Fig.7 Automatic memory of VM1图7 VM1数据变化

5 结束语

本文论述了多虚拟机内存分配系统的内存调度算法,相比较之前的算法,新的内存调度算法在功能上提高了内存调度策略的效率,并且完善了总内存不能满足总负载的情况;新的内存调度算法使得在多虚拟机运行环境下的虚拟机整体性能得到提升,在云计算高速发展的时代,这一研究很有应用前景和价值。

[1]Armbrust M,Fox A,Griffith R,et al.Above the clouds:a Berkeley view of cloud computing,UCB/EECS 28[R].University of California,Department of Electrical Engineering and Computer Sciences,Berkeley,2009.

[2]Gupta D,Cherkasova L,Gardner R,et al.Enforcing performance isolation across virtual machines in Xen[C]//LNCS 4290:Proceedings of the ACM/IFIP/USENIX 7th International Middleware Conference,Melbourne,Australia,Nov 27-Dec 1,2006.Berlin,Heidelberg:Springer,2006:342-362.

[3]Govil K,Teodosiu D,Huang Yongqiang,et al.Cellular disco: resource management using virtual clusters on shared-memory multiprocessors[J].ACM Transactions on Computer Systems,2000,18(3):229-262.

[4]Zhang Weizhe,Xie Hucheng,Hsu R.Automatic memory control of multiple virtual machines on a consolidated server[J]. IEEE Transactions on Cloud Computing,2015.

[5]Magenheimer D.Memory overcommit without the commitment[J].Extended Abstract at the Xen Summit Boston, 2008:1-3.

[6]Abels T,Dhawan P,Chandrasekaran B.An overview of Xen virtualization[J].Dell Power Solutions,2005,8:109-111.

[7]Barham C P,Dragovic B,Fraser K,et al.Xen and the art of virtualization[C]//Proceedings of the 19th ACM Symposium on Operating Systems Principles,Bolton Landing, USA,Oct 19-22,2003.New York:ACM,2003:164-177.

[8]Smith J,Nair R.Virtual machines:versatile platforms for systems and processes[M].San Francisco,USA:Morgan Kaufmann Publishers Inc,2005.

[9]Rosenblum M.VMware's virtual platform:a virtual machine monitor for commodity PCs[C]//Proceedings of the 11th Hotchips Conference,1999.

[10]Waldspurger C A.Memory resource management in VM-ware ESX server[J].ACM SIGOPS Operating Systems Review,2002,36(SI):181-194.

[11]Schopp J H,Fraser K,Silbermann M J.Resizing memory with balloons and hotplug[J].Proceedings of the Linux Symposium,2006,2:313-319.

[12]XEN.XenStore reference[EB/OL].(2013)[2015-10-31].http: //wiki.xen.org/wiki/XenStoreReference.

[13]Wilding M,Behman D.Self service Linux[M].Upper Saddle River,USA:Prentice Hall,2006.

[14]Jones S T,Arpaci-Dusseau A C,Arpaci-Dusseau R H.Geiger:monitoring the buffer cache in a virtual machine environment[J].ACM SIGOPS Operating Systems Review, 2006,40(5):14-24.

[15]Ma Bo.Dynamic memory management for virtual machines via memory hotplug[D].Wuhan:Huazhong University of Science and Technology,2012.

[16]Zhao Weiming,Wang Zhenlin,Luo Yingwei.Dynamic memory balancing for virtual machines[J].ACM SIGOPS Operating Systems Review,2009,43(3):37-47.

[17]Li Dawei,Zhao Fengyu.Memory scheduling strategy for virtual machine in private cloud platform[J].Journal of ComputerApplications,2014,34(9):2523-2526.

[18]Wang Zhigang,Wang Xiaolin,Jin Xinxin,et al.Mbalancer: predictive dynamic memory balancing for virtual machines [J].Journal of Software,2014,25(10):2206-2219.

[19]Wei Yong.Research and implementation of Xen virtual machine memory live migration techniques[D].Shenyang: Northeastern University,2012.

[20]Hu Yao,Xiao Ruliang,Jiang Jun,et al.Virtual machine memory of real-time monitoring and adjusting on-demand based on Xen virtual machine[J].Journal of Computer Applications,2013,33(1):254-257.

[21]The DaCapo benchmark suite[EB/OL].[2015-10-31].http:// www.dacapobench.org/.

附中文参考文献:

[15]马博.基于内存热插拔的虚拟机动态内存管理系统[D].武汉:华中科技大学,2012.

[17]李大为,赵逢禹.私有云平台的虚拟机内存调度策略[J].计算机应用,2014,34(9):2523-2526.

[18]王志钢,汪小林,靳辛欣,等.Mbalancer:虚拟机内存资源动态预测与调配[J].软件学报,2014,25(10):2206-2219.

[19]魏勇.Xen虚拟机内存实时迁移技术研究与实现[D].沈阳:东北大学,2012.

[20]胡耀,肖如良,姜军,等.基于Xen虚拟机的内存资源实时监控与按需调整[J].计算机应用,2013,33(1):254-257.

WANG Desheng was born in 1992.He is an M.S.candidate at Harbin Institute of Technology,and the student member of CCF.His research interests include virtualization techniques for cloud computing and machine learning,etc.

王德胜(1992—),男,安徽全椒人,哈尔滨工业大学计算机学院硕士研究生,CCF学生会员,主要研究领域为云计算环境中虚拟化技术,机器学习等。

ZHANG Weizhe was born in 1976.He received the Ph.D.degree from Harbin Institute of Technology in 2006. Now he is a professor and Ph.D.supervisor at Harbin Institute of Technology.His research interests include virtualization techniques,parallel and distributed system,etc.

张伟哲(1976—),男,黑龙江哈尔滨人,2006年于哈尔滨工业大学获得博士学位,现为哈尔滨工业大学教授、博士生导师,主要研究领域为虚拟化技术,并行与分布式系统等。

HAO Meng was born in 1991.He is a Ph.D.candidate at Harbin Institute of Technology,and the student member of CCF.His research interest is performance prediction of parallel applications.

郝萌(1991—),男,山东济宁人,哈尔滨工业大学计算机学院博士研究生,CCF学生会员,主要研究领域为并行程序性能预测技术。

LU Gangzhao was born in 1990.He received the M.S.degree from Harbin Institute of Technology in 2014.Now he is a Ph.D.candidate at Harbin Institute of Technology,and the student member of CCF.His research interests include performance analysis of scientific programs,analytical performance model and statistical performance model,etc.

鲁刚钊(1990—),男,河北唐山人,2014年于哈尔滨工业大学获得硕士学位,现为哈尔滨工业大学博士研究生,CCF学生会员,主要研究领域为科学计算程序的性能分析,分析性能模型和统计性能模型等。

BAI Enci was born in 1988.He received the M.S.degree in computational mathematics from Harbin Institute of Technology in 2013.His research interests include real time system and cloud computing,etc.

白恩慈(1988—),男,河北邯郸人,2013年于哈尔滨工业大学获得硕士学位,主要研究领域为实时系统,云计算等。

Research of Adaptive Virtual Machine Memory Scheduling Algorithm in Cloud Computing Environment*

WANG Desheng,ZHANG Weizhe+,HAO Meng,LU Gangzhao,BAI Enci
School of Computer Science and Technology,Harbin Institute of Technology,Harbin 150001,China
+Corresponding author:E-mail:wzzhang@hit.edu.cn

Resource of Xen virtual machines has been fixed when booted.However,some virtual machines have to use swap space because of the lack of memory while there is idle memory in other virtual machines,which reduces the usage efficiency of memory.There has been the design of memory scheduling algorithm among virtual machines in the previous research,but the scheduling algorithm is inefficient without the consideration of swap.On the foundation of the previous research,this paper puts forward a more reasonable scheduling algorithm that combines swap and the usage of memory to adjust the allocation of memory in virtual machines.The algorithm is also designed on the theory of the idle memory tax proposed by Carl.Firstly,the range of the adjustment will be settled based on the usage of memory and swap.Then the object memory will be calculated in the range.Compared with the previous algorithm,the improved algorithm has been proved to be more effective in experiments.

Xen virtual machine;swap space;memory scheduling algorithm

A

:TP391

10.3778/j.issn.1673-9418.1512055

*The National Natural Science Foundation of China under Grant Nos.61202457,61472108(国家自然科学基金);the National Basic Research Program of China under Grant No.2013CB329606(国家重点基础研究发展计划(973计划));the Specialized Research Fund for the Doctoral Program of Higher Education of China under Grant No.20132302110037(高等学校博士学科点专项科研基金(博导类)).

Received 2015-11,Accepted 2016-01.

CNKI网络优先出版:2016-01-07,http://www.cnki.net/kcms/detail/11.5602.TP.20160107.1540.002.html

摘 要:Xen虚拟机自身的资源在创建之初已经固定,往往会因某些虚拟机内存不足而使用swap,使得虚拟机工作性能降低,而有的虚拟机内存比较空闲,使得整体虚拟机内存使用效率不高。之前已经有研究对虚拟机使用过程中的内存调度算法进行设计,但是经过推敲发现,之前内存调度算法由于没有考虑swap空间使用情况而导致整体内存调度不够高效。在前人算法研究基础上,提出了一个更加完善合理的内存调度算法,结合swap和内存使用情况一起调节虚拟机内存。算法仍然延续了Carl提出的空闲内存税概念加以设计,首先根据虚拟机内存和swap使用情况确定该次调节周期的调节范围,之后根据各个虚拟机的内存和swap空间使用情况计算虚拟机目标内存。对前后两种算法分别设计实验进行测试,验证了新算法的高效性。

猜你喜欢
负载量空闲内存
“鸟”字谜
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
不同负载量对“翠冠”梨果实性状的影响
西湾村采风
彪悍的“宠”生,不需要解释
亩产1 360公斤是渭北地区红地球葡萄最佳负载量
不同负载量对春美桃产量和品质的影响
“岳帅”苹果负载量中等效果最好
WLAN和LTE交通规则