一种请求远程内存的方法和装置与流程

文档序号:11829469阅读:228来源:国知局
一种请求远程内存的方法和装置与流程

本发明涉及计算机领域,尤其涉及一种请求远程内存的方法和装置。



背景技术:

大规模数据中心可以包括成千上万个服务器节点(以下简称节点),每个节点上可以运行各种各样的应用程序,每个应用程序在运行时对应一个进程。由于节点的硬件结构的限制,节点的物理内存的大小也是有限的(例如,节点的物理内存的大小可以为8G)。当某一节点上同时运行的进程数过多,且进程所需内存的大小大于节点的物理内存的大小时,会出现内存不足的问题。

为了解决内存不足的问题,现有技术中提出了一种请求远程内存的方法,系统架构如图1所示。节点1和节点2为数据中心的两个节点,每个节点包含:云控制器和物理内存,云控制器之间可以通过互连网络进行连接。假设节点1的物理内存几乎被全部占用,而节点2的物理内存中存在一部分空闲内存。当节点1上启动一个需要很大内存的新增进程时,节点1的操作系统先尝试为该新增进程分配本地物理内存(即节点1的物理内存),由于内存不足会出现分配失败,这时节点1的操作系统向节点1的云控制器请求远程内存(即数据中心的其他节点的物理内存)。节点1的云控制器与节点2的云控制器进行通信,并将节点2的物理内存中的空闲内存分配给该新增进程。

但是,现有技术的这种方法中存在的问题是:节点1的操作系统只有在尝试分配本地物理内存失败时,才向云控制器请求远程内存,而从节点1的操作系统向云控制器请求远程内存,到远程内存分配成功的过程中存在较大的时延,导致系统的响应时间较长,从而影响用户体验。



技术实现要素:

本发明的实施例提供一种请求远程内存的方法和装置,用以缩短系统的响应时间,提升用户体验。

为达到上述目的,本发明的实施例采用如下技术方案:

本发明实施例的第一方面,提供一种请求远程内存的方法,包括:

当节点上当前有启动新增进程时,若所述新增进程曾在所述节点上运行过,则获取所述新增进程的内存需求信息和所述节点上当前已启动进程的内存需求信息,所述新增进程的内存需求信息用于指示运行所述新增进程时,不同时刻所需内存的大小,所述已启动进程的内存需求信息用于指示运行所述已启动进程时,不同时刻所需内存的大小,所述节点上保存有所述新增进程的内存需求信息和所述已启动进程的内存需求信息;

根据所述新增进程的内存需求信息和已启动进程的内存需求信息,估算从当前时刻开始的预设时间内,同时运行所述新增进程和所述已启动进程时,每一时刻所需内存的大小;

若估算出的内存的大小的最大值大于所述节点的物理内存的大小,则向云管理器请求远程内存。

结合第一方面,在第一方面的第一种可能的实现方式中,所述方法还包括:

当所述节点上启动所述新增进程时,若所述新增进程未曾在所述节点上运行过,则实时记录所述新增进程的内存需求信息。

结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述若估算出的内存的大小的最大值大于所述节点的物理内存的大小,则向云管理器请求远程内存,包括:

若估算出的内存的大小的最大值大于所述节点的物理内存的大小,则向所述云管理器请求大小为所述估算出的内存的大小的最大值与所述节点的物理内存的大小之差的远程内存。

结合第一方面,在第一方面的第三种可能的实现方式中,所述方法还 包括:

获取所述新增进程对应的可执行文件的索引节点和所述新增进程对应的输入文件的索引节点;

根据所述新增进程对应的可执行文件的索引节点和所述新增进程对应的输入文件的索引节点,判断所述新增进程是否曾在所述节点上运行过。

结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述根据所述新增进程对应的可执行文件的索引节点和所述新增进程对应的输入文件的索引节点,判断所述新增进程是否曾在所述节点上运行过,包括:

查找所述节点上已保存的索引节点,若所述已保存的索引节点中包括所述新增进程对应的可执行文件的索引节点和所述新增进程对应的输入文件的索引节点,则所述新增进程曾在所述节点上运行过;若所述已保存的索引节点中不包括所述新增进程对应的可执行文件的索引节点和所述新增进程对应的输入文件的索引节点,则所述新增进程未曾在所述节点上运行过。

本发明实施例的第二方面,提供一种请求远程内存的装置,包括:

获取单元,用于当节点上当前有启动新增进程时,若所述新增进程曾在所述节点上运行过,则获取所述新增进程的内存需求信息和所述节点上当前已启动进程的内存需求信息,所述新增进程的内存需求信息用于指示运行所述新增进程时,不同时刻所需内存的大小,所述已启动进程的内存需求信息用于指示运行所述已启动进程时,不同时刻所需内存的大小,所述节点上保存有所述新增进程的内存需求信息和所述已启动进程的内存需求信息;

估算单元,用于根据所述获取单元获取的所述新增进程的内存需求信息和已启动进程的内存需求信息,估算从当前时刻开始的预设时间内,同时运行所述新增进程和所述已启动进程时,每一时刻所需内存的大小;

内存请求单元,用于若所述估算单元估算出的内存的大小的最大值大 于所述节点的物理内存的大小,则向云管理器请求远程内存。

结合第二方面,在第二方面的第一种可能的实现方式中,所述装置还包括:

记录单元,用于当所述节点上启动所述新增进程时,若所述新增进程未曾在所述节点上运行过,则实时记录所述新增进程的内存需求信息。

结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述内存请求单元,具体用于若所述估算单元估算出的内存的大小的最大值大于所述节点的物理内存的大小,则向所述云管理器请求大小为所述估算出的内存的大小的最大值与所述节点的物理内存的大小之差的远程内存。

结合第二方面,在第二方面的第三种可能的实现方式中,所述获取单元,还用于获取所述新增进程对应的可执行文件的索引节点和所述新增进程对应的输入文件的索引节点;

所述装置还包括:

判断单元,用于根据所述新增进程对应的可执行文件的索引节点和所述新增进程对应的输入文件的索引节点,判断所述新增进程是否曾在所述节点上运行过。

结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述判断单元,包括:

查找模块,用于查找所述节点上已保存的索引节点;

判定模块,用于若所述已保存的索引节点中包括所述新增进程对应的可执行文件的索引节点和所述新增进程对应的输入文件的索引节点,则判定所述新增进程曾在所述节点上运行过;若所述已保存的索引节点中不包括所述新增进程对应的可执行文件的索引节点和所述新增进程对应的输入文件的索引节点,则判定所述新增进程未曾在所述节点上运行过。

本发明实施例提供的请求远程内存的方法和装置,当节点上当前有启动新增进程时,若新增进程曾在节点上运行过,则获取新增进程的内存需求信息和节点上当前已启动进程的内存需求信息,新增进程的内存需求信 息用于指示运行新增进程时,不同时刻所需内存的大小,已启动进程的内存需求信息用于指示运行已启动进程时,不同时刻所需内存的大小,节点上保存有新增进程的内存需求信息和已启动进程的内存需求信息;根据新增进程的内存需求信息和已启动进程的内存需求信息,估算从当前时刻开始的预设时间内,同时运行新增进程和已启动进程时,每一时刻所需内存的大小;若估算出的内存的大小的最大值大于节点的物理内存的大小,则向云管理器请求远程内存。

由于当节点上启动新增进程时,就预先估算出从当前时刻开始的预设时间内,同时运行新增进程和已启动进程时,每一时刻所需内存的大小,当估算出的内存的大小的最大值大于节点的物理内存的大小时,就向云管理器请求远程内存,因此,本方案中是预先请求远程内存,当本地物理内存不能满足进程的需求时,可以直接使用预先请求的远程内存,可以缩短系统的响应时间,从而提升用户体验。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中的一种请求远程内存的方法的系统架构示意图;

图2为本发明实施例提供的一种请求远程内存的方法的流程图;

图3为本发明实施例中的运行进程时,不同时刻所需内存的大小的示意图;

图4为本发明实施例提供的另一种请求远程内存的方法的流程图;

图5为本发明实施例提供的一种请求远程内存的装置的组成示意图;

图6为本发明实施例提供的另一种请求远程内存的装置的组成示意图;

图7为本发明实施例提供的另一种请求远程内存的装置的组成示意 图;

图8为本发明实施例提供的另一种请求远程内存的装置的组成示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种请求远程内存的方法,如图2所示,该方法包括:

S101、当节点上当前有启动新增进程时,若新增进程曾在节点上运行过,则获取新增进程的内存需求信息和节点上当前已启动进程的内存需求信息。

其中,已启动进程是指在新增进程之前启动,且当前时刻仍在运行的进程,新增进程是指从当前时刻才开始启动并运行的进程。

已启动进程的内存需求信息用于指示运行已启动进程时,不同时刻所需内存的大小。已启动进程的内存需求信息可以预先在节点上保存。这里的已启动进程曾在节点上运行过。进程在运行时,可以每间隔第一预设时间,采集一次进程在当前时间点所需内存的大小。例如,第一预设时间为1秒(英文:second,缩写:s),若每间隔1s,采集一次进程所需内存的大小,则这里的“时刻”对应进程运行的第0s、第1s、第2s、第3s等;若每间隔1分钟(英文:minute,缩写:min),采集一次进程所需内存的大小,则这里的“时刻”对应进程运行的第0min、第1min、第2min、第3min等,本发明实施例对此不做限定。

示例性的,运行进程时,不同时刻所需内存的大小的示意图如图3所示,进程1在第0分钟(英文:minute,缩写:min)启动,进程1在第 0min、第1min(即进程1运行的第1min)、第2min(即进程1运行的第2min)、第3min(即进程1运行的第3min)、第4min(即进程1运行的第4min)所需内存的大小分别为:1.9G、4.5G、2.6G、3.2G、4.5G。进程2在第1min启动,进程2在第1min(即进程2的启动时刻)、第2min(即进程2运行的第1min)、第3min(即进程2运行的第2min)、第4min(即进程2运行的第3min)所需内存的大小分别为0.5G、4G、2G、2.8G。

新增进程的内存需求信息用于指示运行新增进程时,不同时刻所需内存的大小。若新增进程曾在节点上运行过,则该新增进程第一次在该节点上运行时,其内存需求信息被保存在该节点上,后续运行该新增进程时,可以获取节点上保存的该新增进程的内存需求信息。

示例性的,如图3所示,在第2min,节点上当前已启动进程为进程1和进程2,节点上启动的新增进程为进程3。假设进程3曾在节点上运行过,则可以获取节点上保存的进程3的内存需求信息,例如,进程3在启动时所需内存的大小为2.6G,进程3运行的第1min所需内存的大小为2.8G,进程3运行的第2min所需内存的大小为6.5G。

S102、根据新增进程的内存需求信息和已启动进程的内存需求信息,估算从当前时刻开始的预设时间内,同时运行新增进程和已启动进程时,每一时刻所需内存的大小。

示例性的,如图3所示,假设当前时刻为第2min,预设时间为2min,根据进程1的内存需求信息、进程2的内存需求信息和进程3的内存需求信息,可以估算出从第2min开始,在2min内,同时运行进程1、进程2和进程3时,第3min所需内存的大小为8G,第4min所需内存的大小为13.8G。

S103、若估算出的内存的大小的最大值大于节点的物理内存的大小,则向云管理器请求远程内存。

假设节点的物理内存的大小为10G,S103中估算出的内存的大小的最大值为13.8G,估算出的内存的大小的最大值大于节点的物理内存的大小,则会向云管理器请求远程内存。

向云管理器请求远程内存后,云管理器会向该新增进程分配远程内存。具体的分配远程内存的方法可以参考现有技术中的方法,本发明实施例这里不再赘述。

本发明实施例提供的请求远程内存的方法,当节点上当前有启动新增进程时,若新增进程曾在节点上运行过,则获取新增进程的内存需求信息和节点上当前已启动进程的内存需求信息,新增进程的内存需求信息用于指示运行新增进程时,不同时刻所需内存的大小,已启动进程的内存需求信息用于指示运行已启动进程时,不同时刻所需内存的大小,节点上保存有新增进程的内存需求信息和已启动进程的内存需求信息;根据新增进程的内存需求信息和已启动进程的内存需求信息,估算从当前时刻开始的预设时间内,同时运行新增进程和已启动进程时,每一时刻所需内存的大小;若估算出的内存的大小的最大值大于节点的物理内存的大小,则向云管理器请求远程内存。

由于当节点上启动新增进程时,就预先估算出从当前时刻开始的预设时间内,同时运行新增进程和已启动进程时,每一时刻所需内存的大小,当估算出的内存的大小的最大值大于节点的物理内存的大小时,就向云管理器请求远程内存,因此,本方案中是预先请求远程内存,当本地物理内存不能满足进程的需求时,可以直接使用预先请求的远程内存,可以缩短系统的响应时间,从而提升用户体验。

本发明实施例还提供一种请求远程内存的方法,如图4所示,该方法包括:

S201、判断节点上当前是否有启动新增进程。

若节点上当前有启动新增进程,则执行S202。

S202、获取节点上当前已启动进程的内存需求信息。

其中,已启动进程的内存需求信息用于指示运行已启动进程时,不同时刻所需内存的大小。已启动进程的内存需求信息可以预先在节点上保存。

S203、获取新增进程对应的可执行文件的索引节点和新增进程对应的 输入文件的索引节点。

其中,索引节点用于记录文件的信息,包括文件的长度、文件的创建及修改时间等。当系统中创建一个文件时,系统会自动为该文件分配一个索引节点。当系统启动新增进程时,每个新增进程对应唯一的可执行文件和输入文件。进程对应的可执行文件的索引节点(inode)和进程对应的输入文件的索引节点可以唯一标识一个进程。索引节点的具体描述可以参考现有技术中的相关描述,本发明实施例这里不再详细赘述。

S204、根据新增进程对应的可执行文件的索引节点和新增进程对应的输入文件的索引节点,判断新增进程是否曾在节点上运行过。

具体的判断方法可以为:查找节点上已保存的索引节点,若已保存的索引节点中包括新增进程对应的可执行文件的索引节点和新增进程对应的输入文件的索引节点,则新增进程曾在节点上运行过;若已保存的索引节点中不包括新增进程对应的可执行文件的索引节点和新增进程对应的输入文件的索引节点,则新增进程未曾在所述节点上运行过。

若新增进程未曾在节点上运行过,则执行S205-S206;若新增进程曾在节点上运行过,则执行S207-S208。

S205、实时记录新增进程对应的可执行文件的索引节点和新增进程对应的输入文件的索引节点。

S206、实时记录新增进程的内存需求信息。

其中,新增进程的内存需求信息用于指示运行新增进程时,不同时刻所需内存的大小。

S207、获取新增进程的内存需求信息。

S208、根据新增进程的内存需求信息和已启动进程的内存需求信息,估算从当前时刻开始的预设时间内,同时运行新增进程和已启动进程时,每一时刻所需内存的大小。

在S208之后,本实施中的请求远程内存的方法还包括:S209。

S209、判断估算出的内存的大小的最大值是否大于节点的物理内存的大小。

若估算出的内存的大小的最大值大于节点的物理内存的大小,则执行S210;若估算出的内存的大小的最大值小于等于节点的物理内存的大小,则返回执行S201。

S210、向云管理器请求大小为估算出的内存的大小的最大值与节点的物理内存的大小之差的远程内存。

示例性的,如图3所示,假设当前时刻为第2min,预设时间为2min,估算出的内存的大小的最大值为13.8G。估算出的内存的大小的最大值大于节点的物理内存的大小(10G),则向云管理器请求大小为3.8G(即13.8G-10G)的远程内存,这样,可以更精确的请求远程内存,减少远程内存的浪费。当然,若估算出的内存的大小的最大值大于节点的物理内存的大小,也可以向云管理器请求大小大于估算出的内存的大小的最大值与节点的物理内存的大小之差的远程内存,S210仅为一种优选的方案。

进一步的,由于进程在每次运行时的内存需求信息可能会发生变化,因此,还可以根据新增进程的运行结果,实时更新新增进程的内存需求信息,以保证节点上保存的内存需求信息是最新的内存需求信息。

S211、接收云管理器返回的申请结果。

具体的,云管理器可以通过与其他节点上的云管理器进行通信,获得其他节点上的空闲内存信息,并为该新增进程分配远程内存。具体的分配远程内存的方法可以参考现有技术中的方法,本发明实施例这里不再赘述。

需要说明的是,在S206和S211之后,继续返回执行S201。

本发明实施例提供的请求远程内存的方法,当节点上当前有启动新增进程时,若新增进程曾在节点上运行过,则获取新增进程的内存需求信息和节点上当前已启动进程的内存需求信息,新增进程的内存需求信息用于指示运行新增进程时,不同时刻所需内存的大小,已启动进程的内存需求信息用于指示运行已启动进程时,不同时刻所需内存的大小,节点上保存有新增进程的内存需求信息和已启动进程的内存需求信息;根据新增进程的内存需求信息和已启动进程的内存需求信息,估算从当前时刻开始的预设时间内,同时运行新增进程和已启动进程时,每一时刻所需内存的大小; 若估算出的内存的大小的最大值大于节点的物理内存的大小,则向云管理器请求远程内存。

由于当节点上启动新增进程时,就预先估算出从当前时刻开始的预设时间内,同时运行新增进程和已启动进程时,每一时刻所需内存的大小,当估算出的内存的大小的最大值大于节点的物理内存的大小时,就向云管理器请求远程内存,因此,本方案中是预先请求远程内存,当本地物理内存不能满足进程的需求时,可以直接使用预先请求的远程内存,可以缩短系统的响应时间,从而提升用户体验。

本发明实施例还提供一种请求远程内存的装置,如图5所示,该装置包括:获取单元31、估算单元32和内存请求单元33。

获取单元31,用于当节点上当前有启动新增进程时,若新增进程曾在节点上运行过,则获取新增进程的内存需求信息和节点上当前已启动进程的内存需求信息,新增进程的内存需求信息用于指示运行新增进程时,不同时刻所需内存的大小,已启动进程的内存需求信息用于指示运行已启动进程时,不同时刻所需内存的大小,节点上保存有新增进程的内存需求信息和已启动进程的内存需求信息。

估算单元32,用于根据获取单元31获取的新增进程的内存需求信息和已启动进程的内存需求信息,估算从当前时刻开始的预设时间内,同时运行新增进程和已启动进程时,每一时刻所需内存的大小。

内存请求单元33,用于若估算单元32估算出的内存的大小的最大值大于节点的物理内存的大小,则向云管理器请求远程内存。

进一步的,如图6所示,该装置还包括:记录单元34。

记录单元34,用于当节点上启动新增进程时,若新增进程未曾在节点上运行过,则实时记录新增进程的内存需求信息。

进一步的,内存请求单元33,具体用于若估算单元32估算出的内存的大小的最大值大于节点的物理内存的大小,则向云管理器请求大小为估算出的内存的大小的最大值与节点的物理内存的大小之差的远程内存。

进一步的,获取单元31,还用于获取新增进程对应的可执行文件的 索引节点和新增进程对应的输入文件的索引节点。

进一步的,如图7所示,该装置还包括:判断单元35。

判断单元35,用于根据新增进程对应的可执行文件的索引节点和新增进程对应的输入文件的索引节点,判断新增进程是否曾在节点上运行过。

进一步的,如图8所示,判断单元35,包括:查找模块351和判定模块352。

查找模块351,用于查找节点上已保存的索引节点。

判定模块352,用于若已保存的索引节点中包括新增进程对应的可执行文件的索引节点和新增进程对应的输入文件的索引节点,则判定新增进程曾在节点上运行过;若已保存的索引节点中不包括新增进程对应的可执行文件的索引节点和新增进程对应的输入文件的索引节点,则判定新增进程未曾在节点上运行过。

需要说明的是,本发明实施例提供的请求远程内存的装置中部分功能模块的具体描述可以参考方法实施例中的对应内容,本实施例这里不再详细赘述。

本发明实施例提供的请求远程内存的装置,由于当节点上启动新增进程时,就预先估算出从当前时刻开始的预设时间内,同时运行新增进程和已启动进程时,每一时刻所需内存的大小,当估算出的内存的大小的最大值大于节点的物理内存的大小时,就向云管理器请求远程内存,因此,本方案中是预先请求远程内存,当本地物理内存不能满足进程的需求时,可以直接使用预先请求的远程内存,可以缩短系统的响应时间,从而提升用户体验。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法 实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,缩写:ROM)、随机存取存储器(英文:Random Access Memory,缩写:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1