CN113742042B - 一种定时器处理方法、装置、设备及可读存储介质 - Google Patents

一种定时器处理方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN113742042B
CN113742042B CN202110987948.0A CN202110987948A CN113742042B CN 113742042 B CN113742042 B CN 113742042B CN 202110987948 A CN202110987948 A CN 202110987948A CN 113742042 B CN113742042 B CN 113742042B
Authority
CN
China
Prior art keywords
timer
time
environment variable
queues
queue
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.)
Active
Application number
CN202110987948.0A
Other languages
English (en)
Other versions
CN113742042A (zh
Inventor
吴庆凯
孙明刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202110987948.0A priority Critical patent/CN113742042B/zh
Publication of CN113742042A publication Critical patent/CN113742042A/zh
Application granted granted Critical
Publication of CN113742042B publication Critical patent/CN113742042B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种定时器处理方法、装置、设备及可读存储介质,方法包括:获取根据***对定时器分辨率的需求设置的环境变量,根据环境变量及CPU的频率设定定时器的分辨率级别;从各分辨率级别的定时器中选取各定时任务对应的定时器,并根据各定时任务设定其对应的定时器的触发时间;根据环境变量确定***的当前时间是否达到环境变量对应的定时器的触发时间,若是,则执行达到触发时间的定时器对应的定时任务。本申请公开的技术方案,根据所设置的环境变量实现对定时器分辨率级别的设置,并从各分辨率级别的定时器中选取分辨率级别能够满足定时任务的需求的定时器,以使得设定好触发时间的定时器能够更好地满足***中定时任务的需求。

Description

一种定时器处理方法、装置、设备及可读存储介质
技术领域
本申请涉及存储***技术领域,更具体地说,涉及一种定时器处理方法、装置、设备及可读存储介质。
背景技术
在存储***中,一个数据I/O(Input/Output,输入/输出)在后端的处理中会经历存储卷、存储池、raid(Redundant Arrays of Independent Disks,磁盘阵列)、存储盘等多个操作阶段,I/O流通的每个阶段都需要对时间有严格的要求,需要不同分辨率的定时器记录响应时间。
目前,现有一般是直接将预先设置好统一分辨率的定时器应用到***中,但是,这种方式会存在定时器分辨率无法恰好满足定时任务需求问题,例如:会因定时器分辨率过小而导致定时任务频繁执行,从而造成资源的浪费,或者会因定时器分辨率过大而导致定时任务无法更好地进行执行。
综上所述,如何使得定时器能够更好地满足***需求,是目前本领域技术人员亟待解决的技术问题。
发明内容
有鉴于此,本申请的目的是提供一种定时器处理方法、装置、设备及可读存储介质,用于使得定时器能够更好地满足***需求。
为了实现上述目的,本申请提供如下技术方案:
一种定时器处理方法,包括:
获取根据***对定时器分辨率的需求设置的环境变量,根据所述环境变量及CPU的频率设定定时器的分辨率级别;
从各所述分辨率级别的定时器中选取各定时任务对应的定时器,并根据各所述定时任务设定其对应的所述定时器的触发时间;
根据所述环境变量确定所述***的当前时间是否达到所述环境变量对应的定时器的触发时间,若是,则执行达到触发时间的定时器对应的定时任务。
优选的,在根据各所述定时任务设定其对应的所述定时器的触发时间之后,还包括:
创建与各分辨率级别对应的定时器队列及线程;
利用所述线程将对应分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中。
优选的,在创建与各分辨率级别对应的线程之后,还包括:
若所述CPU的核心数量大于所述线程的数量,则将各所述线程与所述CPU的不同核心进行绑定。
优选的,创建与各分辨率级别对应的定时器队列,包括:
分别创建与各分辨率级别对应的多个定时器队列;
根据所述***从启动到队列创建完成时间之间的运行时长及各分辨率级别对应的所述环境变量,对应确定各分辨率级别对应的多个定时器队列中第一个定时器队列的参考时间;
根据所述CPU的频率、线程调度周期及各分辨率级别对应的所述环境变量,对应确定各分辨率级别对应的多个定时器队列中相邻两个定时器队列间的参考时间间隔,并根据所述参考时间间隔确定对应的多个定时器队列中除第一个定时器队列之外的其余定时器队列的参考时间;
利用所述线程将对应分辨率的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中,包括:
根据各分辨率级别的定时器的触发时间、各分辨率级别对应的各定时器队列的参考时间,利用对应所述线程将各分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中。
优选的,还包括:
若存在触发时间不在对应的多个定时器队列管理的时间范围内的暂不满足定时器,则将所述暂不满足定时器按照触发时间从前往后的顺序存储在定时器暂存链表中;
判断所述定时器暂存链表中是否存在触发时间处于对应的多个定时器队列管理的时间范围内的目标定时器;
若是,则根据所述目标定时器的触发时间及对应的多个定时器队列的参考时间,将所述目标定时器加入到对应的定时器队列中。
优选的,还包括:
将各分辨率级别对应的多个定时器队列中的第一个定时器队列对应作为各所述分辨率级别的当前处理队列;
根据所述环境变量确定所述***的当前时间是否达到所述环境变量对应的定时器的触发时间,包括:
将所述***从启动到所述当前时间之间的当前运行时长与所述环境变量的比值、所述环境变量对应的分辨率级别的当前处理队列的参考时间进行比较;
若所述当前处理队列的参考时间小于所述比值且所述比值与所述当前处理队列的参考时间的时间差小于对应的所述参考时间间隔,则将所述当前处理队列中触发时间小于所述比值的定时器确定为达到触发时间的定时器;
若所述当前处理队列的参考时间小于所述比值且所述比值与所述当前处理队列的参考时间的时间差大于或等于对应的所述参考时间间隔,则根据所述环境变量对应的分辨率级别对应的定时器队列的个数及对应的所述参考时间间隔对所述当前处理队列的参考时间进行更新,并将所述环境变量对应的分辨率级别对应的多个定时器队列中的下一个定时器队列作为所述当前处理队列,且返回执行所述将所述***从启动到所述当前时间之间的当前运行时长与所述环境变量的比值、所述环境变量对应的分辨率级别的当前处理队列的参考时间进行比较的步骤,直至所述当前处理队列中存在触发时间大于所述比值的定时器为止。
一种定时器处理装置,包括:
设定模块,用于获取根据***对定时器分辨率的需求设置的环境变量,根据所述环境变量及CPU的频率设定定时器的分辨率级别;
选取模块,用于从各所述分辨率级别的定时器中选取各定时任务对应的定时器,并根据各所述定时任务设定其对应的所述定时器的触发时间;
执行模块,用于根据所述环境变量确定所述***的当前时间是否达到所述环境变量对应的定时器的触发时间,若是,则执行达到触发时间的定时器对应的定时任务。
优选的,还包括:
创建模块,用于在根据各所述定时任务设定其对应的所述定时器的触发时间之后,创建与各分辨率级别对应的定时器队列及线程;
加入模块,用于利用所述线程将对应分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中。
一种定时器处理设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任一项所述的定时器处理方法的步骤。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的定时器处理方法的步骤。
本申请提供了一种定时器处理方法、装置、设备及可读存储介质,其中,该方法包括:获取根据***对定时器分辨率的需求设置的环境变量,根据环境变量及CPU的频率设定定时器的分辨率级别;从各分辨率级别的定时器中选取各定时任务对应的定时器,并根据各定时任务设定其对应的定时器的触发时间;根据环境变量确定***的当前时间是否达到环境变量对应的定时器的触发时间,若是,则执行达到触发时间的定时器对应的定时任务。
本申请公开的上述技术方案,通过获取预先根据***对定时器分辨率的需求设置的环境变量,并根据所获取的环境变量及CPU的频率来设定定时器的分辨率级别,以实现对定时器分辨率的灵活更改和设置,从而提高定时器分辨率设置的灵活性,而且在根据环境变量设定好定时器的分辨率级别之后,从各分辨率级别的定时器中选取分辨率级别能够满足定时任务的需求的定时器,以确定各定时任务对应的定时器,并根据定时任务的需求设定与定时任务对应的定时器的触发时间,以使得设定好触发时间的定时器能够更好地满足定时任务的需求,即使得定时器能够更好地满足***对定时器的需求,从而使得定时任务能够基于对应的定时器准确地进行执行,进而提高***中各定时任务的执行性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种定时器处理方法的流程图;
图2为本申请实施例提供的分辨率级别为微秒级别对应的多个定时器队列的示意图;
图3为本申请实施例提供的定时器暂存链表的结构示意图;
图4为本申请实施例提供的一种定时器处理装置的结构示意图;
图5为本申请实施例提供的一种定时器处理设备的结构示意图。
具体实施方式
在存储领域中,一个数据I/O在后端的处理过程中会经历存储卷、存储池、raid、存储盘等多个操作阶段,I/O流通的每个阶段都对时间的把控有严格的要求,需要大量不同的不同分辨率的定时器记录各模块的响应时间。其中,定时器的分辨率指的是定时器的计时精度。目前,现有一般是采用固定且统一分辨率的定时器应用到***中,但是,固定且统一分辨率的定时器可能无法恰好满足定时任务的需求,例如:如果定时任务的定时需求为毫秒级,而所应用的定时器的分辨率为微秒级,这就会导致定时任务频繁执行,从而会导致资源的浪费,并会导致CPU压力比较大;如果定时任务的定时需求为纳秒级,而所应用的定时器的分辨率为μs级,这就会导致定时任务无法更好地进行执行,也即现有采用固定且统一分辨率的定时器无法更好地满足***的需求。
为此,本申请提供一种定时器处理方法、装置、设备及可读存储介质,用于使得定时器能够更好地满足***需求。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,其示出了本申请实施例提供的一种定时器处理方法的流程图,本申请实施例提供的一种定时器处理方法,可以包括:
S11:获取根据***对定时器分辨率的需求设置的环境变量,根据环境变量及CPU的频率设定定时器的分辨率级别。
首先,可以预先根据***对定时器分辨率的需求而设置环境变量RF_TICK,其中,这里提及的***对定时器分辨率的需求具体可为存储***中的存储软件站(即为I/O流通的各个操作阶段)中各定时任务对定时器分辨率的需求。
然后,获取预先所设置的环境变量RF_TICK,并根据环境变量RF_TICK及CPU的频率设定定时器的分辨率级别,其中,每个环境变量对应设定一种分辨率级别的定时器,具体地,定时器分辨率级别等于RF_TICK/CPU的频率。本申请中的定时器以reference tick(参考心跳)为基准心跳(时间粒度),每个reference tick受到CPU频率的限制,同时通过设置环境变量RF_TICK的方式对基准心跳的周期加以明确,例如:对于2GHz频率的CPU,其每微秒的振动次数为2000次,若环境变量RF_TICK设置为2,则定时器分辨率级别即为1纳秒,若环境变量RF_TICK设置为2000,则定时器分辨率级别即为1微秒。
由此可见,本申请可以通过设置环境变量RF_TICK的方式灵活地改变定时器的分辨率。
S12:从各分辨率级别的定时器中选取各定时任务对应的定时器,并根据各定时任务设定其对应的定时器的触发时间。
在根据环境变量设定定时器的分辨率级别之后,根据***中各定时任务的需求,从得到的各分辨率级别的定时器中选取分辨率级别满足定时任务的需求的定时器,以确定各定时任务分别对应的定时器,从而使得所确定出的与定时任务对应分辨率级别的定时器能够更好地满足定时任务的需求。
在确定出定时任务对应的定时器之后,可以根据定时任务的需求设定定时任务对应的定时器的触发时间,也即可以根据定时任务对执行时间的需求而设定与其对应且分辨率级别能够满足需求的定时器的触发时间,从而使得设定好触发时间的定时器能够更好地满足定时任务的需求。
S13:根据环境变量确定***的当前时间是否达到环境变量对应的定时器的触发时间,若是,则执行达到触发时间的定时器对应的定时任务。
在步骤S11和步骤S12的基础上,可以获取***的当前时间,并结合环境变量RF_TICK确定***的当前时间是否达到环境变量对应的分辨率级别的定时器的触发时间,例如对于RF_TICK=2000的环境变量,其对应分辨率级别为微秒级别的定时器,则可以根据RF_TICK=2000及***的当前时间确定分辨率级别为微秒级别的定时器中是否存在达到触发时间的定时器,若确定存在达到触发时间的定时器,则执行达到触发时间的定时器对应的定时任务。
通过上述过程可知,本申请是实现一种软定时器机制,且在该软定时器机制中,不仅可以实现对定时器分辨率级别的灵活设置,而且使得所设定分辨率级别的定时器能够更好地满足定时任务的需求,以使得定时任务可以更好地进行执行。
本申请公开的上述技术方案,通过获取预先根据***对定时器分辨率的需求设置的环境变量,并根据所获取的环境变量及CPU的频率来设定定时器的分辨率级别,以实现对定时器分辨率的灵活更改和设置,从而提高定时器分辨率设置的灵活性,而且在根据环境变量设定好定时器的分辨率级别之后,从各分辨率级别的定时器中选取分辨率级别能够满足定时任务的需求的定时器,以确定各定时任务对应的定时器,并根据定时任务的需求设定与定时任务对应的定时器的触发时间,以使得设定好触发时间的定时器能够更好地满足定时任务的需求,即使得定时器能够更好地满足***对定时器的需求,从而使得定时任务能够基于对应的定时器准确地进行执行,进而提高***中各定时任务的执行性能。
本申请实施例提供的一种定时器处理方法,在根据各定时任务设定其对应的定时器的触发时间之后,还可以包括:
创建与各分辨率级别对应的定时器队列及线程;
利用线程将对应分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中。
在本申请中,在根据各定时任务设定其对应的定时器的触发时间之后,可以创建与各分辨率级别对应的定时器队列及线程,也即每个分辨率级别分别对应有自己的定时器队列及线程,其中,定时器队列可以将不同分辨率级别的定时器区分开,与分辨率级别对应的线程则可以实现对对应定时器的管理(这里提及的管理包含但不限于将对应的定时器加入定时器队列、判断是否达到对应定时器的触发时间),例如:微秒级别对应的线程可以实现对微秒级别的定时器的管理。
在创建完定时器队列及线程之后,可以利用线程将与其对应的分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中,例如利用分辨率级别为微秒级别对应的线程将分辨率级别为微秒级别的定时器按照触发时间从前往后的顺序加入到分辨率级别为微秒级别对应的定时器队列中,对于其他分辨率级别的定时器则按照与此类似的方式进行处理,以使得不同分辨率级别的定时器加入到对应的定时器队列中,从而将不同分辨率级别的定时器区分开,并便于实现对不同分辨率级别的定时器的高效管理。
本申请实施例提供的一种定时器处理方法,在创建与各分辨率级别对应的线程之后,还可以包括:
若CPU的核心数量大于线程的数量,则将各线程与CPU的不同核心进行绑定。
在本申请中,在创建与各分辨率级别对应的线程之后,若CPU的核心数量大于线程的数量,则可以将所创建的各线程与CPU的不同核心进行绑定,也即每个线程可以分别绑定一个CPU核心(每个线程所绑定的CPU核心不同),以使得所创建的线程可以独占一个CPU核心进行使用和管理定时器队列,以提高管理的高效性和便利性。
需要说明的是,若CPU的核心数量未大于所创建的CPU核心数量,则可以不再进行线程与CPU核心的绑定,以避免对CPU的其他业务造成影响。
本申请实施例提供的一种定时器处理方法,创建与各分辨率级别对应的定时器队列,可以包括:
分别创建与各分辨率级别对应的多个定时器队列;
根据***从启动到队列创建完成时间之间的运行时长及各分辨率级别对应的环境变量,对应确定各分辨率级别对应的多个定时器队列中第一个定时器队列的参考时间;
根据CPU的频率、线程调度周期及各分辨率级别对应的环境变量,对应确定各分辨率级别对应的多个定时器队列中相邻两个定时器队列间的参考时间间隔,并根据参考时间间隔确定对应的多个定时器队列中除第一个定时器队列之外的其余定时器队列的参考时间;
利用线程将对应分辨率的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中,可以包括:
根据各分辨率级别的定时器的触发时间、各分辨率级别对应的各定时器队列的参考时间,利用对应线程将各分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中。
在本申请中,在创建与各分辨率级别对应的定时器队列时,可以分别创建与各分辨率级别对应的多个定时器队列,也即每个分辨率级别可以对应有多个定时器队列,例如如图2所示,其示出了本申请实施例提供的分辨率级别为微秒级别对应的多个定时器队列的示意图,需要说明的是,图2是以50个定时器队列为例进行说明,但不限定仅能包含50个定时器队列,且如图2所示,每个定时器队列均对应的队列参数,其中,队列参数具体包括节点链表指针(Ss_slist_node)、参考时间、自旋锁(spin_lock)。
在创建完与分辨率级别对应的多个定时器队列之后,可以利用TSC(Time StampCounter,时间戳计数器)从***中获取***从启动到队列创建完成时间(这里提及的队列创建完成时间是创建完定时器队列时***对应的时间)之间的运行时长,其中,利用TSC所获取到的是纳秒级或比纳秒级更好级别的运行时长。在获取***从启动到队列创建完成时间之间的运行时长之后,可以根据所获取的运行时长以及各分辨率级别分别对应的环境变量,将运行时长/环境变量的值对应作为各分辨率级别对应的多个定时器队列中第一个定时器队列的参考时间,例如:对于微秒级别这一分辨率级别,则可以利用***的运行时长/RF_TICK=2000所得到的值作为微秒级别对应的多个定时器队列中第一个定时器队列的参考时间(reference_time)。
然后,可以根据CPU的频率、线程调度周期(一般为10ms)及各分辨率级别对应的环境变量RF_TICK,利用((CPU的频率/RF_TICK)/一秒中包含的线程调度周期的个数)/分辨率级别对应的定时器队列的个数,对应确定各分辨率级别对应的多个定时器队列中相邻两个定时器队列间的参考时间间隔,例如:对于CPU频率为2GHz、环境变量RF_TICK为2000(对应的分辨率级别为微秒级别)、线程调度周期为10ms、微秒级别对应的定时器队列为50个,则可以利用((CPU的频率/RF_TICK)/(一秒中包含的线程调度周期的个数))/分辨率级别对应的定时器队列的个数=((2*109/2000)/100)/50=200微秒。
在确定出各分辨率级别对应的多个定时器队列中相邻两个定时器队列间的参考时间间隔之后,则可以在各分辨率级别对应的第一个定时器队列的参考时间的基础上依次加上对应倍数的参考时间间隔而对应确定各分辨率级别对应的多个定时器队列中除第一个定时器队列之外的其余定时器队列的参考时间。例如对于微秒级别,则在确定第一个定时器队列的参考时间及参考时间间隔之后,可以在第一个定时器队列的参考时间基础上加上200得到第二个定时器队列的参考时间,在第一个定时器队列的参考时间的基础上加200*2得到第三个定时器队列的参考时间……直至确定出最后一个定时器队列的参考时间为止。
在上述基础上,则线程将对应分辨率的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中,具体即为根据各分辨率级别的定时器的触发时间、各分辨率级别对应的各定时器队列的参考时间,利用对应的线程确定各分辨率的定时器在对应的多个定时器队列中所归属的定时器队列,并按照定时器触发时间从前往后的顺序加入到所归属的定时器队列中,以使得各分辨率级别的定时器加入对应的定时器队列中,例如对于微秒级别,若存在某一微秒级别的定时器的触发时间为***时间的900微秒,微秒级别对应的多个定时器中第二个定时器队列的参考时间为800微秒(则可知第二个定时器队列的时间范围为800微秒~1000微秒),则可以确定上述触发时间为***时间的900微秒的定时器归属于对应的多个定时器队列中的第二个定时器队列,此时,微秒级别对应的线程则可以将该定时器加入到第二个定时器队列中,同时若第二个定时器队列中已有定时器存在,则需要按照触发时间的先后顺序加入到对应的位置。
通过设置多个定时器队列,并将定时器按照触发时间与定时器队列的参考时间的关系加入到定时器队列中可以便于提高定时器的管理效率和执行效率。
另外,需要说明的是,可以在定时器队列中设置互斥锁(lock),在利用对应线程将各分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中时,对应的线程只有在获取该定时器队列的互斥锁之后,才按照触发时间从前往后的顺序加入到对应的定时器队列中。
本申请实施例提供的一种定时器处理方法,还可以包括:
若存在触发时间不在对应的多个定时器队列管理的时间范围内的暂不满足定时器,则将暂不满足定时器按照触发时间从前往后的顺序存储在定时器暂存链表中;
判断定时器暂存链表中是否存在触发时间处于对应的多个定时器队列管理的时间范围内的目标定时器;
若是,则根据目标定时器的触发时间及对应的多个定时器队列的参考时间,将目标定时器加入到对应的定时器队列中。
在本申请中,在根据各分辨率级别的定时器的触发时间、各分辨率级别对应的各定时器队列的参考时间,利用对应线程将各分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中时,若对应线程发现存在触发时间不在对应的多个定时器队列管理的时间范围内的暂不满足定时器(暂不满足定时器即为触发时间不在对应的多个定时器队列管理的时间范围内的定时器),其中,对应的多个定时器队列管理的时间范围具体是根据定时器队列的参考时间及时间间隔确定的,具体而言,对应的多个定时器队列管理的时间范围是第一个队列的参考时间~线程调度周期+第一个队列的参考时间,也即若存在触发时间未落在对应的多个定时器队列对应的时间范围内的暂不满足定时器,则可以将暂不满足定时器按照触发时间从前往后的顺序存储在定时器暂存链表中,具体可以参见图3,其示出了本申请实施例提供的定时器暂存链表的结构示意图,其中,需要说明的是,为了提高管理的便利性,则各分辨率级别可以分别对应一个定时器暂存链表,以使得对各分辨率级别的暂不满足定时器的存储可以区分开来,进而便于提高后续判断和加入效率。
通过将暂不满足定时器存储在定时器暂存链表中,可以防止这些定时器发生丢失,且便于后续直接基于定时器暂存链表进行判断和加入,以提高判断和加入的效率。
在将暂不满足定时器加入定时器暂存链表的基础上,在执行达到触发时间的定时器对应的定时任务的同时,可以利用对应的线程实时或定时判断定时器暂存链表中是否存在触发时间处于对应的多个定时器队列管理的时间范围的目标定时器,若是,则利用对应线程将目标定时器从定时器暂存链表中摘取下来并根据其触发时间、对应的各定时器队列的参考时间及对应的参考时间间隔,将其加入到与目标定时器对应的定时器队列中,
上述这种设置定时器暂存链表、进行判断和满足时从定时器暂存链表中摘取下来、加入到合适的定时器队列中的机制的优点在于既不限定定时器的数量,又不限定定时器的触发时间。
本申请实施例提供的一种定时器处理方法,还可以包括:
将各分辨率级别对应的多个定时器队列中的第一个定时器队列对应作为各分辨率级别的当前处理队列;
根据环境变量确定***的当前时间是否达到环境变量对应的定时器的触发时间,可以包括:
将***从启动到当前时间之间的当前运行时长与环境变量的比值、环境变量对应的分辨率级别的当前处理队列的参考时间进行比较;
若当前处理队列的参考时间小于比值且比值与当前处理队列的参考时间的时间差小于对应的参考时间间隔,则将当前处理队列中触发时间小于比值的定时器确定为达到触发时间的定时器;
若当前处理队列的参考时间小于比值且比值与当前处理队列的参考时间的时间差大于或等于对应的参考时间间隔,则根据环境变量对应的分辨率级别对应的定时器队列的个数及对应的参考时间间隔对当前处理队列的参考时间进行更新,并将环境变量对应的分辨率级别对应的多个定时器队列中的下一个定时器队列作为当前处理队列,且返回执行将***从启动到当前时间之间的当前运行时长与环境变量的比值、环境变量对应的分辨率级别的当前处理队列的参考时间进行比较的步骤,直至当前处理队列中存在触发时间大于比值的定时器为止。
在本申请中,在创建完对应的多个定时器队列并根据各分辨率级别的定时器的触发时间、各分辨率级别对应的各定时器队列的参考时间,利用对应线程将各分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中之后,则可以将各分辨率级别对应的多个定时器队列中的第一个定时器队列对应作为各分辨率级别的当前处理队列,以便于后续在利用线程确定是否达到对应分辨率级别的定时器的触发时间时可以直接从对应的当前处理队列开始进行确定,以提高定时器管理效率。
另外,在将各分辨率级别对应的多个定时器队列中的第一个定时器队列作为对应的各分辨率级别的当前处理队列的基础上,根据环境变量确定***的当前时间是否达到环境变量对应的定时器的触发时间的过程具体可以为:
利用TSC获取***从启动到当前时间之间的当前运行时长,并利用对应线程将当前运行时长与环境变量的比值(具体为当前运行时长/环境变量)、与环境变量对应的分辨率级别的当前处理队列的参考时间比较;
若当前运行时长与环境变量的比值小于环境变量对应的分辨率级别的当前处理队列的参考时间,则表明***的当前时间还未达到当前处理队列的触发时间,此时,则不对当前处理队列中的定时器进行是否达到触发时间的判断和处理,且不再进行比值与当前处理队列的下一个定时器队列的参考时间的比较,与此同时,可以利用线程查看对应的定时器暂存链表,以判断定时器暂存链表中是否存在触发时间处于对应的多个定时器队列管理的时间范围内的目标定时器。
若与环境变量对应的分辨率级别的当前处理队列的参考时间小于当前运行时长与环境变量的比值,但当前运行时长与环境变量的比值及与环境变量对应的分辨率级别的当前处理队列的参考时间之间的时间差小于与环境变量对应的分辨率级别对应的参考时间间隔,则表明当下应处理当前处理队列中的定时器,此时,则在获取该当前处理队列的互斥锁之后,按照当前处理队列中定时器的排列顺序摘取其上的定时器,并将摘取到的定时器的触发时间和当前运行时长与环境变量的比值进行比较,触发时间较小者则确定为达到触发时间的定时器,并执行达到触发时间的定时器对应的定时任务;对于触发时间大于当前运行时长与环境变量的比值的定时器,则表明***的当前时间还未达到这些定时器的触发时间,因此,则可以不对这些定时器进行处理。其中,在进行定时器摘取时可以仅摘取触发时间小于当前运行时长与环境变量的比值的定时器。
若与环境变量对应的分辨率级别的当前处理队列的参考时间小于当前运行时长与环境变量的比值,且当前运行时长与环境变量的比值及与环境变量对应的分辨率级别的当前处理队列的参考时间之间的时间差大于或等于对应的参考时间间隔,则可以根据环境变量对应的分辨率级别所对应的定时器队列的个数及定时器队列对应的参考时间间隔,利用参考时间=参考时间+定时器队列的个数*定时器队列对应的参考时间间隔,对当前处理队列的参考时间进行更新,并将环境变量对应的分辨率级别所对应的多个定时器队列中位于当前处理队列的后一个定时器队列作为当前处理队列,即将当前处理队列指向其对应的定时器队列中的下一个定时器队列,并返回执行将***从启动到当前时间之间的当前运行时长与环境变量的比值、环境变量对应的分辨率级别的当前处理队列的参考时间进行比较的步骤,直至当前处理队列中存在触发时间大于当前运行时长与环境变量的比值为止,也即直至当前处理队列中存在没有达到触发时间的定时器为止。线程执行完达到触发时间的定时器后,可以返回执行判断定时器暂存链表中是否存在触发时间处于对应的多个定时器队列管理的时间范围内的目标定时器的步骤,以便于及时发现目标定时器并及时将目标定时器加入到对应的定时器队列中。
通过上述设置当前处理队列以及进行对应比较的过程可以便于提高达到触发时间的定时器的确定效率,且无需对所有的定时器队列均进行处理,因此,则可以进一步提高达到触发时间的定时器的确定效率。
本申请实施例还提供了一种定时器处理装置,参见图4,其示出了本申请实施例提供的一种定时器处理装置的结构示意图,可以包括:
设定模块41,用于获取根据***对定时器分辨率的需求设置的环境变量,根据环境变量及CPU的频率设定定时器的分辨率级别;
选取模块42,用于从各分辨率级别的定时器中选取各定时任务对应的定时器,并根据各定时任务设定其对应的定时器的触发时间;
执行模块43,用于根据环境变量确定***的当前时间是否达到环境变量对应的定时器的触发时间,若是,则执行达到触发时间的定时器对应的定时任务。
本申请实施例提供的一种定时器处理装置,还可以包括:
创建模块,用于在根据各定时任务设定其对应的定时器的触发时间之后,创建与各分辨率级别对应的定时器队列及线程;
加入模块,用于利用线程将对应分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中。
本申请实施例提供的一种定时器处理装置,还可以包括:
绑定模块,用于在创建与各分辨率级别对应的线程之后,若CPU的核心数量大于线程的数量,则将各线程与CPU的不同核心进行绑定。
本申请实施例提供的一种定时器处理装置,创建模块可以包括:
创建单元,用于分别创建与各分辨率级别对应的多个定时器队列;
第一确定单元,用于根据***从启动到队列创建完成时间之间的运行时长及各分辨率级别对应的环境变量,对应确定各分辨率级别对应的多个定时器队列中第一个定时器队列的参考时间;
第二确定单元,用于根据CPU的频率、线程调度周期及各分辨率级别对应的环境变量,对应确定各分辨率级别对应的多个定时器队列中相邻两个定时器队列间的参考时间间隔,并根据参考时间间隔确定对应的多个定时器队列中除第一个定时器队列之外的其余定时器队列的参考时间;
加入模块可以包括:
第一加入单元,用于根据各分辨率级别的定时器的触发时间、各分辨率级别对应的各定时器队列的参考时间,利用对应线程将各分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中。
本申请实施例提供的一种定时器处理装置,加入模块还可以包括:
存储单元,用于若存在触发时间不在对应的多个定时器队列管理的时间范围内的暂不满足定时器,则将暂不满足定时器按照触发时间从前往后的顺序存储在定时器暂存链表中;
判断单元,用于判断定时器暂存链表中是否存在触发时间处于对应的多个定时器队列管理的时间范围内的目标定时器;
第二加入单元,用于若定时器暂存链表中存在触发时间处于对应的多个定时器队列管理的时间范围内的目标定时器,则根据目标定时器的触发时间及对应的多个定时器队列的参考时间,将目标定时器加入到对应的定时器队列中。
本申请实施例提供的一种定时器处理装置,创建模块还可以包括:
作为单元,用于将各分辨率级别对应的多个定时器队列中的第一个定时器队列对应作为各分辨率级别的当前处理队列;
执行模块43可以包括:
比较单元,用于将***从启动到当前时间之间的当前运行时长与环境变量的比值、环境变量对应的分辨率级别的当前处理队列的参考时间进行比较;
第三确定单元,用于若当前处理队列的参考时间小于比值且比值与当前处理队列的参考时间的时间差小于对应的参考时间间隔,则将当前处理队列中触发时间小于比值的定时器确定为达到触发时间的定时器;
更新单元,用于若当前处理队列的参考时间小于比值且比值与当前处理队列的参考时间的时间差大于或等于对应的参考时间间隔,则根据环境变量对应的分辨率级别对应的定时器队列的个数及对应的参考时间间隔对当前处理队列的参考时间进行更新,并将环境变量对应的分辨率级别对应的多个定时器队列中的下一个定时器队列作为当前处理队列,且返回执行将***从启动到当前时间之间的当前运行时长与环境变量的比值、环境变量对应的分辨率级别的当前处理队列的参考时间进行比较的步骤,直至当前处理队列中存在触发时间大于比值的定时器为止。
本申请实施例还提供了一种定时器处理设备,参见图5,其示出了本申请实施例提供的一种定时器处理设备的结构示意图,可以包括:
存储器51,用于存储计算机程序;
处理器52,用于执行存储器51存储的计算机程序时可实现如下步骤:
获取根据***对定时器分辨率的需求设置的环境变量,根据环境变量及CPU的频率设定定时器的分辨率级别;从各分辨率级别的定时器中选取各定时任务对应的定时器,并根据各定时任务设定其对应的定时器的触发时间;根据环境变量确定***的当前时间是否达到环境变量对应的定时器的触发时间,若是,则执行达到触发时间的定时器对应的定时任务。
本申请实施例还提供了一种可读存储介质,其特征在于,可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下步骤:
获取根据***对定时器分辨率的需求设置的环境变量,根据环境变量及CPU的频率设定定时器的分辨率级别;从各分辨率级别的定时器中选取各定时任务对应的定时器,并根据各定时任务设定其对应的定时器的触发时间;根据环境变量确定***的当前时间是否达到环境变量对应的定时器的触发时间,若是,则执行达到触发时间的定时器对应的定时任务。
该可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (7)

1.一种定时器处理方法,其特征在于,包括:
获取根据***对定时器分辨率的需求设置的环境变量,根据所述环境变量及CPU的频率设定定时器的分辨率级别;
从各所述分辨率级别的定时器中选取各定时任务对应的定时器,并根据各所述定时任务设定其对应的所述定时器的触发时间;
根据所述环境变量确定所述***的当前时间是否达到所述环境变量对应的定时器的触发时间,若是,则执行达到触发时间的定时器对应的定时任务;
在根据各所述定时任务设定其对应的所述定时器的触发时间之后,还包括:
创建与各分辨率级别对应的定时器队列及线程;
利用所述线程将对应分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中;
创建与各分辨率级别对应的定时器队列,包括:
分别创建与各分辨率级别对应的多个定时器队列;
根据所述***从启动到队列创建完成时间之间的运行时长及各分辨率级别对应的所述环境变量,对应确定各分辨率级别对应的多个定时器队列中第一个定时器队列的参考时间;
根据所述CPU的频率、线程调度周期及各分辨率级别对应的所述环境变量,对应确定各分辨率级别对应的多个定时器队列中相邻两个定时器队列间的参考时间间隔,并根据所述参考时间间隔确定对应的多个定时器队列中除第一个定时器队列之外的其余定时器队列的参考时间;
利用所述线程将对应分辨率的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中,包括:
根据各分辨率级别的定时器的触发时间、各分辨率级别对应的各定时器队列的参考时间,利用对应所述线程将各分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中。
2.根据权利要求1所述的定时器处理方法,其特征在于,在创建与各分辨率级别对应的线程之后,还包括:
若所述CPU的核心数量大于所述线程的数量,则将各所述线程与所述CPU的不同核心进行绑定。
3.根据权利要求1所述的定时器处理方法,其特征在于,还包括:
若存在触发时间不在对应的多个定时器队列管理的时间范围内的暂不满足定时器,则将所述暂不满足定时器按照触发时间从前往后的顺序存储在定时器暂存链表中;
判断所述定时器暂存链表中是否存在触发时间处于对应的多个定时器队列管理的时间范围内的目标定时器;
若是,则根据所述目标定时器的触发时间及对应的多个定时器队列的参考时间,将所述目标定时器加入到对应的定时器队列中。
4.根据权利要求3所述的定时器处理方法,其特征在于,还包括:
将各分辨率级别对应的多个定时器队列中的第一个定时器队列对应作为各所述分辨率级别的当前处理队列;
根据所述环境变量确定所述***的当前时间是否达到所述环境变量对应的定时器的触发时间,包括:
将所述***从启动到所述当前时间之间的当前运行时长与所述环境变量的比值、所述环境变量对应的分辨率级别的当前处理队列的参考时间进行比较;
若所述当前处理队列的参考时间小于所述比值且所述比值与所述当前处理队列的参考时间的时间差小于对应的所述参考时间间隔,则将所述当前处理队列中触发时间小于所述比值的定时器确定为达到触发时间的定时器;
若所述当前处理队列的参考时间小于所述比值且所述比值与所述当前处理队列的参考时间的时间差大于或等于对应的所述参考时间间隔,则根据所述环境变量对应的分辨率级别对应的定时器队列的个数及对应的所述参考时间间隔对所述当前处理队列的参考时间进行更新,并将所述环境变量对应的分辨率级别对应的多个定时器队列中的下一个定时器队列作为所述当前处理队列,且返回执行所述将所述***从启动到所述当前时间之间的当前运行时长与所述环境变量的比值、所述环境变量对应的分辨率级别的当前处理队列的参考时间进行比较的步骤,直至所述当前处理队列中存在触发时间大于所述比值的定时器为止。
5.一种定时器处理装置,其特征在于,包括:
设定模块,用于获取根据***对定时器分辨率的需求设置的环境变量,根据所述环境变量及CPU的频率设定定时器的分辨率级别;
选取模块,用于从各所述分辨率级别的定时器中选取各定时任务对应的定时器,并根据各所述定时任务设定其对应的所述定时器的触发时间;
执行模块,用于根据所述环境变量确定所述***的当前时间是否达到所述环境变量对应的定时器的触发时间,若是,则执行达到触发时间的定时器对应的定时任务;
还包括:
创建模块,用于在根据各所述定时任务设定其对应的所述定时器的触发时间之后,创建与各分辨率级别对应的定时器队列及线程;
加入模块,用于利用所述线程将对应分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中;
所述创建模块包括:
创建单元,用于分别创建与各分辨率级别对应的多个定时器队列;
第一确定单元,用于根据***从启动到队列创建完成时间之间的运行时长及各分辨率级别对应的环境变量,对应确定各分辨率级别对应的多个定时器队列中第一个定时器队列的参考时间;
第二确定单元,用于根据CPU的频率、线程调度周期及各分辨率级别对应的环境变量,对应确定各分辨率级别对应的多个定时器队列中相邻两个定时器队列间的参考时间间隔,并根据参考时间间隔确定对应的多个定时器队列中除第一个定时器队列之外的其余定时器队列的参考时间;
所述加入模块包括:
第一加入单元,用于根据各分辨率级别的定时器的触发时间、各分辨率级别对应的各定时器队列的参考时间,利用对应线程将各分辨率级别的定时器按照触发时间从前往后的顺序加入到对应的定时器队列中。
6.一种定时器处理设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至4任一项所述的定时器处理方法的步骤。
7.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的定时器处理方法的步骤。
CN202110987948.0A 2021-08-26 2021-08-26 一种定时器处理方法、装置、设备及可读存储介质 Active CN113742042B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110987948.0A CN113742042B (zh) 2021-08-26 2021-08-26 一种定时器处理方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110987948.0A CN113742042B (zh) 2021-08-26 2021-08-26 一种定时器处理方法、装置、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN113742042A CN113742042A (zh) 2021-12-03
CN113742042B true CN113742042B (zh) 2023-08-25

Family

ID=78732978

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110987948.0A Active CN113742042B (zh) 2021-08-26 2021-08-26 一种定时器处理方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN113742042B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1474241A (zh) * 2002-08-07 2004-02-11 华为技术有限公司 海量定时器的调度方法
CN1479556A (zh) * 2002-07-16 2004-03-03 雅马哈株式会社 记录/再现与视频或音乐有关的操作信息的设备和方法
CN105700961A (zh) * 2016-02-29 2016-06-22 华为技术有限公司 业务容器创建方法及装置
CN112650566A (zh) * 2020-12-21 2021-04-13 曙光信息产业股份有限公司 定时任务处理方法、装置、计算机设备和存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1479556A (zh) * 2002-07-16 2004-03-03 雅马哈株式会社 记录/再现与视频或音乐有关的操作信息的设备和方法
CN1474241A (zh) * 2002-08-07 2004-02-11 华为技术有限公司 海量定时器的调度方法
CN105700961A (zh) * 2016-02-29 2016-06-22 华为技术有限公司 业务容器创建方法及装置
CN112650566A (zh) * 2020-12-21 2021-04-13 曙光信息产业股份有限公司 定时任务处理方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN113742042A (zh) 2021-12-03

Similar Documents

Publication Publication Date Title
US20180275987A1 (en) Optimization of a software image layer stack
CN102214139B (zh) 一种面向分布式***的自动化测试的执行控制与调度方法
CN110597393A (zh) 一种马达振动控制方法、装置及计算机可读存储介质
CN108491122A (zh) 一种点击事件响应方法、计算机可读存储介质及终端设备
EP3396542A1 (en) Database operating method and device
CN113742042B (zh) 一种定时器处理方法、装置、设备及可读存储介质
CN112083972A (zh) 一种bmc***配置方法、装置、设备及可读存储介质
CN106874343B (zh) 一种时序数据库的数据删除方法及***
Alistarh et al. How to allocate tasks asynchronously
CN111679895A (zh) 分布式定时任务的执行方法、装置、设备及可读存储介质
CN114327259B (zh) 一种闪存通道控制器运行方法、装置、设备及存储介质
CN113672458B (zh) 一种应用程序的监测方法、电子设备及存储介质
CN110688206A (zh) 定时任务调度方法、装置、计算机设备及存储介质
CN110753090A (zh) 服务器集群的任务执行方法、装置、计算机设备及存储介质
CN111309475B (zh) 一种检测任务执行方法及设备
CN113905014A (zh) 用于为终端设备分配id号的方法、服务器和存储介质
CN113110991A (zh) 页面元素的定位方法及装置、存储介质及电子装置
CN112100273A (zh) 集群数据扩容的方法、存储介质
CN112988881A (zh) 一种数据同步方法、装置及计算机可读存储介质
CN111026526A (zh) 程序的定时器配置方法、装置、存储介质及终端设备
CN113504979B (zh) 定时器实现方法、装置、实时操作***及存储介质
CN110674214A (zh) 大数据同步方法、装置、计算机设备及存储介质
CN114356517B (zh) 一种串行总线资源管理方法、***、电子设备及存储介质
CN111930475B (zh) 启动ett运行的方法及装置
CN114780267B (zh) 一种接口调用方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant