CN1852131A - 一种定时器调度方法 - Google Patents
一种定时器调度方法 Download PDFInfo
- Publication number
- CN1852131A CN1852131A CN 200510082628 CN200510082628A CN1852131A CN 1852131 A CN1852131 A CN 1852131A CN 200510082628 CN200510082628 CN 200510082628 CN 200510082628 A CN200510082628 A CN 200510082628A CN 1852131 A CN1852131 A CN 1852131A
- Authority
- CN
- China
- Prior art keywords
- timer
- cycle
- dispatching
- precision
- timers
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种定时器调度方法,通过在每个定时器调度周期内,扫描所有精度小于两个定时器调度周期的定时器,并对所有超时定时器执行超时处理;在n个定时器调度周期内,扫描所有精度大于或等于两个定时器调度周期、且精度相同的同种定时器,并在每个定时器调度周期对在该周期内超时的定时器执行超时处理,其中,n为大于1、且小于或等于该种定时器的精度与定时器调度周期的商的整数。本发明方法对精度大于或等于两个定时器调度周期的定时器进行了分批扫描和超时处理,大大降低了每个定时器调度周期内需同时处理大量超时定时器的可能性,从而降低了在一个定时器调度周期内过度消耗CPU的可能性,避免了定时准确度下降,有效防止了系统崩溃。
Description
技术领域
本发明涉及定时器领域,具体涉及一种定时器调度方法。
背景技术
定时器广泛应用于现代通信系统中。定时器有三种状态:空闲态、等待超时态和超时运行态。定时器的工作过程是:当定时器启动后,从空闲态进入等待超时态;当定时器超时时,从等待超时态进入超时运行态;当定时器进入超时运行态时,需要系统进行相应的超时处理。通常,系统要周期性地扫描定时器,当发现有定时器超时时,就对其执行超时处理,该过程称为定时器调度,将扫描定时器的周期称为定时器调度周期。
现有的定时器调度方法如下:
一、轮循定时器调度方法。该方法在每个定时器调度周期把所有的定时器扫描一次,如果有定时器超时,则执行相应的超时处理。
二、分时定时器调度方法。该方法按照定时器定时时长对定时器分类,同类定时器形成一个链表。每个定时器调度周期扫描每条链表的第一个定时器,如果有定时器超时,则系统对超时定时器所在链表内的所有定时器执行超时处理。
其它的定时器调度方法还包括:差分定时器调度方法、时区缓冲区定时器调度方法。
以上所述方法的共同点是:在每个定时器调度周期,系统要对所有超时的定时器执行完超时处理。
由于在一个定时器调度周期内可能会有大量的定时器超时,因此系统可能需要做大量的超时处理。所以,上述方法的缺点是:在一个调度周期内系统的超时处理过多,导致长时间占用中央处理单元(CPU,Central ProcessingUnit)引起定时器的定时准确度下降,从而影响系统的正常任务调度,进而影响系统其它业务的及时处理,尤其是,随着现代通信系统向下一代网络的演进,通信系统每秒处理的最大呼叫数是以前的数倍甚至数十倍,在每个定时器调度周期内系统需要处理大量超时定时器的可能性也在同步增长。在这种情况下,上述缺点会更加突出,并有可能出现某次定时器调度的超时处理时长过长,导致其它业务处理无法进行,这在实时通信系统中是不能接受的,很有可能引起系统崩溃。
发明内容
有鉴于此,本发明的主要目的在于提供一种定时器调度方法,以减少单位定时器调度周期内的超时处理,从而降低单位定时器调度周期内的CPU消耗及其对定时准确度的影响。
为达到上述目的,本发明的技术方案是这样实现的:
一种应用于具有多个定时器的系统中的定时器调度方法,该方法包括:
在每个定时器调度周期内,扫描所有的精度小于两个定时器调度周期的定时器,并对所有超时的定时器执行超时处理;
在n个定时器调度周期内,扫描所有的精度大于或等于两个定时器调度周期、且精度相同的同种定时器,并在每个定时器调度周期对在该周期内超时的定时器执行超时处理,其中,n为大于1、且小于或等于该种定时器的精度与定时器调度周期的商的整数。
所述在n个定时器调度周期内,扫描所有的精度大于或等于两个定时器调度周期、且精度相同的同种定时器的具体步骤为:
A、将该种精度的定时器分成a部分,且,a为大于1、且小于或等于N的整数,其中,N为该种定时器的精度与定时器调度周期的商向下取整后的值;
B、在N个定时器调度周期内,任选a个定时器调度周期,且在这a个定时器调度周期的每个定时器调度周期内扫描a部分定时器中的一部分,并在每个定时器调度周期对在该周期内超时的定时器执行超时处理。
与现有技术相比,本发明所提供的方法通过在每个定时器调度周期内扫描所有的精度小于两个定时器调度周期的定时器,并对所有超时的定时器执行超时处理;在n个定时器调度周期内,扫描所有的精度大于或等于两个定时器调度周期、且精度相同的同种定时器,并在每个定时器调度周期对在该周期内超时的定时器执行超时处理,且n为大于1、且小于或等于该种定时器的精度与定时器调度周期的商的整数。本发明方法对精度大于或等于两个定时器调度周期的定时器进行了分批扫描和超时处理,大大降低了每个定时器调度周期内需要同时处理大量超时定时器的可能性,从而降低了一个定时器调度周期内过度消耗CPU的可能性,避免了定时准确度下降,有效防止了系统崩溃。
附图说明
图1为本发明提供的实现定时器调度的流程图;
图2为利用本发明的方法实现定时器调度的具体实施例的流程图。
具体实施方式
在系统中虽然可能存在大量定时器,这些定时器的精度即定时时长,有可能是不同的。而且,精度非常高的定时器,例如:10毫秒级的定时器,所占的比重是非常少的。在现代通信系统中,绝大部分定时器都是呼叫相关的定时器,它们的精度级数通常是1秒或100毫秒,即并不需要在每个定时器调度周期都对这些定时器进行扫描。例如:对精度为1秒的定时器来说,只需在每个1秒时长内对其扫描一次即可。
针对以上情况,本发明提出的定时器调度方法的核心思想是:在每个定时器调度周期内,扫描所有的精度小于两个定时器调度周期的定时器,并对所有超时的定时器执行超时处理;在n个定时器调度周期内、扫描所有的精度大于或等于两个定时器调度周期、且精度相同的同种定时器,并在每个定时器调度周期对在该周期内超时的定时器执行超时处理,且n为大于1、且小于或等于该种定时器的精度与定时器调度周期的商的整数。
图1是本发明提供的实现定时器调度的流程图,如图1所示,其具体步骤如下:
步骤101:根据精度将系统中的定时器分为两大类:高精度定时器,即定时器精度小于两个定时器调度周期的定时器;低精度定时器,即定时器精度大于或等于两个定时器调度周期的定时器。
由于定时器调度周期值必须小于或等于定时器的精度,所以将系统中的定时器以定时器调度周期为界限,分成两类:高精度定时器和低精度定时器。
步骤102:根据精度将低精度定时器进一步划分为一种或多种,分别计算每种低精度定时器最多可分成的部分数。
具有相同精度的所有低精度定时器归为同种低精度定时器。
设c为定时器的精度,d为定时器调度周期,则对某种低精度定时器来说,其最多可分成的部分数N为:
1、c/d,当c/d为整数时;
2、对c/d向下取整后的值,当c/d不为整数时。
向下取整是相对于向上取整而言的,即不论c/d的值为多少,其取整后的值都等于其整数部分,例如:对3.8向下取整后的值为3,而向上取整后的值为4。
步骤103:分别将每种低精度定时器分为多个部分。
不同种的低精度定时器可分成的部分数可以相同,也可以不同。对于某种低精度定时器来说,其可分成的部分数a满足条件:a为整数且1<a<=N。
步骤104:在每个定时器调度周期内,扫描所有的高精度定时器,并对所有超时的定时器执行超时处理;对于每种低精度定时器,在大于一个定时器调度周期、且小于或等于N个定时器调度周期内,至少将该精度的所有定时器扫描一遍,并在每个定时器调度周期,对在该周期内超时的定时器执行超时处理。例如:对于某精度的低精度定时器来说,将其分成a部分,且每个定时器调度周期扫描一个部分的定时器,那么,只需在大于或等于a个定时器调度周期、且小于或等于N个定时器调度周期内,任意选择a个定时器调度周期,在这a个定时器调度周期的每个周期内选择一个部分的定时器进行扫描,并在每个定时器调度周期内对在该周期内超时的定时器执行超时处理。当然,若选择的定时器调度周期的个数m大于a,那么在多余的m-a个调度周期的每个周期内可以选择扫描一个部分的定时器,也可以选择不扫描任何定时器。
高精度的定时器必须在一个定时器调度周期内扫描完,是因为:高精度定时器的精度小于两个定时器调度周期,若在大于或等于两个定时器调度周期内将其扫描完毕,那么,很可能有部分定时器在被扫描前已经超时了。例如:定时器调度周期为1秒,某种定时器的精度为1.5秒,那么必须在1个定时器调度周期内将所有该种定时器都扫描完。
精度时长是指与定时器的精度相同的时长。
下面给出一个具体实施例对本发明再作进一步详细的说明。
设某通信系统包含三种精度的定时器,一种为10毫秒,该时间与定时器调度周期相同;一种为100毫秒;一种为1秒。
利用本发明提供的定时器调度方法对这些定时器进行调度时,可分成两大步骤进行,具体如下:
一、首先将所有的定时器分成两大类:
第一类:高精度定时器,即精度为10毫秒的定时器,并将所有的高精度定时器形成队列1。
第二类:低精度定时器,即精度为100毫秒和1秒的定时器。然后,将精度为100毫秒的所有低精度定时器分成n1(1<n1<=10)部分,并形成队列2;将精度为1秒的所有低精度定时器分成n2(1<n2<=100)部分,并形成队列3。
由于100毫秒/10毫秒=10,1秒/10毫秒=100,要保证在低精度定时器的精度时长内将该精度的定时器至少扫描一次,就必须满足:对精度为100毫秒的定时器来说,至多可分成10部分;对精度为1秒的定时器来说,至多可分成100部分。如果将100毫秒和10秒的定时器都分成了n3(1<n3<=10)部分,那么也可将它们作成一个队列。
二、根据分类结果进行定时器调度,具体步骤如图2所示:
步骤201:在一个定时器调度周期内扫描队列1中的所有定时器,和队列2的第m1(1<=m1<=n1)部分定时器以及队列3的第m2(1<=m2<=n2)部分定时器,并对所有超时的定时器执行超时处理。
步骤202:判断系统时间是否为100毫秒的整数倍或系统时间是否是1秒的整数倍,若是100毫秒的整数倍,执行步骤203;若是1秒的整数倍,执行步骤204;若都不成立,执行步骤205。
步骤203:令m1=1,m2=m2+1后,返回步骤201。
步骤204:令m1=m1+1,m2=1后,返回步骤201。
步骤205:令m1=m1+1,m2=m2+1后,返回步骤201。
由图2所示步骤可以看出,在每个定时器调度周期内对所有的高精度定时器,即队列1进行扫描,并对所有超时的高精度定时器执行超时处理;而对于每种低精度定时器,每个定时器调度周期只扫描和处理其中的一部分,对100毫秒和1秒的低精度定时器,即队列2和队列3来说,第1次定时器调度扫描队列2和队列3的第1部分并对超时的定时器执行超时处理,第2次定时器调度扫描队列2和队列3的第2部分并对超时的定时器执行完超时处理,...,对队列2或队列3的所有的定时器都作完扫描和执行完超时处理后,再从该队列的第1部分重新开始,如此往复。同时可以看出,本发明中的低精度定时器,根据精度的不同可以有多个队列,每个队列再分成多个部分。
以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1、一种应用于具有多个定时器的系统中的定时器调度方法,其特征在于,该方法包括:
在每个定时器调度周期内,扫描所有的精度小于两个定时器调度周期的定时器,并对所有超时的定时器执行超时处理;
在n个定时器调度周期内,扫描所有的精度大于或等于两个定时器调度周期、且精度相同的同种定时器,并在每个定时器调度周期对在该周期内超时的定时器执行超时处理,其中,n为大于1、且小于或等于该种定时器的精度与定时器调度周期的商的整数。
2、如权利要求1所述的方法,其特征在于,所述在n个定时器调度周期内,扫描所有的精度大于或等于两个定时器调度周期、且精度相同的同种定时器的具体步骤为:
A、将该种精度的定时器分成a部分,且,a为大于1、且小于或等于N的整数,其中,N为该种定时器的精度与定时器调度周期的商向下取整后的值;
B、在N个定时器调度周期内,任选a个定时器调度周期,且在这a个定时器调度周期的每个定时器调度周期内扫描a部分定时器中的一部分,并在每个定时器调度周期对在该周期内超时的定时器执行超时处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100826281A CN100358295C (zh) | 2005-07-06 | 2005-07-06 | 一种定时器调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100826281A CN100358295C (zh) | 2005-07-06 | 2005-07-06 | 一种定时器调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1852131A true CN1852131A (zh) | 2006-10-25 |
CN100358295C CN100358295C (zh) | 2007-12-26 |
Family
ID=37133601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100826281A Expired - Fee Related CN100358295C (zh) | 2005-07-06 | 2005-07-06 | 一种定时器调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100358295C (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100458706C (zh) * | 2006-12-11 | 2009-02-04 | 宁波菊风系统软件有限公司 | 一种定时器调度方法 |
CN101833355A (zh) * | 2010-05-18 | 2010-09-15 | 北京大学 | 一种通信协议处理器中超时定时器的硬件设计结构 |
CN101996100A (zh) * | 2010-11-30 | 2011-03-30 | 深圳市五巨科技有限公司 | 一种用于移动终端开发系统的任务管理方法及装置 |
CN102117114A (zh) * | 2009-12-30 | 2011-07-06 | 重庆重邮信科通信技术有限公司 | 一种嵌入式设备省电方法 |
WO2012065537A1 (zh) * | 2010-11-19 | 2012-05-24 | 华为终端有限公司 | 一种数据交互的方法及装置 |
CN103617072A (zh) * | 2013-10-23 | 2014-03-05 | 上海寰创通信科技股份有限公司 | 基于多队列的定时时间分解处理的定时器实现方法 |
CN106406997A (zh) * | 2016-09-20 | 2017-02-15 | 杭州华三通信技术有限公司 | 一种定时器调度方法和装置 |
CN111857994A (zh) * | 2020-06-29 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种高精度定时器调度的方法、装置、设备及可读介质 |
CN112711474A (zh) * | 2021-01-12 | 2021-04-27 | 百果园技术(新加坡)有限公司 | 定时器管理方法、装置及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7024481B2 (en) * | 2001-11-01 | 2006-04-04 | Microsoft Corporation | Method and framework for processing network communication protocol timers |
CN1159899C (zh) * | 2002-02-08 | 2004-07-28 | 华为技术有限公司 | 一种定时器调度方法 |
CN1332548C (zh) * | 2002-08-07 | 2007-08-15 | 华为技术有限公司 | 海量定时器的调度方法 |
CN100505811C (zh) * | 2003-11-25 | 2009-06-24 | 中兴通讯股份有限公司 | 多二叉树循环定时器调度方法 |
-
2005
- 2005-07-06 CN CNB2005100826281A patent/CN100358295C/zh not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100458706C (zh) * | 2006-12-11 | 2009-02-04 | 宁波菊风系统软件有限公司 | 一种定时器调度方法 |
CN102117114B (zh) * | 2009-12-30 | 2015-07-01 | 重庆重邮信科通信技术有限公司 | 一种嵌入式设备省电方法 |
CN102117114A (zh) * | 2009-12-30 | 2011-07-06 | 重庆重邮信科通信技术有限公司 | 一种嵌入式设备省电方法 |
CN101833355A (zh) * | 2010-05-18 | 2010-09-15 | 北京大学 | 一种通信协议处理器中超时定时器的硬件设计结构 |
US9203896B2 (en) | 2010-11-19 | 2015-12-01 | Huawei Device Co., Ltd. | Method and apparatus for data interaction |
WO2012065537A1 (zh) * | 2010-11-19 | 2012-05-24 | 华为终端有限公司 | 一种数据交互的方法及装置 |
US9686376B2 (en) | 2010-11-19 | 2017-06-20 | Huawei Device Co., Ltd. | Method and apparatus for data interaction |
CN101996100B (zh) * | 2010-11-30 | 2012-11-07 | 深圳市五巨科技有限公司 | 一种用于移动终端开发系统的任务管理方法及装置 |
CN101996100A (zh) * | 2010-11-30 | 2011-03-30 | 深圳市五巨科技有限公司 | 一种用于移动终端开发系统的任务管理方法及装置 |
CN103617072A (zh) * | 2013-10-23 | 2014-03-05 | 上海寰创通信科技股份有限公司 | 基于多队列的定时时间分解处理的定时器实现方法 |
CN106406997A (zh) * | 2016-09-20 | 2017-02-15 | 杭州华三通信技术有限公司 | 一种定时器调度方法和装置 |
CN106406997B (zh) * | 2016-09-20 | 2020-03-06 | 新华三技术有限公司 | 一种定时器调度方法和装置 |
CN111857994A (zh) * | 2020-06-29 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种高精度定时器调度的方法、装置、设备及可读介质 |
CN111857994B (zh) * | 2020-06-29 | 2022-08-19 | 苏州浪潮智能科技有限公司 | 一种高精度定时器调度的方法、装置、设备及可读介质 |
CN112711474A (zh) * | 2021-01-12 | 2021-04-27 | 百果园技术(新加坡)有限公司 | 定时器管理方法、装置及电子设备 |
CN112711474B (zh) * | 2021-01-12 | 2023-12-08 | 百果园技术(新加坡)有限公司 | 定时器管理方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN100358295C (zh) | 2007-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1852131A (zh) | 一种定时器调度方法 | |
CN1230737C (zh) | 一种设备数据轮询调度方法 | |
CN1873615A (zh) | 一种定时器任务服务方法 | |
CN1870767A (zh) | 对定时器任务进行管理的方法 | |
CN100347675C (zh) | 应用服务器的性能优化方法 | |
EP0798638A3 (en) | Periodic process scheduling method | |
CN1874538A (zh) | 一种呼叫事件并发处理方法 | |
CN102722417A (zh) | 一种扫描任务的分配方法和装置 | |
CN1604042A (zh) | 用于调度作业的方法、调度器以及网络计算机系统 | |
CN1924911A (zh) | 一种实现客户按时间段预约服务的方法 | |
CN100351799C (zh) | 嵌入式实时操作系统中基于消息对象的任务间通信方法 | |
CN1441570A (zh) | 嵌入式实时操作系统中定时器的计时方法 | |
CN100351792C (zh) | 一种实时任务管理与调度方法 | |
CN1855055A (zh) | 减小java虚拟机中由无用单元收集造成的时延的方法 | |
CN111274021A (zh) | 一种gpu集群任务调度分配方法 | |
CN1287291C (zh) | 嵌入式实时操作系统中内存释放的方法 | |
CN1519735A (zh) | 嵌入式实时操作系统的进程调度方法 | |
CN117271137A (zh) | 一种多线程的数据分片并行方法 | |
CN1426215A (zh) | 一种适用于应用服务器的呼叫处理系统及其实现方法 | |
CN1776627A (zh) | 在同时多线程处理机中用于线程同步的方法和系统 | |
CN101853047A (zh) | 一种定时器实现方法及装置 | |
CN1713630A (zh) | 一种触发相对定时器的方法 | |
CN101014176A (zh) | 通信网管系统中一种基于优先级时间链表的采集调度方法 | |
CN110850954A (zh) | 一种基于固定优先级事件触发混合关键偶发任务的能耗优化方法 | |
CN1474241A (zh) | 海量定时器的调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20071226 Termination date: 20130706 |