一种应用于多核处理器的内存调度方法及装置的制作方法

文档序号:6438745阅读:166来源:国知局
专利名称:一种应用于多核处理器的内存调度方法及装置的制作方法
技术领域
本发明涉及多核处理技术,尤其涉及一种应用于多核处理器的内存调度方法及装置。
背景技术
多核处理器的一种重要模式就是非对称异构系统,每个处理器核运行一套操作系统,每个操作系统管理自身的所有物理资源,内存作为最重要的物理资源之一在异构系统中的分配非常重要,目前的内存分配主要采用静态分配方式,如图1所示,通过将物理内存按照处理器核的数目进行划分,然后分配给不同处理器核上的操作系统进行管理,通常划分得到的内存块的数目与处理器核的数目相等,每个处理器核分配一个内存块。
由于采用静态分配方式分配内存,需要规划者对每个处理器核上所运行应用程序所需内存数量有比较准确的预估,从而避免分配内存过多造成的内存浪费,以及分配内存过少导致的应用功能扩展性降低。
但是,采用静态分配方式分配内存,具有以下缺点
1)不能做到严格的按需分配,更多的是凭借规划者的经验进行,分配的有效性存在不足;
2)静态分配方式往往针对当前的需求进行规划,一旦应用和业务模型发生变化后,原有规划就不能满足需求,需要重新规划调整,对系统稳定度影响较大。发明内容
本发明提供一种应用于多核处理器的内存调度方法及装置,用以有效利用物理内存并满足不同核的处理需求。
本发明提供一种应用于多核处理器的内存调度方法,包括
根据内存配置信息为每个处理器核分配初始化内存块,所述内存配置信息包括将物理内存划分得到的多个初始化内存块信息和多个弹性内存块信息;
针对每个处理器核,监测所述处理器核的内存剩余量,确定所述内存剩余量低于第一设定阈值时,将未分配的弹性内存块分配给所述处理器核;
对分配的弹性内存块的使用情况进行监控,在满足第一设定条件时,释放所分配的弹性内存块。
本发明还提供一种应用于多核处理器的内存调度装置,包括
初始分配单元,用于根据内存配置信息为每个处理器核分配初始化内存块,所述内存配置信息包括将物理内存划分得到的多个初始化内存块信息和多个弹性内存块信息;
弹性分配单元,用于针对每个处理器核,监测所述处理器核的内存剩余量,确定所述内存剩余量低于第一设定阈值时,将未分配的弹性内存块分配给所述处理器核;
第一释放单元,用于对分配的弹性内存块的使用情况进行监控,在满足第一设定条件时,释放所分配的弹性内存块。
利用本发明提供的应用于多核处理器的内存调度方法和装置,具有以下有益效果内存分配的动态性更好,能够满足应用变化带来的新增内存需求;有效提高内存整体利用率。


图1为现有采用静态规划方式分配内存的示意图2为本发明实施例提供的应用于多核处理器的内存调度方法流程图3为本发明实施例提供的应用于多核处理器的内存调度方法划分内存示意图4为本发明实施例中初始化内存块分配流程图5为本发明实施例中在处理器核运行过程内存调度流程图6为本发明实施例中从其他处理器核调配内存流程图7为本发明实施例中将调配内存归还给处理器核流程图8为本发明实施例提供的应用于多核处理器的内存调度装置结构图。
具体实施方式
下面结合附图和实施例对本发明提供的应用于多核处理器的内存调度方法和装置进行更详细地说明。
多核处理器在通信、网络、计算机等众多领域的应用逐渐普及,多核系统的内存资源规划和分配工作日益重要,如何使各处理器核获得满足应用需求的内存资源并提高物理内存的整理利用率是个比较重要的问题,本发明采用一种智能监测、弹性调配的机制来有效利用物理内存并满足不同核的处理需求。
本发明实施例提供的应用于多核处理器的内存调度方法,如图2所示,包括以下步骤
步骤201,根据内存配置信息为每个处理器核分配初始化内存块,所述内存配置信息包括将物理内存划分得到的多个初始化内存块信息和多个弹性内存块信息;
步骤202,针对每个处理器核,监测所述处理器核的内存剩余量,确定所述内存剩余量低于第一设定阈值时,将未分配的弹性内存块分配给所述处理器核,具体地,该第一设定阈值可以根据需要设定;
步骤203,对分配的弹性内存块的使用情况进行监控,在满足第一设定条件时,释放所分配的弹性内存块,具体地,第一设定条件可以根据需要设定,如弹性内存块超过一段时间未被使用等条件。
采用本发明实施例的应用于多核处理器的内存调度方法,通过规划弹性内存块, 在为每个处理器核分配初始内存块后,保证处理器核执行基本的运行,在处理器核的运行过程中,可以根据实际业务模式对内存的需要,动态进行内存调度,因此内存分配的动态性更好,能够满足应用变化带来的新增内存需求,有效提高内存整体利用率。
如图3所示,本实施例将整个物理内存分块后得到的内存块分为两类
1)初始化内存块,这部分内存块类似于静态内存分配方式中的内存块,可以通过粗略估计进行设置,也可以每个处理器核分配相同的内存尺寸;
2)弹性内存块,在调度精度要求不高的情况下可以采用同等大尺寸内存块来作为弹性内存块,在高调度精度要求下,弹性内存块由不同尺寸的内存块组成,可以满足不同的调度需求。
优选地,进行内存划分时,初始化内存块的数目不低于处理器核的数目,弹性内存块的数目不低于处理器核的数目,如图3所示,初始化内存块的数目、弹性内存块的数目均与处理器核的数目相等。
优选地,针对每个处理器核,确定其内存剩余量低于第一设定阈值,且弹性内存块均已被分配时,进一步包括
从为内存剩余量不低于第一设定阈值的处理器核所分配的初始化内存块中,释放部分初始化内存块分配给所述内存剩余量低于第一设定阈值的处理器核;
对分配的部分初始化内存块的使用情况进行监控,在满足第二设定条件时,将所述部分初始化内存块归还给释放所述部分初始化内存块的处理器核。
本发明实施例在弹性内存块都分配以后如果某些处理器核仍然需要添加内存,则可以根据监控结果从其它处理器核的富余初始化内存块中进行分割调配,除了监控分配的弹性内存块,还需要监控分配的部分初始内存块的使用情况,以及时释放不需要的部分初始化内存块,以免影响处理器核的运行。
本发明实施例对处理器核上内存分配进行监管,在多核处理器启动时,优先从初始化内存块开始分配,保证各个处理器核的基本运行,为了满足实际的需要,可以根据实际需求从弹性内存块中分配。优选地,本发明实施例预先通过配置文件记录为每个处理器核分配的初始化内存分配。
本发明实施例可以定时监测处理器核的内存剩余量,以及时满足内存需求量高的处理器核;本发明实施例可以定时确定是否需要释放已被分配的弹性内存块,以在弹性内存块不需要时及时进行释放,以给其他更需要内存的处理器核使用;本发明实施例可以定定时确定是否需要归还所分割的部分初始化内存块,以在分割的部分初始化内存块不需要时归还给原来的处理器核,从而实现内存的动态更新,上述各个定时可以是同时进行定时, 也可以是分别定时。
下面给出本发明提供的应用于多核处理器的内存调度方法的优选实施例,主要包括如下流程
1)分配初始化内存块
如图4所示,包括
步骤401,处理器核启动;
步骤402,处理器启动后,读取内存配置信息,为处理器核分配初始化内存块,所述内存配置信息包括将物理内存划分得到的多个初始化内存块信息和多个弹性内存块信息, 具体地,是将初始块化内存块0 N分配给处理器核0 N,具体如何分配,可以在各初始化内存块是根据各处理器核的业务模式划分的情况下,根据各个处理器的业务模式,分配与业务模式匹配的初始化内存块给相应的处理器核。当然,也可以在各初始化内存块相等的情况,按每个处理器核分配一个初始化内存块的原则任意分配。
步骤403,处理器核的操作系统根据分配的初始化内存块开始内存管理,每个处理器核运行一套操作系统,每个操作系统管理自身的所有物理资源,包括分配的初始化内存块。
2)在处理器核运行过程中监测各处理器核的使用情况,根据监测结果进行内存动态调度,针对每个处理器核,定时执行监测任务,如图5所示,执行如下步骤
步骤500,到达一定时间时,启动监测任务;
步骤501,读取当前处理器核的内存剩余量;
步骤502,判断内存剩余量是否低于门限1 ;若内存剩余量低于门限1,执行步骤 503,否则执行步骤503,;
步骤503,查询未分配弹性内存块信息;
步骤504,确定是否有未分配的弹性内存块,若有未分配的弹性内存块,执行步骤 505,若没有未分配的弹性内存块,则执行步骤505’ ;
步骤505’,执行初始化内存块调配;
执行初始化内存块调配时,首先确定有哪些处理器核的内存剩余量不低于门限1, 将这些处理器核作为目标核,本处理器核作为申请核,如图6所示,执行如下处理流程步骤601,向目标核发送调配内存请求,以指示目标核释放当前未使用且占用率低于门限3的部分初始化内存块;步骤602,目标核接收到调配内存请求后,计算自身初始化内存块的占用情况;步骤603,判断占用率是否低于一定门限,若是,执行执行步骤604,否则确定分配失败,执行步骤605 ;步骤604,将占用率低于门限3的部分初始化内存块释放掉;步骤605, 发送分配结果;步骤606,接收目标核发送的分配结果,将释放的部分初始化内存块分配给本处理器核。
可见,本发明实施例在弹性内存块不足的情况下,如果某些处理核仍然有紧迫的内存需求,可以从初始内存块剩余内存较多的核上进行调配。申请核在选择目标核的时候需要按照上述流程遍历系统中的其它处理核,直到找到能满足调配条件的目标核。
发生初始化内存块调配后,接受调配的部分初始化内存块的处理器核需要跟踪该内存的使用情况,如果内存使用出现回落,需要归还该部分初始化内存块,如图7所示,包括
步骤700,确定调配过来的部分初始化内存块当前未使用且占用率低于第一门限时,执行步骤701 ;步骤701,释放该部分初始化内存块,并向原来的目标核发送释放内存请求;步骤702,目标核接收到释放内存请求后,将释放的该部分初始化内存块添加到本地处理器核;步骤703,发送操作结果给原来的申请核;步骤704,申请核确定释放成功。
步骤505,申请弹性内存块;
步骤506,将未分配的弹性内存块添加到该处理器核中,本次监测任务结束,并返回执行步骤500 ;
步骤503’,若内存剩余量不低于门限1,则判断本处理器核是否存在分配的不再使用的弹性内存块,且将该弹性内存块释放后内存剩余量高于门限2,若存在,执行步骤 504,;
步骤504’,释放此类弹性内存块,当然,也可以依据内存块是否超过一定时间没有被使用的因素确定是否弹性内存块。
本发明实施例在监测流程中设置两个门限,门限1表示启动分配弹性内存块的当前内存剩余量,门限2表示可以释放弹性内存块的当前内存剩余量,门限2要高于门限1。通常情况下门限值的设定需要参考该处理器核的应用需求、历史高低值以及系统整体内存情况,通过仿真计算出一个合理的门限,以避免频繁的申请释放或者长时间占用不需要使用的内存。
本发明实施例的上述流程可以采用独立于处理器核之外的装置实现,即由该装置实现对处理核初始化内存块的分配,并对弹性内存块在各处理器核之间进行调度,该装置在多核之间进行内存调度时实现调度信息互斥访问,即该装置对所有处理器核的内存分配情况进行集中管理,在同一时刻,仅对一个处理器的内存使用进行修改,不会同时修改多个处理器核的内存使用情况。
本发明实施例中对每个处理器核上已经分配的弹性内存块的管理分配,也可以是将弹性内存块的申请、释放接口注册给处理器核的操作系统,由操作系统接口统一调用。
基于同一发明构思,本发明实施例中还提供了一种应用于多核处理器的内存调度装置,由于该装置解决问题的原理与一种应用于多核处理器的内存调度方法,因此这些设备的实施可以参见方法的实施,重复之处不再赘述。
一种应用于多核处理器的内存调度装置,如图8所示,包括
初始分配单元800,用于根据内存配置信息为每个处理器核分配初始化内存块,所述内存配置信息包括将物理内存划分得到的多个初始化内存块和多个弹性内存块;
弹性分配单元801,用于针对每个处理器核,监测所述处理器核的内存剩余量,确定所述内存剩余量低于第一设定阈值时,将未分配的弹性内存块分配给所述处理器核;
第一释放单元802,用于对分配的弹性内存块的使用情况进行监控,在满足第一设定条件时,释放所分配的弹性内存块。
本发明实施例提供的应用于多核处理器的内存调度装置,采用预留弹性内存块的方式满足多核处理器弹性内存调配的监测、分配、释放机制;内存初始分配更加简单有效, 降低初始评估难度;内存分配的动态性更好,能够满足应用变化带来的新增内存需求;有效提高内存整体利用率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种应用于多核处理器的内存调度方法,其特征在于,包括根据内存配置信息为每个处理器核分配初始化内存块,所述内存配置信息包括将物理内存划分得到的多个初始化内存块信息和多个弹性内存块信息;针对每个处理器核,监测所述处理器核的内存剩余量,确定所述内存剩余量低于第一设定阈值时,将未分配的弹性内存块分配给所述处理器核;对分配的弹性内存块的使用情况进行监控,在满足第一设定条件时,释放所分配的弹性内存块。
2.如权利要求1所述的方法,其特征在于,确定所述内存剩余量低于第一设定阈值,且弹性内存块均已被分配时,进一步包括从为内存剩余量不低于第一设定阈值的处理器核所分配的初始化内存块中,释放部分初始化内存块分配给所述内存剩余量低于第一设定阈值的处理器核;对分配的部分初始化内存块的使用情况进行监控,在满足第二设定条件时,将所述部分初始化内存块归还给释放所述部分初始化内存块的处理器核。
3.如权利要求2所述的方法,其特征在于,从为内存剩余量不低于第一设定阈值的处理器核所分配的初始化内存块中,释放部分初始化内存块分配给所述内存剩余量低于第一设定阈值的处理器核,具体包括向内存剩余量不低于第一设定阈值的处理器核发送调配内存请求,以指示处理器核释放当前未使用且占用率低于第三设定阈值的部分初始化内存块;接收释放部分初始化内存块的处理器核发送的分配结果,将释放的部分初始化内存块分配给所述内存剩余量低于第一设定阈值的处理器核。
4.如权利要求2所述的方法,其特征在于,在满足第二设定条件时,将所述部分初始化内存块归还给释放所述部分初始化内存块的处理器核,包括确定所述部分初始化内存块当前未使用且占用率低于第三设定阈值,将所述部分初始化内存块归还给释放所述部分初始化内存块的处理器核。
5.如权利要求2所述的方法,其特征在于,定时确定分配的部分初始化内存块的使用情况是否满足第二设定条件。
6.如权利要求1所述的方法,其特征在于,定时监测处理器核的内存剩余量,定时确定分配的弹性内存块的使用情况是否满足设定第一条件。
7.如权利要求1 6任一所述的方法,其特征在于,在满足设定第一条件时,释放所分配的弹性内存块,具体包括所分配的弹性内存块超过设定时长未被使用,释放所分配的弹性内存块;或分配给释放处理器核的弹性内存块未被使用,且释放未被使用的弹性内存块后,所述处理器核的剩余内存量高于设定第二阈值时,释放所分配的弹性内存块。
8.如权利要求7所述的方法,其特征在于,所述设定第一阈值小于设定第二阈值。
9.一种应用于多核处理器的内存调度装置,其特征在于,包括初始分配单元,用于根据内存配置信息为每个处理器核分配初始化内存块,所述内存配置信息包括将物理内存划分得到的多个初始化内存块信息和多个弹性内存块信息;弹性分配单元,用于针对每个处理器核,监测所述处理器核的内存剩余量,确定所述内存剩余量低于第一设定阈值时,将未分配的弹性内存块分配给所述处理器核;第一释放单元,用于对分配的弹性内存块的使用情况进行监控,在满足第一设定条件时,释放所分配的弹性内存块。
10.如权利要求9所述的装置,其特征在于,还包括分割单元,用于确定所述内存剩余量低于第一设定阈值,且弹性内存块均已被分配时, 从为内存剩余量不低于第一设定阈值的处理器核所分配的初始化内存块中,释放部分初始化内存块分配给所述内存剩余量低于第一设定阈值的处理器核;第二释放单元,用于对分配的部分初始化内存块的使用情况进行监控,在满足第二设定条件时,将所述部分初始化内存块归还给释放所述部分初始化内存块的处理器核。
11.如权利要求10所述的装置,其特征在于,所述分割单元,从为内存剩余量不低于第一设定阈值的处理器核所分配的初始化内存块中,释放部分初始化内存块分配给所述内存剩余量低于第一设定阈值的处理器核,具体包括向内存剩余量不低于第一设定阈值的处理器核发送调配内存请求,以指示处理器核释放当前未使用且占用率低于第三设定阈值的部分初始化内存块;接收释放部分初始化内存块的处理器核发送的分配结果,将释放的部分初始化内存块分配给所述内存剩余量低于第一设定阈值的处理器核。
12.如权利要求10所述的装置,其特征在于,第二释放单元,具体用于确定所述部分初始化内存块当前未使用且占用率低于第三设定阈值,将所述部分初始化内存块归还给释放所述部分初始化内存块的处理器核。
13.如权利要求9 12任一所述的装置,其特征在于,第一释放单元,具体用于在所分配的弹性内存块超过设定时长未被使用,释放所分配的弹性内存块;或分配给释放处理器核的弹性内存块未被使用,且释放未被使用的弹性内存块后,所述处理器核的剩余内存量高于设定第二阈值时,释放所分配的弹性内存块。
全文摘要
本发明公开了一种应用于多核处理器的内存调度方法及装置,该方法包括根据内存配置信息为每个处理器核分配初始化内存块,所述内存配置信息包括将物理内存划分得到的多个初始化内存块和多个弹性内存块信息;针对每个处理器核,监测所述处理器核的内存剩余量,确定所述内存剩余量低于第一设定阈值时,将未分配的弹性内存块分配给所述处理器核;对分配的弹性内存块的使用情况进行监控,在满足第一设定条件时,释放所分配的弹性内存块。本发明内存分配的动态性更好,能够满足应用变化带来的新增内存需求;有效提高内存整体利用率。
文档编号G06F9/50GK102508717SQ20111036685
公开日2012年6月20日 申请日期2011年11月17日 优先权日2011年11月17日
发明者刘博强, 笪禹, 董继炳, 陈剑 申请人:大唐移动通信设备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1