一种虚拟机内存的动态调整系统的制作方法

文档序号:9375368阅读:164来源:国知局
一种虚拟机内存的动态调整系统的制作方法
【技术领域】
[0001]本发明属于计算机网络技术领域,具体涉及一种虚拟机内存的动态调整系统。
【背景技术】
[0002]虚拟化技术通常是指在单个主机上虚拟化出多个独立的虚拟机,每一台虚拟机((Virtual Machine)为具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统。由于虚拟化技术可极大提高资源利用率,还具有方便管理和升级系统资源的优点,以及能够提供相互隔离、安全、高效的应用执行环境,目前已广泛应用于各个技术领域。
[0003]但是,现有技术中,在主机上创建虚拟机时,需要在创建时为虚拟机分配固定内存,并且,各个虚拟机在运行时也占有该固定内存,该种固定内存分配方式具有以下不足:由于虚拟机在运行时对内存资源的需求是动态变化的,例如,在某一时刻,如果该虚拟机需要使用的内存资源小于初始分配的内存资源,则该种情况导致主机内存资源浪费,降低了主机可支持的虚拟机数量;在另一时刻,如果该虚拟机需要使用的内存资源大于初始分配的内存资源时,则将降低该虚拟机运行性能,甚至导致该虚拟机出现卡顿现象。

【发明内容】

[0004]针对现有技术存在的缺陷,本发明提供一种虚拟机内存的动态调整系统,在同一运行环境中,可动态实时调整多台服务器上所有虚拟机的内存分配情况,提高整个系统的资源利用率。
[0005]本发明采用的技术方案如下:
[0006]本发明提供一种虚拟机内存的动态调整系统,包括N台服务器和I个内存管理分配平台;每一台服务器均设置有网络通信接口 ;各台服务器通过各自的网络通信接口与所述内存管理分配平台通信;其中,N为自然数;
[0007]其中,每一台服务器上均构建有η个虚拟机和一个内存调节模块;其中,η为自然数;每一个所述虚拟机内部均创建一个内存采集模块;所述内存采集模块用于定时采集其所属虚拟机在当前时刻的内存实际使用值,并将所述内存实际使用值及对应的虚拟机标识通过虚拟串口传递给所述网络通信接口;
[0008]所述网络通信接口用于将本台服务器中各个虚拟机上传的内存实际使用值及对应的虚拟机标识通过网络传输给所述内存管理分配平台;
[0009]所述内存管理分配平台用于按照预设的内存管理策略判断是否需要对特定虚拟机的内存分配情况进行调整,如果需要,则计算出需要调整的数值,生成内存调整指令,并将所述内存调整指令发送给所述特定虚拟机所在的特定服务器;
[0010]所述特定服务器在接收到对所述特定虚拟机的内存调整指令后,通过所述内存调节模块调整对所述特定虚拟机的内存分配情况。
[0011]优选的,所述内存管理分配平台按照预设的内存管理策略判断是否需要对特定虚拟机的内存分配情况进行调整,具体为:
[0012]所述内存管理分配平台预先设定与特定虚拟机对应的初始参数值,包括:内存分配最大值mem_max ;内存最低变化值lowerLimit、内存最高变化值upperLimit ;
[0013]在T调整周期,设分配给特定虚拟机的内存值为mem_old ;
[0014]在T+1调整周期,设内存采集模块上报的特定虚拟机当前时刻的内存实际使用值为 mem_average ;
[0015]则:计算mem_old 与 mem_average 的差值 M:
[0016](I)如果M = O,则得出所述特定虚拟机的分配内存需要增加1werLimit的控制指令;
[0017](2)如果M > 0,则执行以下步骤:
[0018]如果M〈 = lowerLimit,则得出所述特定虚拟机的内存不需要进行调整的控制指令;
[0019]如果lowerLimit〈M〈 = upperLimit,则得出所述特定虚拟机的分配内存需要回收lowerLimit的控制指令;
[0020]如果M>upperLimit,则得出所述特定虚拟机的分配内存需要回收(lowerLimit+upperLimit) /2 的控制指令;
[0021](3)如果M < 0,则执行以下步骤:
[0022]如果|M|〈 = lowerLimit,则得出所述特定虚拟机的内存不需要进行调整的控制指令;
[0023]如果lowerLimit〈 |M|〈 = upperLimit,则得出所述特定虚拟机的分配内存需要增加lowerLimit的控制指令;
[0024]如果|M| >upperLimit,则得出所述特定虚拟机的分配内存需要增加(lowerLimit+upperLimit)/2 的控制指令。
[0025]优选的,所述内存采集模块上报的特定虚拟机当前时刻的内存实际使用值mem_average具体为:预设定采样次数number,所述内存实际使用值mem_average为所述内存采集模块连续number次采样得到的内存实际使用值的平均值。
[0026]优选的,所述虚拟机为基于QEMU之上的全虚拟化虚拟机。
[0027]本发明的有益效果如下:
[0028]本发明提供的虚拟机内存的动态调整系统,通过外部程序即内存管理分配平台统一管理各服务器上虚拟机的动态分配决策,然后由每台服务器上的执行程序即内存调节模块对虚拟机内存进行独立调整,在保证各服务器上虚拟机使用性能的前提下,实现资源利用的最大化;而对于服务器,通过及时释放虚拟机的空闲内存资源,能够提高服务器支持的虚拟机数量。
【附图说明】
[0029]图1为本发明提供的虚拟机内存的动态调整系统的结构示意图。
【具体实施方式】
[0030]以下结合附图对本发明进行详细说明:
[0031]本发明提供一种虚拟机内存的动态调整系统,需要强调的是,本发明涉及到的虚拟机为基于QEMU之上的全虚拟化虚拟机。QEMU是一套由Fabrice Bellard所编写的模拟处理器的自由软件,是基于GPL协议的开放源代码并且跨平台的虚拟机软件。其与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。经由kqemu这个开源的加速器,QEMU能模拟至接近真实电脑的速度。全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行。
[0032]如图1所示,虚拟机内存的动态调整系统包括N台服务器和I个内存管理分配平台;每一台服务器均设置有网络通信接口 ;各台服务器通过各自的网络通信接口与所述内存管理分配平台通信;例如,基于TCP协议进行信息交互;其中,N为自然数;
[0033]其中,每一台服务器上均构建有η个虚拟机和一个内存调节模块;其中,η为自然数;每一个所述虚拟机内部均创建一个内存采集模块,所述内存采集模块用于定时采集其所属虚拟机在当前时刻的内存实际使用值,并将所述内存实际使用值及对应的虚拟机标识通过虚拟串口传递给所述网络通信接口 ;其中,内存采集模块是基于特定虚拟机系统的程序,可以基于windows系统,也可以基于Iinux系统;内存采集模块运行在虚拟机内部,需要根据操作系统不同做适配。例如在windows虚拟机内,使用windows系统API函数GlobalMemoryStatusEx获取当前内存实际使用值;在Iinux虚拟机内,使用其他方式获取。
[0034]所述网络通信接口用于将本台服务器中各个虚拟机上传的内存实际使用值及对应的虚拟机标识通过网络传输给所述内存管理分配平台;
[0035]所述内存管理分配平台用于按照预设的内存管理策略判断是否需要对特定虚拟机的内存分配情况进行调整,如果需要,则计算出需要调整的数值,生成内存调整指令,并将所述内存调整指令发送给所述特定虚拟机所在的特定服务器;
[0036]所述特定服务器在接收到对所述特定虚拟机的内存调整指令后,通过所述内存调节模块调整对所述特定虚拟机的内存分配情况。
[0037]其中,内存管理分配平台按照预设的内存管理策略判断是否需要对特定虚拟机的内存分配情况进行调整,具体为:
[0038]所述内存管理分配平台预先设定与特定虚拟机对应的初始参数值,包括:内存分配最大值mem_max ;内存最低变化值lowerLimit、内存最高变化值upperLimit ;作为一种实现方式,可以设置lowerLimit和upperLimit为mem_max的一个分数值,例如,如果设置mem—max = 4G ;
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1