多核系统中内存核查的方法和系统的制作方法

文档序号:6614014阅读:307来源:国知局
专利名称:多核系统中内存核查的方法和系统的制作方法
技术领域
本发明涉及计算机应用领域,尤其涉及一种多核系统中内存核查的方法 和系统。 .
背景4支术
随着科技水平的日新月异,信息产业的迅猛发展,CPU技术在各行各业 得到广泛应用。内存是CPU技术应用的关键资源,随着工艺进步,其集成度 和容量成倍增加。内存的可靠性及有效性是CPU以及整个操作系统稳定运行
的保证,在内存出现异常的情况下,如不能及时地定位异常原因,往往会影 响业务的正常运行,甚至导致操作系统崩溃。因此,在实际应用中。需要有 效地对内存进行检查,发现内存中存在的异常,并根据异常的严重程度对异 常情况进行归类,然后有选择地对异常内存进行回收,以便重复利用内存资 源。
根据内存异常情况对系统的影响,内存异常的种类可分为致命异常、 严重异常和一般异常。
致命异常通常指内存地址空间的异常,比如访问非法的内存地址空间, 内存地址空间未初始化等。内存的致命异常往往会使整个操作系统崩溃,需 要采取CPU复位或整板复位等极端措施来进行补救。
严重异常通常指某一内存块的局部失效,或者关键域出错,比如内存块 管理结构中校验字域出错等。内存的严重异常不会影响整个操作系统,但会 使局部内存不可被使用,在这种情况下,需要对异常的内存块采用隔离的措 施,保证该异常的内存块不会危害整个操作系统的正常运作。 一般异常通常指某一内存块的非关键域出错,如逻辑类型错误等。发生 一般异常的内存可以安全地进行内存资源回收,重复使用。
现有的内存检查技术一般分为内存核查技术和内存资源回收技术两种, 内存核查技术主要用于定时检查内存中是否有内存泄露、内存操作越界等异 常情况,该技术采用的主要手段是判断内存块的各个管理域是否正确,判断
内存使用是否超时。内存资源回收技术主要是针对单个CPU,对单个CPU使 用的内存资源进行回收,以达到单CPU复位、挂起等目的。
现有技术中一种主从CPU架构的内存核查技术的实现方案的原理示意图 如图1所示,具体处理过程如下
该方案在进行内存核查时,CPU不能运行正常业务,并且,每个CPU (主CPU除夕卜)都只能检查自已的内存。
以主从CPU架构的多核系统为例,内存核查有两种方式 一是各从CPU 分别进行自己的内存核查,然后将内存异常信息上报给主CPU,主CPU对各 从CPU上报的内存异常信息进行集中处理;二是由主CPU执行全部CPU的内 存核查,并进行相应的异常处理。
如图1所示的多核系统中共有32个CPU,其中CPUO为主CPU,其它CPU 为从CPU。在某一时刻需要对内存进行检查,如果此时多核系统中业务量较 少,全部CPU都比较空闲,可以采用各从CPU独立进行内存核查,主CPU集 中处理异常的方式,即CPU1 CPU31分别进行内存核查,CPUO负责内存异 常的集中处理,这样会缩短内存核查时间,但会增大主CPU的负荷。如果此 时多核系统中业务繁忙,各从CPU需要继续保证业务运行,可采用主CPU进 行所有CPU的内存核查的方式,即CPU1 CPU31分别继续运行业务,CPUO
负责进行所有内存的核查,这样会大大增长内存核查时间,但却更加增大了
主CPU的负荷。
在实现本发明的过程中,发明人发现上述现有技术的方法的缺点为上述两种核查方式都会加重主CPU的负荷,不利于CPU间负荷均衡。当由主
CPU进行所有CPU的内存核查时,主CPU必须遍历整个内存空间,导致内存
核查的过程占用的时间较长,而且效率低,容易影响多核系统中业务的稳定 性。

发明内容
本发明实施例的目的是提供一种多核系统中内存核查的方法和系统,从
而可以解决现有内存核查方法会加重主CPU的负荷,不利于CPU间负荷均衡
的问题。
本发明实施例的目的是通过以下技术方案实现的 一种多核系统中内存核查的方法,包括
对多核系统中的中央处理器CPU的占用率进行比较,根据比较结果来选 择执行内存核查的CPU;
所述选择的执行内存核查的CPU对所述多核系统进行内存核查。 一种多核系统中内存核查的系统,包括
CPU选择模块,用于对多核系统中的中央处理器CPU的占用率进行比 较,根据比较结果来选择执行内存核查的CPU;
CPU,用于当被所述CPU选择模块选择为执行内存核查的CPU时,对所 述多核系统进4亍内存核查。
由上述本发明实施例提供的技术方案可以看出,本发明实施例通过根据 多核系统中的各个CPU的占用率的比较结果,来选择执行内存核查的CPU 。 从而可以减轻主CPU的负担,有利于多核系统各CPU间负载均衡,保持多核
系统的业务稳定运行。


图1为现有技术中一种主从CPU架构的内存核查技术的实现方案的原理示
意图2为本发明实施例 一提出的按照核查功能拆分多核内存任务的示意图; 图3为本发明实施例二提出的按照核查对象拆分多核内存任务的示意图; 图4为本发明实施例三提供的 一种多核系统的内存块的管理结构的示意
图5为本发明实施例三提供的对多核系统的内存进行全面的核查的处理流 程图6为本发明实施例四提供的对多核系统进行内存核查的系统的结构示意图。
具体实施例方式
在本发明实施例中,多核间内存是共享的,即任一CPU均可访问其它所 有CPU的内存空间。基于上述多核间内存共享,本发明实施例提出任一CPU 都可以执行内存核查任务,可以检查所有CPU的共享内存池,并能针对某一 特定CPU进行内存资源回收。在实际应用中,可以根据多核系统中的各个 CPU的占用率的比较结果,选择占有率较低的、相对比较空闲的一个或多个 CPU来执行内存核查任务,从而有利于CPU间负载均衡。
在本发明实施例中,可以将多核系统的内存核查的任务拆分成多个任务
单元,所述选择的多个CPU分别执行所述多个内存核查任务中的一个内存核
查任务。比如,可以按照核查功能将内存核查任务拆分成核查严重内存异
常、核查一般内存异常两种任务单元,在不同CPU上并行执行各个任务单
元,从而提高了内存核查的效率。又比如,可以按照核查对象将内存核查任
务拆分成多个任务单元,在不同CPU上并行执行各个任务单元。比如,将所 有内存池划成几个区,每个CPU只核查其中的一个区,这样既可以提高效
率,也可以避免多CPU核查同一内存池所带来的冲突。
所述选择的CPU在执行内存核查任务时,通过检查内存块的管理结构中 的关键域中的校验字的状态是否正确,来判断所述内存块是否发生严重内存
异常;通过检查所述内存块的管理结构中的非关键域,来判断所述内存块是
否发生一般内存异常。
上述按对象拆分内存核查任务,适用于整个系统业务较少,需要对整个
系统的所有CPU做全面的内存检查,以及对一般异常的内存和指定CPU的内 存进行资源回收的情况。上述按功能拆分内存核查任务,适用于快速检查系 统中是否有内存异常,比如,只检查是否有严重内存异常。 下面结合附图来详细描述本发明实施例。
实施例一、在该实施例中,按照核查功能将内存核查任务拆分成多个任 务单元,分别由不同的CPU来执行。该实施例提出的按照核查功能拆分多核 内存任务的示意图如图2所示,具体处理过程如下
如图2所示,由于多核间内存共享,各CPU的内存池中的内存块可以在 CPU之间进行传递、使用,所以在内存核查及内存资源回收时,必须遍历所 有全局内存共享区中的所有内存池。为了缩短内存核查时间,提高效率,按 照核查严重内存异常、核查一般内存异常将内存核查任务拆分成两个任务单 元。比如,在图2所示的某多核系统中,有32个CPU,其中CPU2和CPU3的 占用率为20%, 30%,其它CPU的占用率均在60o/o以上,如果这时CPU4 31 上有内存核查的需求,CPU1有复位需求,为了保证业务的正常运作,同时也 考虑到CPU负载均衡,可以考虑CPU1的内存资源回收任务由CPU1自已执 4亍,CPU4 31的内存4亥查4壬务由CPU2、 CPU3执4亍,CPU0、 CPU4 31继续 运行业务,不执行内存核查任务。
在以上的场景下,上述两个任务单元可以分别由CPU2、 CPU3并行执 行,CPU2执行核查严重内存异常的任务,CPU3执行核查一般内存异常的任
务。其余CPU继续运行业务,CPU1仅执行对自已使用的内存资源回收。按核 查功能拆分内存核查任务可以提高核查效率,有利于CPU之间负载均衡,使 得内存核查对正常业务的影响降到最低。
实施例二、在该实施例中,按照核查对象将内存核查任务拆分成多个任
务单元,分别由不同的CPU来执行。该实施例提出的按照核查对象拆分多核 内存任务的示意图如图3所示,具体处理过程如下
比如,在图3所示的某多核系统中,有32个CPU,其中CPU1、 CPU2和 CPU3的占用率为200/。, 25%, 30%,其它CPU的占用率均在60%以上,这时 CPU0 CPU31上有内存核查的需求。
为了弥补按功能拆分的不足,可以将上述某多核系统的内存核查任务按 核查对象进行拆分。如图3所示,将内存核查任务按核查对象拆分成3个核查 4壬务,CPU1、 CPU2、 CPU3均执4亍内存斗亥查及内存资源回Jl丈功能,《旦CPU1 仅负责CPU8 CPU31的内存池的内存核查任务,CPU2仅负责CPU0 CPU3 的内存池的内存核查任务,CPU3负责CPU4 CPU7的内存池的内存核查任 务。
上述CPU1、 CPU2、 CPU3在执行内存检查时,对每一个内存块先检查 是否有严重内存异常,如果有严重内存异常,则将该内存块进行隔离处理; 如果没有严重内存异常,则继续检查是否有一般内存异常,如果有一般内存 异常,则对该内存块执行资源回收;如果没有一般内存异常,则继续检查下 一个内存块。该实施例可以对每一个内存块全面进行才全查,且内存片企查分区 进行,内存核查与正常业务所进行的内存申请、释放操作冲突也比较少。
实施例三、在该实施例中,按照内存块的管理结构中的关键域和非关键 域来判断内存异常的种类。该实施例提供的一种多核系统的内存块的管理结 构的示意图如图4所示。
当多核系统采用内存共享的方式时,在内存共享空间中划分多个内存 池,用于多核间通信及多核与外部进行通信,每个内存池中有许多内存块, 每个内存块就是一个独立的载体,并且有独立的管理结构,该管理结构中包
括许多管理域,该管理域按性质分为关键域与非关键域,其中关键域表示
内存块作为载体的功能是否可用,非关键域表示内存块携带的数据的状态信
息。如果内存块的关键域出错,表示该内存块作为载体的功能已不可用;如 果内存块的非关键域出错,表示该内存块携带的数据信息出错,但是内存块 作为载体的功能尚未消失,可回收后继续使用。
如图4所示,上述关键域可以是内存块校验字,该内存块校验字可以为一 个字符串或一个标识位,该内存块校验字的状态分为两种状态使用、未使 用(空闲),如果内存校验字不是这两种状态,表示内存块关键域出错,属 于严重内存异常,该内存块不能再作为载体,需要进行隔离、修复处理。上 述非关键域可以是内存数据信息域,内存数据信息域包括CPU信息域、时间 信息域、数据类型域等,其中CPU信息域用来标识哪个CPU正在使用该内存 块,时间信息域用作记载该内存块被占用和被使用的时间信息,可以用来进 行超时控制,防止内存块长时间闲置,数据类型域用来标识内存块携带的数 据信息。
在对内存块进行核查时,通过检查上述关键域中的内存块的状态,可以 检查出内存块是否有操作越界等严重内存异常;通过检查上述非关键域中的 CPU信息域,可以检查出内存块是否被正确使用,如果没有被正确使用,则 确定该内存块发生了 一般内存异常;通过检查上述非关键域中的时间信息 域,发现当一个内存块被占用后,长时间没有被使用时,可以确定该内存块 被丢失或泄露,则确定该内存块发生了一般内存异常。
在实施例三中,将上述按照核查功能和核查对象来拆分内存核查任务进 行结合,对内存进行全面的异常检查。
实施例三提供的对多核系统的内存进行全面的核查的处理流程如图5所 示,具体处理过程如下
在内存核查开始时,首先比较多核系统中的各个CPU的占用率,选择占 用率较低的、相对比较空闲的1个或多个CPU来进行内存核查的操作。按照核
查功能和核查对象来将内存核查任务拆分成多个核查任务,通过上述选择的1
个或多个CPU来并行执行该拆分后的多个核查任务。
比如, 一个多核系统中有CPUO CPU31共32个CPU需要进行内存核 查,并且对核查出来的一般异常的内存块和指定的CPU4上使用的内存执行内 存资源回收。于是,将内存核查任务按核查对象拆分成3个核查任务,分别由 CPU1、 CPU2、 CPU3来执行,CPU1负责CPU0 CPU5的内存核查任务和内 存资源回收,CPU2负责CPU6 CPU31的严重内存异常的核查任务,CPU3负 责CPU6 CPU31的一般内存异常的核查任务和内存资源回收。
以CPU1为例,执行内存核查任务的操作过程如下依次检查本CPU负责 核查的内存区域(CPU0 CPU5)中的每个内存块,首先检查该内存块的关 键域中的校验字的状态是否正确,如果是,则确定该内存块发生严重内存异 常,隔离该内存块。
当该内存块的关键域中的校验字的状态正确时,则判断是否执行指定 CPU的内存资源回收功能。如果没有指定CPU的内存资源回收,则直接判断 非关键信息域。而在本实施例中,对指定的CPU4上使用的内存执行内存资源 回收。于是,首先,检查该内存块的非关键域中的CPU信息域,判断该内存 块是否正被CPU4使用时,如果是被CPU4使用,则直接对该内存块进行回 收,而不需要判断该内存块的其他非关键域是否正确;如果不是被CPU4使 用,则继续检查该内存块的其他非关键域。比如,检查该内存块的非关键域 中的时间信息域,发现当该内存块被占用后,长时间没有被使用时(使用超 时),可以确定该内存块被丢失或泄露,则确定该内存块发生了一般内存异
常,对该内存块进行回收处理。如果内存块没有使用超时,则可以继续对其 他非关键域进行检查。
实施例四、该实施例提供的 一种对多核系统进行内存核查的系统的结构
示意图如图6所示,包括如下模块
CPU选择模块,用于对多核系统中的中央处理器CPU的占用率进行比 较,根据比较结果来选择执行内存核查的CPU; CPU,用于当被所述CPU选 择模块选择为执行内存核查的CPU时,对所述多核系统进行内存核查。可以 理解的是,所述CPU选择模块可以是独立的装置,也可以是设置在CPU内 (某个CPU或多个CPU中都具有)。
如果CPU选择模块选择的执行内存核查的CPU有多个,所述系统还包 括内存核查任务拆分模块,用于将对多核系统进行内存核查的任务拆分成 多个任务单元;所述CPU选择模块所选择的多个CPU分别执行多个任务单元 其中的一部分。
进一步的,所述内存核查任务拆分模块具体包括功能拆分子模块和/或 对象拆分子模块,其中,功能拆分子模块,用于将对多核系统进行内存核查 的任务拆分成核查严重内存异常的任务和核查一般内存异常的任务单元;对 象拆分子模块,用于将对多核系统进行内存核查的任务按照对需要核查的 CPU所划分的多个区间,拆分成多个任务单元。
进一步的,所述CPU具体包括关键域检查子模块和/或非关键域检查子 模块,其中,关键域检查子模块,用于通过检查内存块的管理结构中的关键 域是否正确,来判断所述内存块是否发生严重内存异常;非关键域检查子模 块,用于通过检查内存块的管理结构中的非关键域,来判断所述内存块是否 发生一般内存异常。
进一步的,所述非关键域检查子模块具体包括CPU信息域检查子模块 和/或时间信息域检查子模块,其中,CPU信息域检查子模块,用于通过检查
所述内存块的管理结构中的CPU信息域,获知所述内存块没有被正确使用,
则确定所述内存块发生了一般内存异常;或,时间信息域检查子模块,用于
通过检查所述内存块的管理结构中的时间信息域,获知所述内存块被占用 后,超过设定的时间没有被使用,则确定所述内存块发生了一般内存异常。
综上所述,本发明实施例通过根据多核系统中的各个CPU的占用率的比 较结果,来选择执行内存核查的一个或多个CPU。从而可以减轻主CPU的负 担,有利于多核系统各CPU间负载均衡。通过多个CPU并行执行内存核查任 务,能缩短内存核查时间,提高效率,保持业务稳定运行。保持多核系统的 业务稳定运行。
通过将核查任务按照核查功能或者核查对象拆分成多个任务单元,可以 提供对多核系统进行内存核查的灵活性。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不 局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可 轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应该以权利要求的保护范围为准。
权利要求
1、一种多核系统中内存核查的方法,其特征在于,包括对多核系统中的中央处理器CPU的占用率进行比较,根据比较结果来选择执行内存核查的CPU;所述选择的执行内存核查的CPU对所述多核系统进行内存核查。
2、 根据权利要求1所述的多核系统中内存核查的方法,其特征在于,所 述根据比较结果来选择执行内存核查的CPU具体包括根据多核系统中的CPU的占用率的比较结果,选择占用率最低的 一个或 多个CPU作为执行内存核查的CPU。
3、 根据权利要求2所述的多核系统中内存核查的方法,其特征在于,当 选择的执行内存核查的CPU有多个时,所述选择的执行内存核查的CPU对所 述多核系统进行内存核查具体包括将对多核系统进行内存核查的任务拆分成多个任务单元,所述选择的多 个CPU分别执行所述多个任务单元其中的一部分。
4、 根据权利要求3所述的多核系统中内存核查的方法,其特征在于,所 述将对多核系统进行内存核查的任务拆分成多个任务单元具体包括将对多核系统进行内存核查的任务拆分成核查严重内存异常的任务单元 和核查一般内存异常的任务单元。
5、 根据权利要求3所述的多核系统中内存核查的方法,其特征在于,所 述将对多核系统进行内存核查的任务拆分成多个任务单元具体包括将多核系统中的需要核查的CPU划分为多个区间,将对多核系统进行内 存核查的任务按照所述多个区间拆分成多个任务单元。
6、 根据权利要求1至5任一项所述的多核系统中内存核查的方法,其特征 在于,所述选择的执行内存核查的CPU对所述多核系统进行内存核查具体包 括所述选择的执行内存核查的CPU判断核查的内存块的管理结构中的关键 域是否正确,如果不正确,则判断所述内存块发生严重内存异常;如果正 确,通过检查所述内存块的管理结构中的非关键域,判断所述内存块是否发 生一般内存异常。
7、 根据权利要求6所述的多核系统中内存核查的方法,其特征在于,所 述通过检查所述内存块的管理结构中的非关键域,判断所述内存块是否发生 一般内存异常具体包括通过检查所述内存块的管理结构中的CPU信息域,获知所述内存块没有 被正确使用,则确定所述内存块发生了一般内存异常; 和/或,通过检查所述内存块的管理结构中的时间信息域,获知所述内存块被占 用后,超过设定的时间没有被使用,则确定所述内存块发生了一般内存异 常。
8、 一种多核系统中内存核查的系统,其特征在于,包括 CPU选择模块,用于对多核系统中的中央处理器CPU的占用率进行比较,根据比较结果来选择执行内存核查的CPU;CPU,用于当被所述CPU选择模块选择为执行内存核查的CPU时,对所 述多核系统进4亍内存核查。
9、 根据权利要求8所述的多核系统中内存核查的系统,其特征在于,所 述CPU选择模块选择的执行内存核查的CPU有多个时,所述系统还包括内存核查任务拆分模块,用于将对多核系统进行内存核查的任务拆分成 多个任务单元;所述CPU选择模块所选择的多个CPU分别执行多个任务单元其中的 一部分。
10、 根据权利要求9所述的多核系统中内存核查的系统,其特征在于,所 述内存核查任务拆分模块具体包括功能拆分子模块,用于将对多核系统进行内存核查的任务拆分成核查严 重内存异常的任务和核查一般内存异常的任务单元; 和/或,对象拆分子模块,用于将对多核系统进行内存核查的任务按照对需要核 查的CPU所划分的多个区间,拆分成多个任务单元。
11、 根据权利要求8或9或10所述的多核系统中内存核查的系统,其特征 在于,所述CPU具体包括关键域检查子模块,用于通过检查内存块的管理结构中的关键域是否正 确,来判断所述内存块是否发生严重内存异常; 和/或,非关键域检查子模块,用于通过检查内存块的管理结构中的非关键域, 来判断所述内存块是否发生一般内存异常。
12、 根据权利要求11所述的多核系统中内存核查的系统,其特征在于, 所述非关键域检查子模块具体包括CPU信息域检查子模块,用于通过检查所述内存块的管理结构中的CPU 信息域,获知所述内存块没有被正确使用,则确定所述内存块发生了一般内 存异常;和/或,时间信息域检查子模块,用于通过检查所述内存块的管理结构中的时间 信息域,获知所述内存块被占用后,超过设定的时间没有被使用,则确定所 述内存块发生了 一般内存异常。
全文摘要
本发明提供了一种对多核系统中内存核查的方法和系统。该方法主要包括对多核系统中的各个中央处理器CPU的占用率进行比较,根据比较结果来选择执行内存核查的CPU;所述选择的执行内存核查的CPU对所述多核系统进行内存核查。该系统主要包括CPU选择模块,用于对多核系统中的各个中央处理器CPU的占用率进行比较,根据比较结果来选择执行内存核查的一个或多个CPU;CPU,用于当被所述CPU选择模块选择为执行内存核查的CPU时,对所述多核系统进行内存核查。利用本发明,从而可以减轻主CPU的负担,有利于多核系统各CPU间负载均衡,保持多核系统的业务稳定运行。
文档编号G06F11/22GK101178679SQ20071017956
公开日2008年5月14日 申请日期2007年12月14日 优先权日2007年12月14日
发明者陈定春 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1