多核定时器实现方法和多核系统的制作方法

文档序号:10653730阅读:389来源:国知局
多核定时器实现方法和多核系统的制作方法
【专利摘要】本发明涉及一种多核定时器实现方法和多核系统,其方法为预先配置与多核系统的内核数量相同的定时器列表,其中,每个内核对应一个所述定时器列表,其方法包括:需要创建定时器的内核创建定时器数据结构;需要创建定时器的内核将所创建的定时器数据结构插入到任意一个内核的定时器列表中;需要进行处理的内核对所对应的定时器列表中的定时器数据结构进行调度或者/和调整。采用本发明的方案,可以将定时器任务的管理和定时任务的执行分担到每个内核中去,解决了集中管理存在负载过重的问题;同时,各内核之间不存在核间交互,避免了信息丢失和延迟,提高了定时效率以及系统稳定性。
【专利说明】
多核定时器实现方法和多核系统
技术领域
[0001]本发明涉及计算机多核技术领域,特别是涉及一种多核定时器实现方法和多核系统。
【背景技术】
[0002]随着大数据时代的到来,通信系统中对网络设备的处理能力要求越来越高,而仅仅依靠提高单核芯片的速度来提高CPU(Central Processing Unit,中央处理器)的处理能力会产生过多热量且无法带来相应的性能改善,其性价比也令人难以接受。另一方面,现在的系统都要求要以进行多任务操作。在这种情况下,多核CPU无凝是一个很好的选择,其优势主要在两个方面:为用户带来更强大的计算性能;更重要的是可满足用户同时进行多任务处理和多任务计算环境的要求。
[0003]由于多核处理器硬件所提供的定时器机制与以往的单核处理器并无差异,导致在多核系统中,特别是非对称多处理系统中使用定时器存在一定的困难。一方面是没有统一的多核定时器实现机制,使用定时任务时会加大系统结构复杂度;另一方面是存在多核竟争情况,导致系统率低。
[0004]从现有技术上看,为了克服上述困难,目前多核定时器的实现方法主要有以下两种:
[0005](I)把定时器任务交给一个独立的处理器核来管理和执行,其它处理器核要使用定时器时,向管理和执行定时器的核申请创建定时器和定时任务,所有定时器的管理和任行都由该独立的核进行。该方法的好处是结构简单,各处理器核的交互比较少。但其缺点是当定时器数量达到一定程度时,会导致管理和执行定时器任务的处理器核负载太重,影响定时精度和系统效率。
[0006](2)把定时器的管理和执行分开,由一个核管理定时器,而定时器的任务由需要执行定时任务的核执行。这种方法把定时器任务分发到其它各核中处理,减少了管理核的负载。但管理核经常要通知其它核执行定时任务,增加了核间通信交互,同时如果交互信息丢失和延迟,可能加大系统的不稳定。

【发明内容】

[0007]基于此,有必要针对多核定时器实现中多核负载不均、定时器效率低、以及系统稳定性问题,提供一种多核定时器实现方法和多核系统。
[0008]本发明的目的通过如下技术方案实现:
[0009]—种多核定时器实现方法,预先配置与多核系统的内核数量相同的定时器列表,其中,每个内核对应一个所述定时器列表,所述方法包括:
[0010]需要创建定时器的内核创建定时器数据结构;
[0011]需要创建定时器的内核将所创建的定时器数据结构插入到任意一个内核的定时器列表中;
[0012]需要进行处理的内核对所对应的定时器列表中的定时器数据结构进行调度或者/和调整。
[0013]—种多核系统,包括多个内核,所述多个内核中的每个内核分别对应配置有一个定时器列表,所述多个内核中的每个内核分别包括:
[0014]创建单元,用于创建定时器数据结构;
[0015]插入单元,用于将创建单元所创建的定时器数据结构插入到任意一个内核的定时器列表中;
[0016]处理单元,用于对所对应的定时器列表中的定时器数据结构进行处理。
[0017]根据上述本发明的方案,其是预先配置与多核系统的内核数量相同的定时器列表,其中,每个内核对应一个所述定时器列表,需要创建定时器的内核创建定时器数据结构,需要创建定时器的内核将所创建的定时器数据结构插入到任意一个内核的定时器列表中,需要进行处理的内核对所对应的定时器列表中的定时器数据结构进行调度或者/和调整。通过本发明方案,可以将定时器任务的管理和定时任务的执行分担到每个内核中去,解决了集中管理存在负载过重的问题;同时,各内核之间不存在核间交互,避免了信息丢失和延迟,提尚了定时效率以及系统稳定性。
【附图说明】
[0018]图1为本发明实施例一的多核定时器实现方法的实现流程示意图;
[0019]图2为图1中的步骤S103在一个实施例中的细化流程示意图;
[0020]图3为图1中的步骤S103在另一个实施例中的细化流程示意图;
[0021 ]图4为图1中的步骤S102在其中一个实施例中的细化流程示意图;
[0022]图5为本发明实施例二的多核系统的组成结构示意图;
[0023]图6为图5中的处理单元在一个实施例中的细化组成结构示意图;
[0024]图7为图5中的处理单元在另一个实施例中的细化组成结构示意图;
[0025]图8为图5中的插入单元在其中一个实施例中的细化组成结构示意图。
【具体实施方式】
[0026]为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的【具体实施方式】仅仅用以解释本发明,并不限定本发明的保护范围。
[0027]实施例一
[0028]本发明实施例一提供一种多核定时器实现方法,图1为本发明实施例一的多核定时器实现方法的实现流程示意图一,在本实施例中,预先配置与多核系统的内核数量相同的定时器列表,其中,每个内核对应一个所述定时器列表,如图1所示,该实施例中的多核定时器实现方法包括:
[0029]步骤SlOl:需要创建定时器的内核创建定时器数据结构;
[0030]这里,需要创建定时器是多核系统中的任意一个当前需要创建定时器的内核;
[0031]这里,定时器数据结构为定时器数据(或者称为定时器的相关信息)的存储结构,用于保存定时器相关信息;
[0032]步骤S102:需要创建定时器的内核将所创建的定时器数据结构插入到任意一个内核的定时器列表中;
[0033]这里,任意一个内核可以与需要创建定时器的内核为同一个内核,也可以为不同的内核;
[0034]步骤S103:需要进行处理的内核对所对应的定时器列表中的定时器数据结构进行调度或者/和调整;
[0035]这里,需要进行处理的内核是多核系统中的任意一个当前需要进行定时器任务处理的内核;
[0036]需要说明的是,多核系统中的每一个内核根据需要在不同时刻,既可以作为需要创建定时器的内核,也可以根据作为需要进行处理的内核;
[0037]具体地,需要进行处理的内核在其程序运行的主循环中检查多核系统的系统当前时间,并根据检查到的系统当前时间,对所对应的定时器列表中的定时器数据结构进行调度和调整,其中,调度是控制需要进行处理的内核执行所对应的定时器列表中已经到期的定时器数据结构中的任务;调整是指调整需要周期执行的定时器数据结构的执行时长。
[0038]据此,根据上述本实施例的方案,其是预先配置与多核系统的内核数量相同的定时器列表,其中,每个内核对应一个所述定时器列表,需要创建定时器的内核创建定时器数据结构,需要创建定时器的内核将所创建的定时器数据结构插入到任意一个内核的定时器列表中,需要进行处理的内核对所对应的定时器列表中的定时器数据结构进行调度或者/和调整。通过本实施例方案,可以将定时器任务的管理和定时任务的执行分担到每个内核中去,解决了集中管理存在负载过重的问题;同时,各内核之间不存在核间交互,避免了信息丢失和延迟,提尚了定时效率以及系统稳定性。
[0039]在其中一个实施例中,定时器数据结构用于保存定时器相关信息,该定时器相关信息包括下次到期时间和定时任务;
[0040]这里,下次到期时间是指任务下一次执行时的系统时间,定时任务是指到达下次到期时间时所要执行的任务;
[0041]如图2所示,所述需要进行处理的内核对所对应的定时器列表中的定时器数据结构进行调度或者/和调整可以包括:
[0042]步骤S2 O1:需要进行处理的内核获取自身核标识和所述多核系统的系统当前时间;
[0043]可以预先为每个内核分配核标识,以区分不同的内核,例如,以核编号为核标识,还可以预先为每个定时器列表分配列表标识,并建立核标识与列表标识的对应关系;
[0044]步骤S202:需要进行处理的内核获取与所述自身核标识对应的定时器列表;
[0045]具体地,可以根据上述的自身核标识以及核标识与列表标识的对应关系,确定与所述自身核标识对应的定时器列表;
[0046]步骤S203:需要进行处理的内核取出所获取的定时器列表中的下次到期时间小于或等于所述系统当前时间的定时器数据结构;
[0047]步骤S204:需要进行处理的内核执行所取出的定时器数据结构中的定时任务。
[0048]具体地,需要进行处理的内核可以不断的检测系统当前时间和定时器数据结构中的下次到期时间是否相等,如果相等,说明相应的定时器到期,需要执行定时任务了,但有可能需要进行处理的内核执行定时任务或其它常规任务的时间太长,等到需要进行处理的内核执行完定时器任务或其它常规任务后再回去检查定时器列表中的定时器(定时器数据结构)时,有些定时器(定时器数据结构)已经错过了执行时间,这种情况下,定时器数据结构中的下次到期时间小于系统当前时间,如果不对这些小于系统当前时间的定时器任务补充执行的话,将会导致任务丢失,所以,在本实施例中,需要取出所获取的定时器列表中的下次到期时间小于或等于所述系统当前时间的定时器数据结构;
[0049]需要说明的是,此时补充执行的任务是存在延迟的,而本发明方案可以尽量解决延迟问题,本发明方案通过把定时器管理和定时任务的执行分配到所有处理内核上运行,相比其它在某个指定内核上统一管理或统一执行任务的方法来说,处理器内核的负荷得到了分担,可以减少某些内核负荷太重而导致定时器延迟的概率。
[0050]进一步需要说明的是,并不是每一次检查定时器列表中定时器数据结构中的下次到期时间的时候,都会有小于系统当前时间的定时器存在。内核的处理时间粒度要远远小于系统时间单位的粒度,仅有在内核特别繁忙的情况下,才可以出现这种情况,而由本发明把负荷分担到各个内核上了,减少了内核发生特别繁忙的概率。
[0051]在其中一个实施例中,所述定时器相关信息还包括定时周期,如图3所示,所述需要进行处理的内核对所对应的定时器列表中的定时器数据结构进行调度或者/和调整除包括上述的步骤S201?S204外,还可以包括:
[0052]步骤S301:需要进行处理的内核根据所取出的定时器数据结构中的定时周期判断是否需要重复执行所取出的定时器数据结构中的定时任务,若是,则进入步骤S302;
[0053]具体地,若定时周期为0,则说明只需要执行一次,若定时周期不为0,则判定需要重复执行所取出的定时器数据结构中的定时任务,在步骤S301的判定结果为否时,将所取出的定时器数据结构从对应的定时器列表中删除;
[0054]步骤S302:需要进行处理的内核根据所述定时周期调整所述所取出的定时器数据结构中的下次到期时间,将调整后的定时器数据结构重新插入所对应的定时器列表中。
[0055]其中,调整方式可以是,求取定时任务完成时间和定时周期的和值,用该和值作为新的下次到期时间;
[0056]在其中一个实施例中,如图4所示,所述需要创建定时器的内核将所创建的定时器数据结构插入到任意一个内核的定时器列表中可以包括:
[0057]步骤S401:需要创建定时器的内核获取所要插入的定时器列表的自旋锁;
[0058]具体地,可以随机的确定所要插入的定时器;
[0059]步骤S402:根据时长顺序把所创建的定时器数据结构插入所要插入的定时器列表中;
[0060]这里,时长可以指上述的下次到期时间,该时长等于系统当前时间与时间间隔的和值,这里的系统当前时间值当前创建的定时器数据结构时的系统时间,时间间隔指需要在系统当前时间值多长时间后执行相应的定时任务;
[0061 ]步骤S403:在所述插入完成后,释放所述自旋锁。
[0062]在本实施例中,定时器列表使用了锁机制,可以保证每一时刻只有一个内核在向某一定时器列表中插入定时器,避免各内核间的资源竟争。
[0063]在其中一个实施例中,上述的定时器列表采用多级跳表形式。由于在跳表中查找、插入或删除某个元素的速度要比在普通的队列数据结构中做相同操作快。而对定时器列表的管理工作主要就是在定时器列表中查找、插入或删除定时器(或者说是定时器数据结构),因此,本实施例中的定时器列表采用多级跳表形式,可以提升定时器列表的管理效率。
[0064]为了便于理解本发明的方案,以下通过一个具体的示例对本发明方案进行说明。
[0065]假设多核系统中的处理器有N个内核,根据处理器内核的数量,设置N个定时器列表,内核O使用定时器列表0,内核I使用定时器列表I,内核2使用定时器列表2,以此类推;为了提高定时器列表的管理效率,定时器列表采用多级跳表形式,本示例中,跳表的级数最大值设置为10级。每个定时器列表使用锁机制来保证每一时刻只有一个内核在向定时器列表中插入定时器,避免各内核间的资源竟争。
[0066]当内核O需要指定内核I在间隔10秒后周期地执行某个任务时(本示例中周期为2秒),内核O创建定时器数据结构,该定时器数据结构用于保存定时器的相关信息,该相关信息包括但不限于以下内容:定时器拥有者(即定时器所属的内核,本示例中如内核0)、定时周期(2秒)、下次到期时间(任务完成时间+执行周期)、定时任务(即定时器到期时所要执行的任务)。其中周期为0,表不定时任务只执行一次。
[0067]内核O填好定时器的相关信息后,把该定时器数据结构按照时长顺序插入到定时器列表I中。其中时长是指任务下一次执行时的系统时间,其计算方法为:时长=系统当前时间+时间间隔。例如:本例中假设系统当前时间为100秒,则时长为100+10 = 110秒。
[0068]插入定时器的过程为,首先获取所要插入的定时器列表的自旋锁,然后按时长顺序把所创建的定时器数据结构插入定时器列表中,插入完成后,释放自旋锁。
[0069]系统中各内核在其程序运行的主循环中检查系统时间,并根据系统当前时间,对各自的定时器列表进行调度和调整。
[0070]调度和调整的具体过程为:首先获取本内核的内核编号和当前系统时间,根据内核编号读取相应的定时器列表的表头,如在本示例中的内核I的主循环中,读取定时器列表I,获取时器列表I的自旋锁;根据系统当前时间,取出列表中时长小于或等于系统当前时间的所有定时器数据结构,修改定时器列表的表头指针,使表头指针指向列表中第一个时长大于系统当前时间的定时器;释放时器列表I的自旋锁;
[0071]在取出的所有定时器中,依次执行定时器中的定时任务,每完成一个定时器任务后,都要判断该定时任务是否要周期执行、如果是周期执行的任务,调整时长并重新插入到定时器列表中,插入方法如前所述。如果不是周期任务,则删除定时器结构。
[0072]实施例二
[0073]基于上述的实施例一,本发明实施例二提供一种多核系统,参见图5所示,为本发明实施例二的多核系统的组成结构示意图一;如图5所示,该实施例中的多核系统,包括多个内核50,多个内核50中的每个内核50分别对应配置有一个定时器列表,多个内核50中的每个内核50分别包括:
[0074]创建单元501,用于创建定时器数据结构;
[0075]插入单元502,用于将创建单元501所创建的定时器数据结构插入到任意一个内核的定时器列表中;
[0076]处理单元503,用于对所对应的定时器列表中的定时器数据结构进行处理。
[0077]在其中一个实施例中,定时器数据结构用于保存定时器相关信息,该定时器相关信息包括下次到期时间和定时任务;如图6所示,处理单元503可以包括:
[0078]第一获取模块601,用于获取自身内核的核编号和所述多核系统的系统当前时间;
[0079]第二获取模块602,用于获取与所述自身核标识对应的定时器列表;
[0080]取出模块603,用于取出所述第二获取模块所获取的定时器列表中的下次到期时间小于或等于所述系统当前时间的定时器数据结构;
[0081 ]处理模块604,用于需要进行处理的内核执行所取出的定时器数据结构中的定时任务。
[0082]在其中一个实施例中,所述定时器相关信息还包括定时周期,如图6所示,处理单元503还可以包括:
[0083]判定模块701,用于根据所取出的定时器数据结构中的定时周期判断是否需要重复执行所取出的定时器数据结构中的定时任务;
[0084]调整与插入模块702,用于在判定模块701的判定结果为是时,根据所述定时周期调整所述所取出的定时器数据结构中的下次到期时间,将调整后的定时器数据结构重新插入自身内核的定时器列表中。
[0085]在其中一个实施例中,如图8所示,插入单元502可以包括:
[0086]第三获取模块801,用于获取所要插入的定时器列表的自旋锁;
[0087]插入模块802,用于根据时长顺序把所创建的定时器数据结构插入所要插入的定时器列表中;
[0088]释放模块803,用于在所述插入模块完成插入后,释放所述自旋锁。
[0089]在其中一个实施例中,定时器列表采用多级跳表形式。
[0090]本实施例提供的多核系统,需要指出的是:以上对于多核系统的描述,与上述多核定时器实现方法的描述是类似的,并且具有上述多核定时器实现方法的有益效果,为节约篇幅,不再赘述;因此,以上对本发明实施例提供的多核系统中未披露的技术细节,请参照上述提供的多核定时器实现方法的描述。
[0091]在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0092]上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
[0093]另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0094]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read_Only Memory)、随机存取存储器(RAM ,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0095]或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0096]以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0097]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【主权项】
1.一种多核定时器实现方法,其特征在于,预先配置与多核系统的内核数量相同的定时器列表,其中,每个内核对应一个所述定时器列表,所述方法包括: 需要创建定时器的内核创建定时器数据结构; 需要创建定时器的内核将所创建的定时器数据结构插入到任意一个内核的定时器列表中; 需要进行处理的内核对所对应的定时器列表中的定时器数据结构进行调度或者/和调整。2.根据权利要求1所述的多核定时器实现方法,其特征在于,定时器数据结构用于保存定时器相关信息,该定时器相关信息包括下次到期时间和定时任务; 所述需要进行处理的内核对所对应的定时器列表中的定时器数据结构进行调度或者/和调整包括: 需要进行处理的内核获取自身核标识和所述多核系统的系统当前时间; 需要进行处理的内核获取与所述自身核标识对应的定时器列表; 需要进行处理的内核取出所获取的定时器列表中的下次到期时间小于或等于所述系统当前时间的定时器数据结构; 需要进行处理的内核执行所取出的定时器数据结构中的定时任务。3.根据权利要求2所述的多核定时器实现方法,其特征在于,所述定时器相关信息还包括定时周期,所述需要进行处理的内核对所对应的定时器列表中的定时器数据结构进行调度或者/和调整还包括: 需要进行处理的内核根据所取出的定时器数据结构中的定时周期判断是否需要重复执行所取出的定时器数据结构中的定时任务; 若是,则需要进行处理的内核根据所述定时周期调整所述所取出的定时器数据结构中的下次到期时间,将调整后的定时器数据结构重新插入所对应的定时器列表中。4.根据权利要求1所述的所述的多核定时器实现方法,其特征在于,所述需要创建定时器的内核将所创建的定时器数据结构插入到任意一个内核的定时器列表中包括: 需要创建定时器的内核获取所要插入的定时器列表的自旋锁; 需要创建定时器的内核根据时长顺序把所创建的定时器数据结构插入所要插入的定时器列表中; 需要创建定时器的内核在所述插入完成后,释放所述自旋锁。5.根据权利要求1所述的所述的多核定时器实现方法,其特征在于,定时器列表采用多级跳表形式。6.一种多核系统,其特征在于,包括多个内核,所述多个内核中的每个内核分别对应配置有一个定时器列表,所述多个内核中的每个内核分别包括: 创建单元,用于创建定时器数据结构; 插入单元,用于将创建单元所创建的定时器数据结构插入到任意一个内核的定时器列表中; 处理单元,用于对所对应的定时器列表中的定时器数据结构进行处理。7.根据权利要求6所述的多核系统,其特征在于,定时器数据结构用于保存定时器相关信息,该定时器相关信息包括下次到期时间和定时任务; 所述处理单元包括: 第一获取模块,用于获取自身内核的核编号和所述多核系统的系统当前时间; 第二获取模块,用于获取与所述自身核标识对应的定时器列表; 取出模块,用于取出所述第二获取模块所获取的定时器列表中的下次到期时间小于或等于所述系统当前时间的定时器数据结构; 处理模块,用于需要进行处理的内核执行所取出的定时器数据结构中的定时任务。8.根据权利要求7所述的多核系统,其特征在于,所述定时器相关信息还包括定时周期,所述处理单元还包括: 判定模块,用于根据所取出的定时器数据结构中的定时周期判断是否需要重复执行所取出的定时器数据结构中的定时任务; 调整与插入模块,用于在所述判断该模块的判定结果为是时,根据所述定时周期调整所述所取出的定时器数据结构中的下次到期时间,将调整后的定时器数据结构重新插入自身内核的定时器列表中。9.根据权利要求6所述的多核系统,其特征在于,所述插入单元包括: 第三获取模块,用于获取所要插入的定时器列表的自旋锁; 插入模块,用于根据时长顺序把所创建的定时器数据结构插入所要插入的定时器列表中; 释放模块,用于在所述插入模块完成插入后,释放所述自旋锁。10.根据权利要求6所述的所述的多核系统,其特征在于,定时器列表采用多级跳表形式。
【文档编号】G06F1/10GK106020333SQ201610344969
【公开日】2016年10月12日
【申请日】2016年5月20日
【发明人】赵剑川
【申请人】京信通信技术(广州)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1