跨节点多虚拟机内存管理方法、系统、终端及介质技术方案

技术编号:37128166 阅读:13 留言:0更新日期:2023-04-06 21:26
本发明专利技术提供了一种跨节点多虚拟机内存管理方法及系统,通过位于集群中的全局远程内存管理模块整合集群中全部物理节点的空闲物理内存构建一个虚拟全局远程内存节点。集群中的虚拟机通过全局远程内存管理模块将远程内存分布在不同的物理节点上。本发明专利技术不严格区分计算节点和内存节点,能够充分利用集群中各个节点的内存资源;将集群中的各物理节点空闲内存聚合,对外呈现一个全局虚拟远程内存节点,虚拟机可通过虚拟远程内存节点将其内存资源分布至其它物理节点上,实现了虚拟机层级的远程内存管理,水平拓展了虚拟机的内存资源。通过虚拟全局远程内存节点,可以有效减少集群中虚拟机热迁移所需的数据量,降低虚拟机迁移时间。间。间。

【技术实现步骤摘要】
跨节点多虚拟机内存管理方法、系统、终端及介质


[0001]本专利技术涉及系统虚拟化和分布式系统架构
具体地,涉及一种基于虚拟全局远程内存的跨节点多虚拟机内存管理方法、系统、终端及介质。

技术介绍

[0002]近年来随着大数据分析和机器学习的流行,人们需要处理的数据呈现爆炸式增长趋势。为了提升处理效率,一个有效的做法是将所有数据载入内存进行处理,以减少缓慢的磁盘I/O对程序性能的影响。但是,随着摩尔定律逐渐失效,单机内存容量增速逐渐放缓,已经无法满足数据处理的需要。于是,远程内存技术被提出,通过分布式技术让单个节点使用其他节点的内存资源,突破单机内存资源瓶颈。
[0003]虽然当前一些远程内存技术已经在诸如易用性、可靠性、内存访问性能上进行了不少的优化,但距离实际应用仍有一段距离。当前最新的远程内存系统都是物理机层级的,当虚拟机内应用访问远程内存资源时,会带来如下几个问题:
[0004]1、虚拟机间内存竞争可能造成页颠簸。
[0005]2、容错性问题,内存节点崩溃时会影响所有虚拟机。
[0006]3、隔离性问题,虚拟机可能访问到别的虚拟机的远程内存区域。

技术实现思路

[0007]本专利技术针对现有技术中存在的上述不足,提供了一种基于虚拟全局远程内存的跨节点多虚拟机内存管理方法、系统、终端及介质。
[0008]本专利技术是通过以下技术方案实现的。
[0009]根据本专利技术的一个方面,提供了一种跨节点多虚拟机内存管理方法,包括:
[0010]通过运行于全局远程内存管理节点上的全局远程内存管理模块整合当前集群中各物理节点的空闲物理内存信息以及被集群中运行于其它物理节点上的虚拟机用作远程内存的物理内存信息,对外呈现一个虚拟全局远程内存节点;
[0011]通过运行于集群中每一个物理节点上的局部远程内存管理模块收集当前物理节点的空闲物理内存信息以及被运行于其它物理节点上的虚拟机用作远程内存的物理内存信息,并注册至运行于全局远程内存管理节点之上的全局远程内存管理模块;
[0012]当集群中的某个虚拟机因页表项不存在产生缺页错误时,所述局部远程内存管理模块首先尝试从其管理的空闲物理内存中分配物理内存页;若分配失败,所述局部远程内存管理模块从当前物理节点上选取若干所述虚拟机的不活跃页,构建内存页缓存请求并发送给所述全局远程内存管理模块;
[0013]当集群中的某个虚拟机因访问远程页而发生缺页错误时,所述局部远程内存管理模块首先选取若干所述虚拟机的不活跃页用以置换远程页,而后判断是否需要进行内存页预取,如需要,则输出新的内存页置换请求并发送给所述全局远程内存管理模块;若不需要,则将当前内存页置换请求直接发送给所述全局远程内存管理模块;
[0014]所述全局远程内存管理模块接收所述内存页缓存请求和所述内存页置换请求,并依据请求类型,将相应请求转发至选定的物理节点;
[0015]运行于目标物理节点上的局部内存管理模块接收到相应请求后,依据请求类型进行相应处理;若为所述内存页缓存请求,所述局部远程内存管理模块将内存页内容缓存至当前目标物理节点;若为所述内存页置换请求,则读取相应页内容并返回给请求物理节点,随后更新空闲物理内存信息与远程内存的物理内存信息并同步至所述全局远程内存管理模块。
[0016]可选地,所述当集群中的某个虚拟机因页表项不存在缺页错误时,所述局部远程内存管理模块首先尝试从其管理的空闲物理内存中分配物理内存页;若分配失败,所述局部远程内存管理模块从当前物理节点上选取若干所述虚拟机的不活跃页,构建内存页缓存请求并发送给所述全局远程内存管理模块,包括:
[0017]运行于集群中某物理节点上的虚拟机因页表项不存在发生缺页错误时,所在物理节点的局部远程内存管理模块首先尝试从管理的空闲物理内存分配内存页;
[0018]若分配成功,更新当前物理节点的空闲物理内存信息并同步至所述全局远程内存管理模块;
[0019]若当前节点空闲物理内存不足,即分配失败,则所述局部远程内存管理模块尝试从运行在当前物理节点上的其它虚拟机中回收空闲内存,并将所述空闲内存分配给请求虚拟机;
[0020]若回收失败,所述局部远程内存管理模块构建内存页缓存请求并发送给所述全局远程内存管理模块。
[0021]可选地,所述不活跃页选取方法,包括:
[0022]将若干个连续内存页组合为一个内存页组,构建一个双向链表用于维护所述内存页组的最近访问状态;其中,若所述内存页组中的某个内存页最近被访问过,则将所述内存页添加至所述双向链表头部;
[0023]从所述双向链表的尾部取出一个内存页组,扫描其中的内存页直至找到一个最近未被访问的内存页,并将相应的内存页组从所述双向链表的尾部删除,作为不活跃的内存页。
[0024]可选地,所述内存页预取方法,包括:
[0025]设预取窗口大小为M和预取页数目为N;
[0026]当获取到所述内存页置换请求时,与所述预取窗口中的前M个其它内存页置换请求进行比较,若所述预取窗口中的前M个内存地址与当前内存地址成等差数列,则除了原本请求的内存页外,还将额外取回N个内存页,否则只取回显式请求的内存页;
[0027]若上一次预取内存页命中,则表明预取方法有效,则动态减小预取窗口的大小,增加预取页的数目,当再次获取到所述内存页置换请求时,重新执行上一个步骤。
[0028]可选地,所述全局远程内存管理模块根据所述内存页缓存请求和所述内存页置换请求,并依据请求类型,将相应请求转发至选定的物理节点,包括:
[0029]所述全局远程内存管理模块接收到所述局部远程内存管理模块发来的所述内存页置换请求,则依据虚拟机ID和内存页地址查询当前虚拟机远程内存页所在物理节点,将所述内存页置换请求转发给所述物理节点;
[0030]所述全局远程内存管理模块接收到所述局部远程内存管理模块发来的所述内存页缓存请求,则依据请求中所记录的各物理节点空闲物理内存数目以及虚拟机用作远程内存在各物理节点上的分布情况,选择当前最优的内存页缓存节点,将虚拟机的内存页缓存请求转发至目标物理节点上的局部远程内存管理模块。
[0031]可选地,所述选择当前最优的内存页缓存节点,包括:
[0032]依据虚拟机ID查询所述虚拟机远程内存所在的全部物理节点,并对于每一个物理节点,计算所述虚拟机远程内存在该物理节点所有远程内存中的占比,若超过指定阈值,则将该物理节点选定为候选节点;该阶段所有的候选节点组成第一阶段候选节点集合;
[0033]对于所述第一阶段候选节点集合中的所有候选节点,比较其当前空闲物理内存容量与内存页置换请求的内存页数目,去除无法满足要求的候选节点,得到第二阶段候选节点集合;
[0034]对于所述第二阶段候选节点集合中的所有候选节点,选择与发起内存页缓存请求的虚拟机所在物理节点网络连接时延最短的物理节点作为最终目标物理节点,并将所述内存页缓存请求转发给所述目标物理节点。...

【技术保护点】

【技术特征摘要】
1.一种跨节点多虚拟机内存管理方法,其特征在于,包括:通过运行于全局远程内存管理节点上的全局远程内存管理模块整合当前集群中各物理节点的空闲物理内存信息以及被集群中运行于其它物理节点上的虚拟机用作远程内存的物理内存信息,对外呈现一个虚拟全局远程内存节点;通过运行于集群中每一个物理节点上的局部远程内存管理模块收集当前物理节点的空闲物理内存信息以及被运行于其它物理节点上的虚拟机用作远程内存的物理内存信息,并注册至运行于全局远程内存管理节点之上的全局远程内存管理模块;当集群中的某个虚拟机因页表项不存在产生缺页错误时,所述局部远程内存管理模块首先尝试从其管理的空闲物理内存中分配物理内存页;若分配失败,所述局部远程内存管理模块从当前物理节点上选取若干所述虚拟机的不活跃页,构建内存页缓存请求并发送给所述全局远程内存管理模块;当集群中的某个虚拟机因访问远程页而发生缺页错误时,所述局部远程内存管理模块首先选取若干所述虚拟机的不活跃页用以置换远程页,而后判断是否需要进行内存页预取,如需要,则输出新的内存页置换请求并发送给所述全局远程内存管理模块;若不需要,则将当前内存页置换请求直接发送给所述全局远程内存管理模块;所述全局远程内存管理模块接收所述内存页缓存请求和所述内存页置换请求,并依据请求类型,将相应请求转发至选定的物理节点;运行于目标物理节点上的局部内存管理模块接收到相应请求后,依据请求类型进行相应处理;若为所述内存页缓存请求,所述局部远程内存管理模块将内存页内容缓存至当前目标物理节点;若为所述内存页置换请求,则读取相应页内容并返回给请求物理节点,随后更新空闲物理内存信息与远程内存的物理内存信息并同步至所述全局远程内存管理模块。2.根据权利要求1所述的跨节点多虚拟机内存管理方法,其特征在于,所述当集群中的某个虚拟机因页表项不存在缺页错误时,所述局部远程内存管理模块首先尝试从其管理的空闲物理内存中分配物理内存页;若分配失败,所述局部远程内存管理模块从当前物理节点上选取若干所述虚拟机的不活跃页,构建内存页缓存请求并发送给所述全局远程内存管理模块,包括:运行于集群中某物理节点上的虚拟机因页表项不存在发生缺页错误时,所在物理节点的局部远程内存管理模块首先尝试从管理的空闲物理内存分配内存页;若分配成功,更新当前物理节点的空闲物理内存信息并同步至所述全局远程内存管理模块;若当前节点空闲物理内存不足,即分配失败,则所述局部远程内存管理模块尝试从运行在当前物理节点上的其它虚拟机中回收空闲内存,并将所述空闲内存分配给请求虚拟机;若回收失败,所述局部远程内存管理模块构建内存页缓存请求并发送给所述全局远程内存管理模块。3.根据权利要求1所述的跨节点多虚拟机内存管理方法,其特征在于,所述不活跃页选取方法,包括:将若干个连续内存页组合为一个内存页组,构建一个双向链表用于维护所述内存页组的最近访问状态;其中,若所述内存页组中的某个内存页最近被访问过,则将所述内存页添
加至所述双向链表头部;从所述双向链表的尾部取出一个内存页组,扫描其中的内存页直至找到一个最近未被访问的内存页,并将相应的内存页组从所述双向链表的尾部删除,作为不活跃的内存页;和/或所述内存页预取方法,包括:设预取窗口大小为M和预取页数目为N;当获取到所述内存页置换请求时,与所述预取窗口中的前M个其它内存页置换请求进行比较,若所述预取窗口中的前M个内存地址与当前内存地址成等差数列,则除了原本请求的内存页外,还将额外取回N个内存页,否则只取回显式请求的内存页;若上一次预取内存页命中,则表明预取方法有效,则动态减小预取窗口的大小,增加预取页的数目,当再次获取到所述内存页置换请求时,重新执行上一个步骤。4.根据权利要求1所述的跨节点多虚拟机内存管理方法,其特征在于,所述全局远程内存管理模块根据所述内存页缓存请求和所述内存页置换请求,并依据请求类型,将相应请求转发至选定的物理节点,包括:所述全局远程内存管理模块接收到所述局部远程内存管理模块发来的所述内存页置换请求,则依据虚拟机ID和内存页地址查询当前虚拟机远程内存页所在物理节点,将所述内存页置换请求转发给所述物理节点;所述全局远程内存管理模块接收到所述局部远程内存管理模块发来的所述内存页缓存请求,则依据请求中所记录的各物理节点空闲物理内存数目以及虚拟机用作远程内存在各物理节点上的分布情况,选择当前最优的内存页缓存节点,将虚拟机的内存页缓存请求转发至目标物理节点上的局部远程内存管理模块。5.根据权利要求4所述的跨节点多虚拟机内存管理方法,其特征在于,所述选择当前最优的内...

【专利技术属性】
技术研发人员:戚正伟余博识陈伟业贾兴国项羽心管海兵
申请(专利权)人:上海交通大学
类型:发明
国别省市:

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

1