一种定时器管理模块的制作方法

文档序号:7852509阅读:202来源:国知局
专利名称:一种定时器管理模块的制作方法
技术领域
本发明涉及通信技术领域,具体地,涉及一种定时器管理模块。
背景技术
服务质量(Quality of Service,简称QoS),是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术。在正常情况下,如果网络只用于特定的无时间限制的应用系统,并不需要QoS,比如Web应用、或E-mail设置等。但是,对关键应用和多媒体应用就十分必要,例如,当网络过载或拥塞时,QoS能确保重要业务量不受延迟或丢弃,同时保证网络的高效运行。可见,QoS是现代网络之间互连的协议(Internet Protocol,简称IP,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议)网络设备的重要的功能,典型的QoS功能包括数据报文的调度和数据流的整形(shaping)。在QoS的数据流整形功能中,定时器是实现平滑和限制QoS数据流整形功能的必要资源。QoS的数据流整形功能涉及大量的运算,相比于软件QoS实现数据流整形功能而言,硬件QoS —般可以提供更快的报文处理速度。随着网络处理器能力的发展和并行多核CPU技术的提高,软件QoS不仅可以和硬件QoS媲美,同时具有成本低和使用灵活等优点。不同于一般网络协议的定时溢出要求,软件QoS所需定时器的要求包括⑴精度高,定时分辨率可以到50-100us ;(2)数量大,可能同时需要几万个定时器;(3)操作速度快,定时器操作要尽量小地影响网络设备端口的吞吐量。这些要求,使得定时器在软件QoS环境下的实现极具挑战性。在上述定时器管理技术中,一般包括四种操作,即创建定时器、删除定时器、定时器溢出检查和定时器溢出处理。其中,在定时器溢出处理操作中,当定时器溢出后,通常的处理方式是调用提前设置好的回调函数,基本不涉及管理开销;另外三种操作(即创建定时器、删除定时器与定时器溢出检查),都希望速度越快越好。由于软件QoS所需定时器的数量较大,难免占用较多的内存空间。另外,软件QoS所需定时器一般采用单时间轮的管理方式,在单时间轮的定时器管理操作中,定时器溢出检查花费的时间较长;并且,采用单时间轮的管理方式,除了可以实现线性查找外,没有办法区分当前槽内事件应该现在处理或是在将来的轮回中处理。在实现本发明的过程中,发明人发现现有技术中至少存在占用内存空间大、溢出检查时间长与难以确定当前活跃事件的处理时机等缺陷。

发明内容
本发明的目的在于,针对上述问题,提出一种定时器管理模块,至少可以应用于软件QoS与网络数据流定时溢出管理等方面,以实现占用内存空间小、溢出检查时间短、扩展性强、以及易确定当前活跃事件的处理时机的优点。为实现上述目的,本发明采用的技术方案是一种定时器管理模块,包括处理事件、的紧急程序自前至后依次降低、且包含的时间单位自前至后依次增大的多级时间轮;在所述多级时间轮中,后级时间轮的始端,挂接在与该后级时间轮相邻的前级时间轮的末端。进一步地,所述多级时间轮,至少包括依次挂接的第一级时间轮、第二级时间轮与第三级时间轮,其中
所述第一级时间轮,用于采用单时间轮结构,对当前活跃的短定时事件,根据预先设定的紧急程序进行处理;
所述第二级时间轮,用于采用复合时间轮结构,对当前等待的短定时事件处理时机的紧急程序进行排布;并在相应短定时事件的处理时机到来时,将该相应短定时事件前移至第一级时间轮,根据第一级时间轮中预先设定的紧急程序进行处理;
所述第三级时间轮,用于采用单时间轮结构,对当前等待的长定时事件,根据预先设定的紧急程序依次迁移至第二级时间轮及第一级时间轮,根据第一级时间轮中预先设定的紧 急程序进行处理。进一步地,所述第一级时间轮,包括构成单时间轮结构、且分别对应定时器的分辨率时间单位的第I至第256时间槽,所述第I至第256时间槽的索引依次为0-255。进一步地,在所述第I至第256时间槽中每个时间槽的下方,均挂接有与相应时间槽对应、且通过链表连接的定时事件。进一步地,所述第二级时间轮,包括构成复合时间轮结构的主时间轮,以及分别与所述主时间轮中每个时间槽对应、且依次挂接在所述主时间轮中多个时间槽下方的多个子时间轮。
进一步地,所述主时间轮,包括索引依次为0-63的第I至第64时间槽;所述主时间轮中的第I时间槽,与第一级时间轮的第256时间槽挂接;
所述多个子时间轮,包括依次挂接在第I至第64时间槽下方的第I至第64子时间轮。进一步地,在所述第I至第64子时间轮中,每个子时间轮的结构与第一级时间轮的结构相同,即每个子时间轮包括索引依次为0-255的第I至第256时间槽。进一步地,在所述第I至第256时间槽中每个时间槽的下方,均挂接有与相应时间槽对应、且通过链表连接的定时事件。进一步地,所述第三级时间轮,包括构成单时间轮结构的第I至第64时间槽,所述第I至第64时间槽的索引依次为0-63 ;所述第三级时间轮的第I时间槽,与第二级时间轮中主时间轮的第64时间槽挂接。进一步地,在所述第I至第64时间槽中每个时间槽的下方,均挂接有与相应时间 槽对应的定时事件链;
与所述第I至第64时间槽对应的第I至第64定时事件链,用于在相应的处理时机到来时,根据预设的紧急程序前移至第二级时间轮中对应的子时间轮中,再根据第一级时间轮中预设的紧急程序进行处理。本发明各实施例的定时器管理模块,由于包括处理事件的紧急程序自前至后依次降低、且包含的时间单位自前至后依次增大的多级时间轮;在多级时间轮中,后级时间轮的始端,挂接在与该后级时间轮相邻的前级时间轮的末端;与单时间轮实现的定时器管理相t匕,可以节省定时器溢出检查花费的时间,并可以克服单时间轮实现时除了线性查找外没有办法区分当前槽内事件应该现在处理或是在将来的轮回中处理的问题;与纯复合时间轮实现的定时器管理相比,可以节省内存空间,因为三级以上不是复合结构;并且与软件QoS用定时器的特点相配合,设置的长定时时间较少;从而可以克服现有技术中占用内存空间大、溢出检查时间长与难以确定当前活跃事件的处理时机的缺陷,以实现占用内存空间小、溢出检查时间短、扩展性强、以及易确定当前活跃事件的处理时机的优点。本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。


附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中 图I为根据本发明定时器管理模块的工作原理示意图。结合附图,本发明实施例中附图标记如下
I-第一级时间轮;101_第I时间槽;2_第二级时间轮;200_主时间轮;202_第2子时间轮;264_第64子时间轮;3_第三级时间轮。
具体实施例方式以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。根据本发明实施例,提供了一种定时器管理模块。本实施例处理事件的紧急程序自前至后依次降低、且包含的时间单位自前至后依次增大的多级时间轮;在多级时间轮中,后级时间轮的始端,挂接在与该后级时间轮相邻的前级时间轮的末端。这里,该定时器管理模块,由于考虑到软件QoS用定时器的数量较大的特点、以及大部分定时时间比较短(比如小于Is)的特殊性,设置多级时间轮,可以在内存占用量上根据实际需要,灵活调整(相应地增加或减少)多级时间轮的数量,使得该定时器管理模块在结构上不占用过多的内存空间、且具有合理的规模扩展性,达到处理速度快与适度利用内存空间的有益效果。上述实施例的定时器管理模块,可以由三级时间轮或更多级时间轮组成。如图I所示,上述多级时间轮,至少可以包括依次挂接的第一级时间轮(如第一级时间轮I)、第二级时间轮(如第二级时间轮2)与第三级时间轮(如第三级时间轮3),即,第三级时间轮的始端挂接在第二级时间轮的末端,第二级时间轮的始端挂接在第一级时间轮的末端;其中
第一级时间轮,用于采用单时间轮结构,对当前活跃的短定时事件,根据预先设定的紧急程序进行处理;
第二级时间轮,用于采用复合时间轮结构,对当前等待的短定时事件处理时机的紧急程序进行排布;并在相应短定时事件的处理时机到来时,将该相应短定时事件前移至第一级时间轮,根据第一级时间轮中预先设定的紧急程序进行处理;
第三级时间轮,用于采用单时间轮结构,对当前等待的长定时事件,根据预先设定的紧急程序依次迁移至第二级时间轮及第一级时间轮,根据第一级时间轮中预先设定的紧急程序进行处理。
具体地,上述第一级时间轮,包括构成单时间轮结构、且分别对应定时器的分辨率时间单位的第I至第256时间槽(如第I时间槽101),第I至第256时间槽的索引依次为0-255(为与计算机科学中二进制计数一致,每个时间轮中时间槽索引从0开始,如0-255代表256个时间槽)。在该第I至第256时间槽中每个时间槽的下方,均挂接有与相应时间槽对应、且通过链表连接的定时事件。这里,第一级时间轮时当前活跃的时间轮,由0-255共256个时间槽组成,每个时间槽对应定时器的分辨率时间单位,每个时间槽下挂有通过链表连接的定时事件,第0时间槽对应的定时事件是当前要处理的时间溢出事件。该第一级时间轮作为当前活跃的时间轮,在该当前活跃的时间轮中包含了与当前时间最接近的时间(即最近的时间),当前时间也包含在该当前活跃的时间轮中某个时间槽(即当前时间槽)中;如果该当前时间槽中包含等待的定时事件,那么该等待的定时事件应对立即被处理。
上述第二级时间轮,包括构成复合时间轮结构的主时间轮(如主时间轮200),以及分别与主时间轮中每个时间槽对应、且依次挂接在主时间轮中多个时间槽下方的多个子时间轮。这里,第二级时间轮采用复合结构,是复合时间轮,包括一个主时间轮和多个子时间轮,主时间轮的每个时间槽可能存在一个子时间轮。例如,上述第二级时间轮中的主时间轮,可以包括索引依次为0-63的第I至第64时间槽;主时间轮中的第I时间槽,与第一级时间轮的第256时间槽挂接;对应地,上述第二级时间轮中的多个子时间轮,包括依次挂接在第I至第64时间槽下方的第I至第64子时间轮(如第2子时间轮202,第64子时间轮264)。在该第I至第64子时间轮中,每个子时间轮的结构与第一级时间轮的结构相同,即每个子时间轮包括索引依次为0-255的第I至第256时间槽。在该第I至第256时间槽中每个时间槽的下方,均挂接有与相应时间槽对应、且通过链表连接的定时事件。这里,第二级时间轮是复合时间轮,其中主时间轮由0-63共64个时间槽组成,每个时间槽对应一个像第一级一样的子时间轮,也可以把第一级时间轮看作是第二级时间轮的一个子轮;第二级时间轮共代表256X64个时间单位;主时间轮上第i时间槽对应的从轮的第j时间槽上的定时事件要在从现在开始第256i+j个时间单位得到处理;i = O、I、…、63、j = 0,1、2、…、255。上述第三级时间轮,可以包括构成单时间轮结构的第I至第64时间槽,第I至第64时间槽的索引依次为0-63 ;第三级时间轮的第I时间槽,与第二级时间轮中主时间轮的第64时间槽挂接。在该第I至第64时间槽中每个时间槽的下方,均挂接有与相应时间槽对应的定时事件链;与第I至第64时间槽对应的第I至第64定时事件链,用于在相应的处理时机到来时,根据预设的紧急程序前移至第二级时间轮中对应的子时间轮中,再根据第一级时间轮中预设的紧急程序进行处理。这里,第三级时间轮没有子时间轮,也有0-63共64个时间槽,代表256X64X64个时间单位,每个时间槽代表256X64个时间单位;每个时间槽挂有对应该时间槽的定时事件链,这些定时事件链中的定时事件,将来(即相应定时事件的处理时机到来时)在被处理前要移到第二级时间轮的相应子时间轮中。上述实施例的定时器管理模块,与现有技术中的单时间轮实现方式相比,可以节省定时溢出检测时间,且不存在单时间轮实现除了线性查找外没有办法区分当前槽内事件应该现在处理或是在将来的轮回中处理的问题;与现有技术中纯复合时间轮实现方式相t匕,可以节省内存空间,因为三级时间轮以上的结构不是复合时间结构。另外,上述实施例的定时器管理模块,充分考虑了软件用QoS定时器的特点,使长定时时间较少;该定时器管理模块,也适合于与位图技术结合(用位图数据结构中一位标记是否某个时间槽内有等待事件,如果时间槽为空,即没有等待事件,利用位图算法很快地跳过这些空槽),从而很快地跳过没有定时事件的时间槽。综上所述,本发明各实施例的定时器管理模块,至少具有以下特点
⑴创建定时器时间复杂度为0(1):时间复杂度较低,不需要依赖于已创建的定时器的个数;
⑵删除定时器可以简单地实现即清除其定时溢出回调函数,而不用操作该定时器结 构,时间复杂度也为0(1);
⑶定时器溢出检查大部分时间复杂度为0(1):软件QoS用定时器的定时时间较短,绝大部部分在第一、二级时间轮内解决;这个时间为常数,因为根据该定时器管理模块的结构,前两级牺牲些内存,使用复合结构赢得了时间;只有不常见的长时间定时才会触及三级以上,虽然三级以上的长定时事件在执行前需要移到前两级,但是这不经常发生;
⑷良好的规模扩展性和限定的内存使用因为三级以上为单时间轮,占据内存空间有
限;
(5)周期定时器支持可以简单地实现为当一次性定时器溢出后,创建新的一次性定时器。最后应说明的是以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种定时器管理模块,其特征在于,包括处理事件的紧急程度自前至后依次降低、且包含的时间单位自前至后依次增大的多级时间轮;在所述多级时间轮中,后级时间轮的始端,挂接在与该后级时间轮相邻的前级时间轮的末端。
2.根据权利要求I所述的定时器管理模块,其特征在于,所述多级时间轮,至少包括依次挂接的第一级时间轮、第二级时间轮与第三级时间轮,其中 所述第一级时间轮,用于采用单时间轮结构,对当前活跃的短定时事件,根据预先设定的紧急程序进行处理; 所述第二级时间轮,用于采用复合时间轮结构,对当前等待的短定时事件处理时机的紧急程序进行排布;并在相应短定时事件的处理时机到来时,将该相应短定时事件前移至第一级时间轮,根据第一级时间轮中预先设定的紧急程序进行处理; 所述第三级时间轮,用于采用单时间轮结构,对当前等待的长定时事件,根据预先设定的紧急程序依次迁移至第二级时间轮及第一级时间轮,根据第一级时间轮中预先设定的紧急程序进行处理。
3.根据权利要求2所述的定时器管理模块,其特征在于,所述第一级时间轮,包括构成单时间轮结构、且分别对应定时器的分辨率时间单位的第I至第256时间槽,所述第I至第256时间槽的索引依次为0-255。
4.根据权利要求3所述的定时器管理模块,其特征在于,在所述第I至第256时间槽中每个时间槽的下方,均挂接有与相应时间槽对应、且通过链表连接的定时事件。
5.根据权利要求2或3所述的定时器管理模块,其特征在于,所述第二级时间轮,包括构成复合时间轮结构的主时间轮,以及分别与所述主时间轮中每个时间槽对应、且依次挂接在所述主时间轮中多个时间槽下方的多个子时间轮。
6.根据权利要求5所述的定时器管理模块,其特征在于,所述主时间轮,包括索引依次为0-63的第I至第64时间槽;所述主时间轮中的第I时间槽,与第一级时间轮的第256时间槽挂接; 所述多个子时间轮,包括依次挂接在第I至第64时间槽下方的第I至第64子时间轮。
7.根据权利要求6所述的定时器管理模块,其特征在于,在所述第I至第64子时间轮中,每个子时间轮的结构与第一级时间轮的结构相同,即每个子时间轮包括索引依次为0-255的第I至第256时间槽。
8.根据权利要求7所述的定时器管理模块,其特征在于,在所述第I至第256时间槽中每个时间槽的下方,均挂接有与相应时间槽对应、且通过链表连接的定时事件。
9.根据权利要求2或3或6所述的定时器管理模块,其特征在于,所述第三级时间轮,包括构成单时间轮结构的第I至第64时间槽,所述第I至第64时间槽的索引依次为0-63 ;所述第三级时间轮的第I时间槽,与第二级时间轮中主时间轮的第64时间槽挂接。
10.根据权利要求9所述的定时器管理模块,其特征在于,在所述第I至第64时间槽中每个时间槽的下方,均挂接有与相应时间槽对应的定时事件链; 与所述第I至第64时间槽对应的第I至第64定时事件链,用于在相应的处理时机到来时,根据预设的紧急程序前移至第二级时间轮中对应的子时间轮中,再根据第一级时间轮中预设的紧急程序进行处理。
全文摘要
本发明公开了一种定时器管理模块,典型的应用包括软件QoS、网络数据流定时溢出管理等,包括处理事件的紧急程度自前至后依次降低、且包含的时间单位自前至后依次增大的多级时间轮;在所述多级时间轮中,后级时间轮的始端,挂接在与该后级时间轮相邻的前级时间轮的末端。本发明所述定时器管理模块,可以克服现有技术中占用内存空间大、溢出检查时间长与难以确定当前活跃事件的处理时机等缺陷,以实现占用内存空间小、溢出检查时间短、扩展性强、以及易确定当前活跃事件的处理时机的优点。
文档编号H04L29/06GK102752282SQ201210174020
公开日2012年10月24日 申请日期2012年5月30日 优先权日2012年5月30日
发明者刘德明, 马骏 申请人:苏州云初网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1