为虚拟机分配内存的方法、存储介质、计算机程序架构与流程

文档序号:26749748发布日期:2021-09-25 02:06阅读:233来源:国知局

1.本发明涉及虚拟机的内存分配技术领域,尤其涉及一种为虚拟机分配内存的方法、存储介质、计算机程序架构。


背景技术:

2.在kvm(kernel

based virtual machine)虚拟化架构中,虚拟机在运行过程中所使用的内存是按需动态分配的,当虚拟机需要内存来运行程序时,就触发缺页异常从而向kvm申请内存。kvm系接收到内存申请才将宿主机的空闲内存分配给虚拟机使用。上述分配手段能够提高内存的使用率,防止某些虚拟机占用过多富余内存而其他虚拟机内存不足。这种分配手段由于虚拟机需要向kvm申请内存并等其分配之后才能使用内存运行程序,会影响虚拟机运行的流畅性,无法满足高性能要求的虚拟机。


技术实现要素:

3.本发明所要解决的技术问题是提供一种为虚拟机分配内存的方法、存储有实现上述方法的计算机程序的计算机可读存储介质以及能执行上述方法的计算机程序架构,该方法能在兼顾内存使用率的前提下满足虚拟机的高性能要求。
4.为了解决上述技术问题,本发明的一种为虚拟机分配内存的方法,在虚拟机运行过程中,若接收到虚拟机的内存申请,则将相应的空闲内存分配给虚拟机使用,本方法包括开机预占内存分配步骤:在虚拟机需开机时,为该虚拟机分配内存供其使用,开机预占内存分配步骤中,具体根据虚拟机将要运行的业务系统所需的预占内存需求量进行分配。
5.可选地,上述开机预占内存分配步骤中,从预先建立的数据库中查找得到所需的预占内存需求量。
6.可选地,所述的“从预先建立的数据库中查找得到所需的预占内存需求量”具体系“从预先建立的数据库中查找参照虚拟机,该参照虚拟机运行与需开机的虚拟机将要运行的业务系统同样的业务系统或者与需开机的虚拟机在可分配的最大cpu资源和最大内存量上的差异不超过预设程度,从数据库中找出上述参照虚拟机的预占内存需求量,作为需开机的虚拟机的预占内存需求量”。
7.可选地,上述开机预占内存分配步骤中,根据已运行了与需开机的虚拟机将要运行的业务系统同样的业务系统的虚拟机实际使用的内存量,或者根据与需开机的虚拟机在可分配的最大cpu资源和最大内存量上的差异不超过预设程度的虚拟机实际使用的内存量,推定需开机的虚拟机的预占内存需求量。
8.可选地,在虚拟机需开机之前,预先根据用户的输入调整所述预占内存需求量。
9.可选地,上述开机预占内存分配步骤中,还根据虚拟机启动过程所需的预占内存需求量进行分配。
10.一种计算机可读存储介质,其上存储有可执行的计算机程序,该计算机程序被执行时可实现如上所述的为虚拟机分配内存的方法。
11.一种实现虚拟化的计算机程序架构,该计算机程序架构执行如上所述的为虚拟机分配内存的方法。
12.可选地,所述的实现虚拟化的计算机程序架构是kvm。
13.该方法在虚拟机需开机时,根据该虚拟机将要运行的业务系统所需的预占内存需求量,为该虚拟机分配内存供其使用,在一定程度上满足了虚拟机的高性能要求。而在虚拟机启动运行之后,采用按需动态分配的方式,在一定程度上保证了内存使用率,防止某些虚拟机占用过多富余内存而其他虚拟机内存不足。
具体实施方式
14.以下结合具体实施方式对本发明创造作进一步详细说明。
15.实施例一计算机包括处理器和计算机可读存储介质,该计算机可读存储介质上存储有可执行的计算机程序。该计算机程序是kvm模块(一种实现虚拟化的计算机程序架构)的代码,处理器执行上述计算机程序从而实现kvm模块的功能。
16.上述kvm模块在计算机(下文称为宿主机)上创建了kvm虚拟机1、2、3,各台虚拟机1、2、3用于运行不同的业务系统。用户预先建立一个数据库,然后根据经验,人工评估分别运行业务系统a、b、c的多台参照虚拟机4、5、6对应所需的预占内存需求量x、y、z,该预占内存需求量x、y、z包含了参照虚拟机启动过程所需的预占内存需求量和将要运行的业务系统所需的预占内存需求量。上述参照虚拟机4、5、6可分配的最大cpu资源分别为8个核心、6个核心、6个核心,可分配的最大内存量分别为12g、8g、8g。用户把运行不同业务系统a、b、c的各台参照虚拟机4、5、6,分别对应所需的预占内存需求量x、y、z以及分别对应的可分配的最大cpu资源和最大内存量记录在数据库中。
17.在虚拟机1需开机时,假设该虚拟机1将要运行业务系统a,kvm模块就从预先建立的数据库中查找有无参照虚拟机运行同样的业务系统a,找到了参照虚拟机4,则从数据库中找出参照虚拟机4的预占内存需求量x=4g,据此推定需开机的虚拟机1的启动过程和将要运行的业务系统a总共所需的预占内存需求量为4g,kvm模块据此为需开机的虚拟机1分配4g内存供其使用。假设虚拟机1将要运行的业务系统d而不是业务系统a,kvm模块在数据库中找不到有参照虚拟机运行业务系统d,那么就从数据库中查找与需开机的虚拟机1在可分配的最大cpu资源和最大内存量上的差异最小的参照虚拟机。虚拟机1可分配的最大cpu资源为6个核心,最大内存量为8g,kvm模块从数据库中找到了参照虚拟机5,其可分配的最大cpu资源和最大内存量都与虚拟机1相同,参照虚拟机5与需开机的虚拟机1在可分配的最大cpu资源和最大内存量上不存在差异,即两者差异为0,不超过预设程度10%,则认为虚拟机1将要运行业务系统d所需的预占内存需求量和参照虚拟机5运行业务系统b所需的预占内存需求量相近,那么kvm模块就从数据库中找出参照虚拟机5的预占内存需求量y=5g,推定需开机的虚拟机1的启动过程和将要运行的业务系统d总共所需的预占内存需求量为5g。假设用户根据经验判断出虚拟机1的启动过程和将要运行的业务系统d总共所需的预占内存需求量不需要那么多,只要4g就足够了,那么用户预先在宿主机上输入预占内存需求量更改指令,那么在虚拟机需开机时,kvm模块接收到该指令后就将虚拟机1的预占内存需求量从5g更改为4g,然后据此为需开机的虚拟机1分配4g内存供其使用。
18.kvm模块根据得到的预占内存需求量为虚拟机1分配好内存之后,就可以启动虚拟机1了。虚拟机1先使用1g内存进行启动,虚拟机1启动运行之后,就使用剩余的3g来运行业务系统a(运行业务系统d同理)。假若虚拟机1运行过程中,已用完4g内存,若还需要使用多1g内存,则触发缺页异常从而向kvm模块发出内存申请。kvm模块接收到虚拟机1的内存申请之后,就再从其可分配的最大内存量8g中取出1g空闲内存分配给虚拟机1。
19.同理,在虚拟机2或虚拟机3需开机时,按照上述为虚拟机1分配内存的方式来为虚拟机2或虚拟机3分配内存。
20.实施例二计算机包括处理器和计算机可读存储介质,该计算机可读存储介质上存储有可执行的计算机程序。该计算机程序是kvm模块(一种实现虚拟化的计算机程序架构)的代码,处理器执行上述计算机程序从而实现kvm模块的功能。
21.上述kvm模块在计算机(下文称为宿主机)上创建了kvm虚拟机1、2、3,虚拟机1和虚拟机2已启动并分别运行了业务系统a和b。
22.在虚拟机3需开机时,假设虚拟机3将要运行业务系统a,kvm模块查询本宿主机上所运行的虚拟机1和2分别运行了什么业务系统,发现虚拟机1运行了业务系统a,与需开机的虚拟机3将要运行的业务系统是相同的,则采集虚拟机1当前运行业务系统a实际使用的内存量,假设虚拟机1实际使用的内存量为3.5g,那么就以虚拟机1实际使用的内存量来推定需开机的虚拟机3的预占内存需求量为3.5g。kvm模块就据此为虚拟机3分配3.5g内存供其使用。
23.假设虚拟机3将要运行业务系统c而不是业务系统a,kvm模块经过查询后发现当前尚未有已运行了业务系统c的虚拟机,那么就查询当前所运行的虚拟机1和2可分配的最大cpu资源和最大内存量分别为:8个核心和12g、6个核心和8g,已知虚拟机3可分配的最大cpu资源为5个核心,可分配的最大内存量为8g,那么虚拟机2与需开机的虚拟机3在可分配的最大cpu资源和最大内存量上的差异最小,该差异为{[(cpu2

cpu3)/cpu2+(内存量2

内存量3)/内存量2]/2}*100%={[(6

5)/6+(8

8)/8]/2}*100%=8%,不超过预设程度10%,则认为虚拟机3将要运行业务系统c所需的内存量和虚拟机2运行业务系统b所需的内存量相近,假设虚拟机2实际使用的内存量为3.5g,那么就推定需开机的虚拟机3的预占内存需求量为3.5g。kvm模块就据此为虚拟机3分配3.5g内存供其使用。
[0024]
kvm模块为虚拟机3分配好内存之后,就可以启动虚拟机3了。虚拟机3先使用1g内存进行启动,虚拟机3启动运行之后,就使用剩余的2.5g来运行业务系统a(运行业务系统c同理)。假若虚拟机3运行过程中,已用完3.5g内存,若还需要使用多1g内存,则触发缺页异常从而向kvm模块发出内存申请。kvm模块接收到虚拟机3的内存申请之后,就再从其可分配的最大内存量8g中取出1g空闲内存分配给虚拟机3。
[0025]
实施例三本实施例与实施例二大体上相同,下文仅描述本实施例与实施例二的不同之处,具体如下:建立一个共享盘,共享盘上存储有各个宿主机上所运行的各个虚拟机的信息,该信息包括虚拟机运行的业务系统、实际使用的内存量以及可分配的最大cpu资源和最大内存量。假设另一个宿主机上的虚拟机4运行了业务系统c,若需开机的虚拟机3将要运行业务
系统c,那么kvm模块从共享盘中查询到虚拟机4运行了与虚拟机3将要运行的业务系统同样的业务系统c,就从共享盘上获取虚拟机4实际使用的内存量,据此推定需开机的虚拟机3的预占内存需求量。
[0026]
如上所述仅为本发明创造的实施方式,不以此限定专利保护范围。本领域技术人员在本发明创造的基础上作出非实质性的变化或替换,仍落入专利保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1