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

技术编号:30170958 阅读:52 留言:0更新日期:2021-09-25 15:29
本发明专利技术公开了一种为虚拟机分配内存的方法、存储介质、计算机程序架构。该方法具体地:在虚拟机运行过程中,若接收到虚拟机的内存申请,则将相应的空闲内存分配给虚拟机使用,本方法包括开机预占内存分配步骤:在虚拟机需开机时,为该虚拟机分配内存供其使用,开机预占内存分配步骤中,具体根据虚拟机将要运行的业务系统所需的预占内存需求量进行分配。该方法在虚拟机需开机时,根据该虚拟机将要运行的业务系统所需的预占内存需求量,为该虚拟机分配内存,在一定程度上满足了虚拟机的高性能要求。而在虚拟机启动运行之后,采用按需动态分配的方式,在一定程度上保证了内存使用率,防止某些虚拟机占用过多富余内存而其他虚拟机内存不足。内存不足。

【技术实现步骤摘要】
为虚拟机分配内存的方法、存储介质、计算机程序架构


[0001]本专利技术涉及虚拟机的内存分配
,尤其涉及一种为虚拟机分配内存的方法、存储介质、计算机程序架构。

技术介绍

[0002]在KVM(Kernel

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

技术实现思路

[0003]本专利技术所要解决的技术问题是提供一种为虚拟机分配内存的方法、存储有实现上述方法的计算机程序的计算机可读存储介质以及能执行上述方法的计算机程序架构,该方法能在兼顾内存使用率的前提下满足虚拟机的高性能要求。
[0004]为了解决上述技术问题,本专利技术的一种为虚拟机分配内存的方法,在虚拟机运行过程中,若接收到虚拟机的内存申请,则将相应的空闲内存分配给虚拟机使用,本方法包括开机预占内存分配步骤:在虚拟机需开机时,为该虚拟机分配内存供其使用,开机预占内存分配步骤中,具体根据虚拟机将要运行的业务系统所需的预占内存需求量进行分配。
[0005]可选地,上述开机预占内存分配步骤中,从预先建立的数据库中查找得到所需的预占内存需求量。
[0006]可选地,所述的“从预先建立的数据库中查找得到所需的预占内存需求量”具体系“从预先建立的数据库中查找参照虚拟机,该参照虚拟机运行与需开机的虚拟机将要运行的业务系统同样的业务系统或者与需开机的虚拟机在可分配的最大CPU资源和最大内存量上的差异不超过预设程度,从数据库中找出上述参照虚拟机的预占内存需求量,作为需开机的虚拟机的预占内存需求量”。
[0007]可选地,上述开机预占内存分配步骤中,根据已运行了与需开机的虚拟机将要运行的业务系统同样的业务系统的虚拟机实际使用的内存量,或者根据与需开机的虚拟机在可分配的最大CPU资源和最大内存量上的差异不超过预设程度的虚拟机实际使用的内存量,推定需开机的虚拟机的预占内存需求量。
[0008]可选地,在虚拟机需开机之前,预先根据用户的输入调整所述预占内存需求量。
[0009]可选地,上述开机预占内存分配步骤中,还根据虚拟机启动过程所需的预占内存需求量进行分配。
[0010]一种计算机可读存储介质,其上存储有可执行的计算机程序,该计算机程序被执行时可实现如上所述的为虚拟机分配内存的方法。
[0011]一种实现虚拟化的计算机程序架构,该计算机程序架构执行如上所述的为虚拟机分配内存的方法。
[0012]可选地,所述的实现虚拟化的计算机程序架构是KVM。
[0013]该方法在虚拟机需开机时,根据该虚拟机将要运行的业务系统所需的预占内存需求量,为该虚拟机分配内存供其使用,在一定程度上满足了虚拟机的高性能要求。而在虚拟机启动运行之后,采用按需动态分配的方式,在一定程度上保证了内存使用率,防止某些虚拟机占用过多富余内存而其他虚拟机内存不足。
具体实施方式
[0014]以下结合具体实施方式对本专利技术创造作进一步详细说明。
[0015]实施例一计算机包括处理器和计算机可读存储介质,该计算机可读存储介质上存储有可执行的计算机程序。该计算机程序是KVM模块(一种实现虚拟化的计算机程序架构)的代码,处理器执行上述计算机程序从而实现KVM模块的功能。
[0016]上述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资源和最大内存量记录在数据库中。
[0017]在虚拟机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内存供其使用。
[0018]KVM模块根据得到的预占内存需求量为虚拟机1分配好内存之后,就可以启动虚拟机1了。虚拟机1先使用1G内存进行启动,虚拟机1启动运行之后,就使用剩余的3G来运行业务系统A(运行业务系统D同理)。假若虚拟机1运行过程中,已用完4G内存,若还需要使用多1G内存,则触发缺页异常从而向KVM模块发出内存申请。KVM模块接收到虚拟机1的内存申请之后,就再从其可分配的最大内存量8G中取出1G空闲内存分配给虚拟机1。
[0019]同理,在虚拟机2或虚拟机3需开机时,按照上述为虚拟机1分配内存的方式来为虚拟机2或虚拟机3分配内存。
[0020]实施例二计算机包括处理器和计算机可读存储介质,该计算机可读存储介质上存储有可执行的计算机程序。该计算机程序是KVM模块(一种实现虚拟化的计算机程序架构)的代码,处理器执行上本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种为虚拟机分配内存的方法,在虚拟机运行过程中,若接收到虚拟机的内存申请,则将相应的空闲内存分配给虚拟机使用,本方法包括开机预占内存分配步骤:在虚拟机需开机时,为该虚拟机分配内存供其使用,其特征是:开机预占内存分配步骤中,具体根据虚拟机将要运行的业务系统所需的预占内存需求量进行分配。2.如权利要求1所述的为虚拟机分配内存的方法,其特征是:上述开机预占内存分配步骤中,从预先建立的数据库中查找得到所需的预占内存需求量。3.如权利要求2所述的为虚拟机分配内存的方法,其特征是:所述的“从预先建立的数据库中查找得到所需的预占内存需求量”具体系“从预先建立的数据库中查找参照虚拟机,该参照虚拟机运行与需开机的虚拟机将要运行的业务系统同样的业务系统或者与需开机的虚拟机在可分配的最大CPU资源和最大内存量上的差异不超过预设程度,从数据库中找出上述参照虚拟机的预占内存需求量,作为需开机的虚拟机的预占内存需求量”。4.如权利要求1所述的为虚拟机分配内存的方法,其特征是:上述开机预占内存分配步...

【专利技术属性】
技术研发人员:黎兵邹理贤
申请(专利权)人:云宏信息科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1