一种为虚拟机分配内存的方法和虚拟机技术

技术编号:24289605 阅读:23 留言:0更新日期:2020-05-26 20:01
本发明专利技术公开了一种为虚拟机分配内存的方法和虚拟机,其中,虚拟机包括N个非一致性内存架构NUMA节点。所述方法包括:首先,获取待分配给虚拟机的N个NUMA节点中各个NUMA节点的平均内存的大小;然后,获取待分配给N个NUMA节点中的n

A method of allocating memory for virtual machine and virtual machine

【技术实现步骤摘要】
一种为虚拟机分配内存的方法和虚拟机
本专利技术涉及计算机领域,尤其涉及一种为虚拟机分配内存的方法和虚拟机。
技术介绍
虚拟化技术作为云计算解决方案的基础,正随着云计算产品的不断扩张而得到更多的应用场景。虚拟机运行在宿主机上,虚拟机的随机存取存储器(randomaccessmemory,RAM)由宿主机的操作系统(operatingsystem,OS)和宿主机的虚拟机管理器(virtualmachinemanager,VMM)分配,也是宿主机的RAM的一部分。非一致性内存访问(Non-UniformMemoryAccess,NUMA)技术将内存资源和CPU资源分给不同的NUMA节点。在同一NUMA节点内,CPU访问本节点的内存称为访问本地内存,CPU访问其它节点的内存称为访问远端内存,且CPU访问本地内存速度快于访问远端内存的速度。随着技术发展,虚拟机也应用NUMA技术,采用NUMA架构将宿主机分配给虚拟机的内存资源和CPU资源划分到不同的NUMA节点。现有的虚拟机的NUMA节点的内存分配方法为将内存平均分配给虚拟机的各NUMA节点,因虚拟机的各个NUMA节点的内存大小相同且固定,当进程对NUMA节点的内存调用时,存在以下两种问题:当某个进程调用某NUMA节点的内存时,若实际需调用的内存大小远小于该NUMA节点的内存大小,导致内存资源的浪费,若实际需要调用的内存大小大于该NUMA节点的内存大小时,导致进程的本次调用失败。因此,现有技术中至少存在如下技术问题:不能灵活的为虚拟机分配内存,满足进程多样化的内存调用需求的技术问题。
技术实现思路
本专利技术实施例通过提供一种为虚拟机分配内存的方法及虚拟机,用于解决现有技术中不能灵活的为虚拟机分配内存,满足进程多样化的内存调用需求的技术问题。第一方面,本专利技术一实施例提供了一种为虚拟机分配内存的方法,其中,所述虚拟机包括N个非一致性内存架构NUMA节点,N为大于等于2的整数,具体包括以下步骤:获取待分配给所述虚拟机的所述N个NUMA节点中各个NUMA节点的平均内存的大小a,其中,所述平均内存的大小S是待配置给所述虚拟机的总内存的大小,p是所述虚拟机的宿主机的内存页大小的整数倍,K1是可分配份数;获取待分配给所述N个NUMA节点中的n1个NUMA节点的第一剩余内存的份数K2,其中,所述第一剩余内存的份数K2=K1%N,n1为大于等于1且小于等于K2的整数;在第二剩余内存的大小r为0时,基于所述平均内存的大小a和所述第一剩余内存的份数K2,为所述N个NMUA节点分配相应大小的内存,其中,所述第二剩余内存的大小r=S%p,所述N个NUMA节点中除所述n1个NUMA节点外的节点是n2个NUMA节点,n2是等于(N-n1)的整数。可选的,所述方法还包括:在所述第二剩余内存的大小r不为0时,基于所述平均内存的大小a、所述第一剩余内存的份数K2和所述第二剩余内存的大小r,为所述N个NMUA节点分配相应大小的内存。可选的,所述基于所述平均内存的大小a和所述第一剩余内存的份数K2,为所述N个NMUA节点分配相应大小的内存,包括:按照如下方式为所述n1个NUMA节点中的每个节点的分配相应大小的内存:确定待分配给所述n1个NUMA节点中的第i个NUMA节点的内存的大小为Si=k2i×p+a其中,k2i为待分配给所述第i个NUMA节点的第一剩余内存的份数,且k2i为大于等于1的整数;为所述第i个NUMA节点分配Si大小的内存;为所述n2个NUMA节点中的每个NUMA节点分配a大小的内存。可选的,所述基于所述平均内存的大小a、所述第一剩余内存的份数K2和所述第二剩余内存的大小r,为所述N个NMUA节点分配相应大小的内存,还包括:按照如下方式为所述n1个NUMA节点中的每个节点的分配相应大小的内存:确定待分配给所述n1个NUMA节点中的第j个NUMA节点的内存的大小为Sj=k2j×p+a,其中,k2j为待分配给所述第j个NUMA节点的第一剩余内存的份数,且k2j为大于等于1的整数;为所述第j个NUMA节点分配Sj大小的内存;为所述n2个NUMA节点中的第n2个NUMA节点分配(a+r)大小的内存。可选的,所述基于所述平均内存的大小a和所述第一剩余内存的份数K2,为所述N个NMUA节点分配相应大小的内存,还包括:为所述n2个NUMA节点中的除第n2个NUMA节点外的每个NUMA节点分配a大小的内存。可选的,所述基于所述平均内存的大小a、所述第一剩余内存的份数K2和所述第二剩余内存的大小r,为所述N个NMUA节点分配相应大小的内存,还包括:按照如下方式为所述n1个NUMA节点中除第n1个NUMA节点外的每个节点的分配相应大小的内存:确定待分配给所述n1个NUMA节点中除第n1个NUMA节点外的第j个NUMA节点的内存的大小为Sj=k2j×p+a,其中,k2j为待分配给所述第j个NUMA节点的第一剩余内存的份数,且k2j为大于等于1的整数,为所述第j个NUMA节点分配Sj大小的内存;为所述第n1个NUMA节点中的第n1个节点分配大小的内存是大于等于0的整数;为所述n2个NUMA节点中的每个NUMA节点分配a大小的内存。第二方面,本专利技术一实施例提供了一种虚拟机,其中,所述虚拟机包括N个非一致性内存架构NUMA节点,N为大于等于2的整数,包括:第一获取单元,用于获取待分配给所述虚拟机的所述N个NUMA节点中各个NUMA节点的平均内存的大小a,其中,所述平均内存的大小S是待配置给所述虚拟机的总内存的大小,p是所述虚拟机的宿主机的内存页大小的整数倍,K1是可分配份数;第二获取单元,用于获取待分配给所述N个NUMA节点中的n1个NUMA节点的第一剩余内存的份数K2,其中,所述第一剩余内存的份数K2=K1%N,n1为大于等于1且小于等于K2的整数;第一分配单元,获取在第二剩余内存的大小r为0时,基于所述平均内存的大小a和所述第一剩余内存的份数K2,为所述N个NMUA节点分配相应大小的内存,其中,所述第二剩余内存的大小r=S%p,所述N个NUMA节点中除所述n1个NUMA节点外的节点是n2个NUMA节点,n2是等于(N-n1)的整数。可选的,所述虚拟机还包括:第二分配单元,用于在所述第二剩余内存的大小r不为0时,基于所述平均内存的大小a、所述第一剩余内存的份数K2和所述第二剩余内存的大小r,为所述N个NMUA节点分配相应大小的内存。可选的,所述第一分配单元,包括:第一分配子单元,用于按照如下方式为所述n1个NUMA节点中的每个节点的分配相应大小的内存:确定待分配给所述n1个NUMA节点中的第i个NUMA节点的内存的大小为Si=k2i×p+a,其中,k2i为待分配给所述第i个NUMA节点的第一剩余内存的份数,且k2i为大于等于1的整数;为所述本文档来自技高网
...

【技术保护点】
1.一种为虚拟机分配内存的方法,其特征在于,虚拟机包括N个非一致性内存架构NUMA节点,其中,N为大于等于2的整数,所述方法包括:/n获取待分配给所述虚拟机的所述N个NUMA节点中各个NUMA节点的平均内存的大小a,其中,所述平均内存的大小

【技术特征摘要】
1.一种为虚拟机分配内存的方法,其特征在于,虚拟机包括N个非一致性内存架构NUMA节点,其中,N为大于等于2的整数,所述方法包括:
获取待分配给所述虚拟机的所述N个NUMA节点中各个NUMA节点的平均内存的大小a,其中,所述平均内存的大小S是待配置给所述虚拟机的总内存的大小,p是所述虚拟机的宿主机的内存页大小的整数倍,K1是可分配份数;
获取待分配给所述N个NUMA节点中的n1个NUMA节点的第一剩余内存的份数K2,其中,所述第一剩余内存的份数K2=K1%N,n1为大于等于1且小于等于K2的整数;
在第二剩余内存的大小r为0时,基于所述平均内存的大小a和所述第一剩余内存的份数K2,为所述N个NMUA节点分配相应大小的内存,其中,所述第二剩余内存的大小r=S%p,所述N个NUMA节点中除所述n1个NUMA节点外的节点是n2个NUMA节点,n2是等于(N-n1)的整数。


2.如权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第二剩余内存的大小r不为0时,基于所述平均内存的大小a、所述第一剩余内存的份数K2和所述第二剩余内存的大小r,为所述N个NMUA节点分配相应大小的内存。


3.如权利要求1所述的方法,其特征在于,所述基于所述平均内存的大小a和所述第一剩余内存的份数K2,为所述N个NMUA节点分配相应大小的内存,包括:
按照如下方式为所述n1个NUMA节点中的每个节点的分配相应大小的内存:
确定待分配给所述n1个NUMA节点中的第i个NUMA节点的内存的大小为Si=k2i×p+a其中,k2i为待分配给所述第i个NUMA节点的第一剩余内存的份数,且k2i为大于等于1的整数;
为所述第i个NUMA节点分配Si大小的内存;
为所述n2个NUMA节点中的每个NUMA节点分配a大小的内存。


4.如权利要求2所述的方法,其特征在于,所述基于所述平均内存的大小a、所述第一剩余内存的份数K2和所述第二剩余内存的大小r,为所述N个NMUA节点分配相应大小的内存,包括:
按照如下方式为所述n1个NUMA节点中的每个节点的分配相应大小的内存:
确定待分配给所述n1个NUMA节点中的第j个NUMA节点的内存的大小为Sj=k2j×p+a,其中,k2j为待分配给所述第j个NUMA节点的第一剩余内存的份数,且k2j为大于等于1的整数;
为所述第j个NUMA节点分配Sj大小的内存;
为所述n2个NUMA节点中的第n2个NUMA节点分配(a+r)大小的内存。


5.如权利要求4所述的方法,其特征在于,所述方法还包括:
为所述n2个NUMA节点中的除第n2个NUMA节点外的每个NUMA节点分配a大小的内存。


6.如权利要求2所述的方法,其特征在于,所述基于所述平均内存的大小a、所述第一剩余内存的份数K2和所述第二剩余内存的大小r,为所述N个NMUA节点分配相应大小的内存,还包括:
按照如下方式为所述n1个NUMA节点中除第n1个NUMA节点外的每个节点的分配相应大小的内存:
确定待分配给所述n1个NUMA节点中除第n1个NUMA节点外的第j个NUMA节点的内存的大小为Sj=k2j×p+a,其中,k2j为待分配给所述第j个NUMA节点的第一剩余内存的份数,且k2j为大于等于1的整数;
为所述第j个NUMA节点分配Sj大小的内存;
为所述第n1个NUMA节点中的第n1个节点分配大小的内存,是大于等于0的整数;
为所述n2个NUMA节点中的每个NUMA节点分配a大小的内存。


7.一种虚拟机,其特征在于,所述虚拟机包括N个非一致性内存架构NUMA节点,其中,N为大于等于2的整数,包括:
第一获取单元,用于获取待分配给所述虚拟机的所述N个NUMA节点中各个NUMA...

【专利技术属性】
技术研发人员:高建勇
申请(专利权)人:中移苏州软件技术有限公司中国移动通信集团有限公司
类型:发明
国别省市:江苏;32

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

1