CN115437755A - 中断调度方法、电子设备及存储介质 - Google Patents
中断调度方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115437755A CN115437755A CN202110613606.2A CN202110613606A CN115437755A CN 115437755 A CN115437755 A CN 115437755A CN 202110613606 A CN202110613606 A CN 202110613606A CN 115437755 A CN115437755 A CN 115437755A
- Authority
- CN
- China
- Prior art keywords
- processor core
- interrupt
- scheduling
- value
- processor
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Multi Processors (AREA)
- Power Sources (AREA)
Abstract
本申请涉及操作系统领域,尤其涉及一种中断调度方法、电子设备及存储介质。所述方法包括:获取预配置的第一时延阈值,第一时延阈值是为第一处理器核配置的中断处理造成的调度时延的最大值;获取第一处理器核的调度时延值,调度时延值用于指示第一处理器核当前的中断负载;在调度时延值大于第一时延阈值的情况下,将第一处理器核当前的部分中断请求迁移绑定至第二处理器核。本申请实施例通过为第一处理器核配置第一时延阈值,使得在第一处理器核的调度时延值大于第一时延阈值的情况下,将第一处理器核当前的部分中断请求迁移绑定至第二处理器核,能够在保证调度时延的基础上,同时保障合理的中断处理吞吐量。
Description
技术领域
本申请涉及操作系统领域,尤其涉及一种中断调度方法、电子设备及存储介质。
背景技术
在电信领域中,越来越多地采用Linux操作系统来实现高实时性业务的处理。
请参考图1,其示出了相关技术中一种采用Linux操作系统来处理高实时性业务的架构示意图。该架构包括硬件层120、内核层140和用户层160。用户层160可以运行有至少一个线程,每个线程用于处理任务。每个线程的任务调度过程和中断处理过程主要由内核层140实现。
目前的中断处理策略主要包括如下两种可能的实现方式,一种可能的实现方式为中断均衡处理,即将中断请求(Interrupt Request,IRQ)相对平均地发送至各个处理器(Central Processing Unit,CPU)核,这种方式可以保证中断处理的吞吐量,但无法解决中断处理引发的调度延时不可控问题;另一种可能的实现方式为中断绑核处理,比如将网卡中断请求预先绑定在某一个处理器核上,使得除了绑定的处理器核以外的其它处理器核上的调度时延可控,但是这种方式下可能出现绑定的处理器核上的中断负载过大,拉高整个集群(cluster)的频率,造成功耗浪费。目前尚未提供一种合理且有效的中断调度方法,能够在保证调度时延的基础上,同时保障合理的中断处理吞吐量。
发明内容
有鉴于此,本申请实施例提出了一种中断调度方法、电子设备及存储介质。本申请实施例通过为第一处理器核配置的中断处理造成的调度时延的最大值即第一时延阈值,使得在第一处理器核的调度时延值大于第一时延阈值的情况下,将第一处理器核当前的部分中断请求迁移绑定至第二处理器核,能够在保证调度时延的基础上,同时保障合理的中断处理吞吐量。
第一方面,本申请的实施例提供了一种中断调度方法,所述方法包括:
获取预配置的第一时延阈值,所述第一时延阈值是为第一处理器核配置的中断处理造成的调度时延的最大值;
获取所述第一处理器核的调度时延值,所述调度时延值用于指示所述第一处理器核当前的中断负载;
在所述调度时延值大于所述第一时延阈值的情况下,将所述第一处理器核当前的部分中断请求迁移绑定至第二处理器核,所述第二处理器核不同于所述第一处理器核。
在该实现方式中,本申请实施例通过为第一处理器核配置的中断处理造成的调度时延的最大值即第一时延阈值,使得在第一处理器核的调度时延值大于第一时延阈值的情况下,将第一处理器核当前的部分中断请求迁移绑定至第二处理器核,保证了第一处理器核上由于中断处理造成的调度时延可控,避免了相关技术中因中断处理引发的调度时延过大的问题,保证了业务处理过程的实时性,提高了电子设备的整体性能。
在一种可能的实现方式中,所述迁移绑定后所述第一处理器核的调度时延值小于或等于所述第一时延阈值。
在该实现方式中,若第一处理器核当前的调度时延值大于第一时延阈值,则将第一处理器核当前的部分中断请求迁移绑定至第二处理器核,使得迁移绑定后第一处理器核的调度时延值小于或等于第一时延阈值,降低了第一处理器核上的调度时延,进一步保证了业务处理过程的实时性。
在另一种可能的实现方式中,所述迁移绑定后其他处理器核的调度时延值之间的差值绝对值均小于预设的第一差值阈值,所述其他处理器核为除所述第一处理器核以外的各个处理器核。
在该实现方式中,还通过将迁出的部分中断请求在其他处理器核集群上合理均摊,使得迁移绑定后其他处理器核的调度时延值之间的差值绝对值均小于预设的第一差值阈值,保证中断处理的并发度,并避免单一处理器核负载过大拉高整个集群的频率,造成功耗浪费的问题。
在另一种可能的实现方式中,所述方法用于包括用户层、内核层和硬件层的电子设备中,所述获取预配置的第一时延阈值,包括:
所述用户层向所述内核层发送第一配置信息,所述第一配置信息包括所述第一处理器核的处理器核标识和所述第一时延阈值;
所述内核层接收所述用户层发送的所述第一配置信息;
所述在所述调度时延值大于所述第一时延阈值的情况下,将所述第一处理器核当前的部分中断请求迁移绑定至第二处理器核,包括:
在所述调度时延值大于所述第一时延阈值的情况下,所述内核层向所述硬件层的中断控制器发送第二配置信息,所述第二配置信息包括所述第一处理器核中待迁出的中断号和所述第二处理器核的处理器核标识;
所述中断控制器根据所述第二配置信息,将所述中断号对应的至少一个中断请求迁移绑定至所述第二处理器核。
在该实现方式中,内核层根据第一处理器核当前的调度时延值和用户层配置的第一时延阈值动态调整中断绑定,若第一处理器核当前的调度时延值大于第一时延阈值,则向硬件层的中断控制器发送第二配置信息,使得中断控制器根据第二配置信息,将中断号对应的至少一个中断请求迁移绑定至第二处理器核,进一步保证了第一处理器核上由于中断处理造成的调度时延可控,提高了电子设备的整体性能。
在另一种可能的实现方式中,所述方法还包括:
在接收到中断请求后获取所述中断请求对应的中断处理时长,所述中断处理时长包括硬中断处理和软中断处理的总时长;
根据所述中断请求的中断处理时长,采用预设算法确定所述中断请求对应的调度时延值;
将所述中断请求对应的调度时延值与所述第一处理器核当前的所述调度时延值进行求和,得到更新后的所述调度时延值。
在该实现方式中,与相关技术中按照处理器核维度统计调度时延值开销的方案相比,本申请实施例通过跟踪计算每个中断请求的负载开销,从而避免过往只能根据中断数量计算负载的粗放算法,支撑更精确的中断均衡处理,将由硬中断处理触发的软中断处理的时间开销一并计入对应的中断处理时长,使得基于中断处理时长确定的调度时延值更加精确,从而后续能够更加准确的进行中断均衡处理。
在另一种可能的实现方式中,所述方法还包括:
获取预配置的第二时延阈值,所述第二时延阈值是为指定线程配置的中断处理造成的调度时延的最大值;
在所述指定线程被唤醒后,将满足预设选核条件的处理器核确定为目标处理器核,所述预设选核条件包括处理器核当前的所述调度时延值小于或等于所述第二时延阈值;
将所述指定线程加入所述目标处理器核的调度队列。
在该实现方式中,任务选核时考虑任务调度时延要求和处理器核的调度时延值,只有处理器核当前的调度时延值小于或等于任务调度时延要求的第二时延阈值时,才可能将该处理器核作为目标处理器核,保证关键的指定线程能够选择到调度时延值低的处理器核上,并得到及时调度。
在另一种可能的实现方式中,所述指定线程包括所述前台应用的绘帧进程和/或进程间通信机制的进程。
在该实现方式中,支持针对任务粒度的调度时延要求配置,将前台/后台线程区分处理,降低后台线程对前台指定线程的影响。
第二方面,本申请的实施例提供了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令时实现上述第一方面或第一方面中的任意一种可能的实现方式所提供的方法。
第三方面,本申请的实施例提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述第一方面或第一方面中的任意一种可能的实现方式所提供的方法。
第四方面,提供了一种中断调度装置,该装置包括至少一个单元,至少一个单元用于实现上述第一方面或第一方面中的任意一种可能的实现方式所提供的方法。
第五方面,本申请的实施例提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述第一方面或第一方面中的任意一种可能的实现方式所提供的方法。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本申请的示例性实施例、特征和方面,并且用于解释本申请的原理。
图1示出了相关技术中一种采用Linux操作系统来处理高实时性业务的架构示意图。
图2示出了相关技术中的Linux内核中的五个调度类的示意图。
图3示出了相关技术中的处理器核的调度队列的示意图。
图4示出了相关技术中Linux操作系统进行中断处理的架构示意图。
图5a示出了采用中断均衡处理的情况下多个处理器核的中断处理耗时的示意图。
图5b示出了采用中断绑核处理的情况下多个处理器核的中断处理耗时的示意图。
图6示出了本申请实施例涉及的电子设备的示意图。
图7示出了本申请一个示例性实施例提供的中断调度方法的流程图。
图8示出了本申请一个示例性实施例提供的调度时延值统计的过程的流程图。
图9示出了本申请一个示例性实施例提供的任务选核过程的流程图。
图10示出了本申请另一个示例性实施例提供的中断调度方法涉及的界面示意图。
图11示出了本申请另一个示例性实施例提供的中断调度方法的流程图。
图12示出了本申请一个示例性实施例提供的指定线程的调度时延的示意图。
图13示出了本申请另一个示例性实施例提供的中断调度方法的流程图。
图14示出了本申请一个示例性实施例提供的中断调度装置的框图。
具体实施方式
以下将参考附图详细说明本申请的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本申请同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本申请的主旨。
首先,对本申请实施例中涉及的一些名词进行介绍。
1、进程:进程是程序处于执行期的一个实体,除了执行代码外,还包括打开的文件、挂起的信号等信息。
2、线程:一个进程中可以包括多个线程,线程之间共享地址空间
3、任务:内核(操作系统的核心)调度对象,可以是进程或线程。比如,Linux内核中统一使用task_struct结构描述进程和线程。
4、调度队列:一个处理器核中包括至少一个调度队列,在一个任务唤醒后,会加入某个处理器核的调度队列等待调度。可选地,任务会按照调度策略加入该处理器核中的面向最后期限调度器的调度队列(Deadline Runqueue,dl_rq)、实时调度器的调度队列(RealTime Runqueue,rt_rq)和完全公平调度器的调度队列(Completely Fair Runqueue,cfs_rq)中的一个调度队列中。
可选地,每个处理器核中包括一个进程队列(Runqueue,rq),用于管理该处理器核中dl_rq、rt_rq和cfs_rq。其中,所有的DL任务运行前都需要加入dl_rq等待调度,所有的RT任务运行前都需要加入rt_rq等待调度,所有的CFS任务运行前都需要加入cfs_rq等待调度。
5、调度时延:一个任务从唤醒并加入调度队列,到实际开始执行的时长。实时系统中调度时延最低可以达到us级别。
6、上下文切换:内核的运行状态之间的切换,和/或,内核在处理器核上对任务进行切换。比如,Linux内核包括以下几种运行状态:用户态,内核态(运行在进程上下文),内核态(运行在中断上下文),这几种运行状态之间的切换,以及任务之间的切换,均称为上下文切换。上下文切换由于需要保存和恢复寄存器、页表等状态信息,存在一定开销。
7、抢占:高优先级任务唤醒后,若当前正在执行的任务优先级较低,则立刻将当前正在执行的任务切换成高优先级任务。这样,高优先级任务就能得到尽快的执行,具有较低的调度时延。
8、关抢占:关闭上述抢占的能力。这是因为内核在处理部分关键资源时,需要避免因抢占引入的并发竞争。
9、吞吐量:系统在单位时间内处理数据量大小。体现了系统的数据处理能力。通常和上下文切换次数成负相关关系,即上下文切换次数越多,吞吐量越低;相反,上下文切换次数越小,吞吐量越高。
10、中断:电子设备在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得处理器暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。引起中断发生的事件被称为中断源。中断源向处理器发出的请求中断处理信号称为中断请求。处理器对中断请求进行处理的过程称为中断处理。
调度子系统是Linux内核中的核心模块之一,调度子系统用于进行任务调度,比如决定待投入执行的任务、该任务的执行开始时刻和执行时长等。当前的Linux内核中,定义了五个调度类,如图2所示。五个调度类分别为停止(STOP)调度类、面向最后期限(Deadline,DL)调度类、实时(Real Time,RT)调度类、完全公平调度器(Completely FairScheduler,CFS)调度类和空闲(IDLE)调度类,其中STOP和IDLE是两个特殊的调度类,不用于调度普通任务。
其中,调度类之间存在优先级顺序。比如,RT调度类和CFS调度类中均有任务等待调度,则内核会优先从RT调度类的调度队列中选择一个任务执行。在RT调度类中的所有任务全部执行完成,或主动让出处理器核(比如睡眠),或RT任务运行时长超过预配置的时长阀值的情况下,CFS调度类中的任务才能得到调度执行。在一些系统(比如安卓系统)中,RT调度类和CFS调度类接管了操作系统中的大部分任务。
CFS调度类是Linux内核默认的调度算法,该算法着重保证调度的公平性,可以保证一定时间内,所有进程都会得到调度。但也正是因为其公平性,即使任务优先级最高,也无法保证该任务始终被优先调度执行(即使将nice值调到-20也无法保证),也就是说,调度时延不可控。
RT调度类是一种严格按照优先级进行调度的算法,某任务唤醒后,若相比当前正在运行任务的优先级高,则会触发对当前运行任务的抢占,让处理器核立刻切换执行被唤醒的高优先级任务,保证了高优先级任务的调度时延。为了保证及时绘制(比如60帧刷新率的手机需在16.7ms中完成一帧的绘制),需要严格保证UI/Render线程、Surfaceflinger线程等指定线程的调度时延,如果调度时延过大,就会因为来不及绘帧,造成卡顿的情况。因此,系统会识别这些指定线程,并将其配置为RT任务。
在一个示意性的例子中,处理器核的调度队列如图3所示。其中,任务的参数prio指示该任务的归一化优先级,取值范围为[0,139]。当参数prio的数值位于[100,139]时指示该任务为CFS调度类管理的任务,当参数prio的数值位于[0,99]时指示该任务为RT调度类管理的任务。参数prio的数值与该任务的优先级呈负相关关系,即参数prio的数值越低,代表该任务的优先级越高,比如,任务1的参数prio为97,任务2的参数prio为98,则任务1的优先级高于任务2的优先级。图3中,处理器核0(简称为核0)当前的调度队列中按照执行顺序依次包括RT调度类管理的任务A(prio=98)、CFS调度类管理的任务X(prio=120)和CFS调度类管理的任务Y(prio=120)。RT调度类管理的任务B(prio=97)唤醒后,在一种可能的实现方式中,若支持高优先级任务抢占低优先级任务,则核0立刻将当前正在执行的任务A切换成高优先级的任务B,切换后核0的调度队列中按照执行顺序依次包括任务B、任务A、任务X和任务Y。在另一种可能的实现方式中,若不支持抢占(即关抢占),则高优先级的任务B无法立刻得到调度,任务B唤醒后仅是加入调度队列,当前执行的任务仍然是任务A,此时核0的调度队列中按照执行顺序依次包括任务A、任务B、任务X和任务Y。
相关技术中,中断处理中为了防止并发,就会执行关抢占操作。期间,若Surfaceflinger线程加入调度队列,但是由于关抢占,无法立刻得到调度。通常会等待一段时间(比如4ms)才能被调度执行,最终导致来不及绘制,产生丢帧情况。在网络流量较大的情况下(比如批量更新应用、下载视频等),软中断处理的调度时延甚至会达到10ms,非常容易出现类似的丢帧和卡顿问题。
在一个示意性的例子中,Linux操作系统进行中断处理的架构示意图如图4所示。中断是一种异步的事件处理机制,用来提高系统的并发处理能力。中断请求发生,会触发执行中断处理程序,而中断处理程序被分为中断上半部和中断下半部这两个部分。中断上半部对应硬中断,用来快速处理中断,比如处理器核根据中断表,调用已经注册的中断函数,这个中断函数会调用驱动程序(Driver)中相应的函数;中断下半部对应软中断,用来异步处理中断上半部未完成的工作。Linux内核中的ksoftirqd进程专门负责软中断的处理,当它收到软中断后,就会调用相应软中断所对应的处理函数,比如net_rx_action函数。目前Surfaceflinger线程无法及时得到调度的主要原因是中断上半部和中断下半部处理均关闭了抢占,而中断下半部处理又耗时较长,等到中断下半部处理完成,开启抢占后,Surfaceflinger线程才会得到调度执行,但已经来不及完成绘帧了。为了解决上述问题,相关技术中一种处理方式是将中断处理线程化,使得中断处理可以被抢占,从而使得高优先级任务能够及时得到调度,有效了降低调度时延。在一种可能的实现方式中,在Linux主线外维护的实时一组补丁(比如PREEMPT_RT补丁),这组补丁将内核的中断处理线程化,并允许中断处理线程被高优先级任务抢占。这样就不会因为中断处理导致高优先级任务无法得到调度,从而降低因中断处理产生的调度时延。
但是在上述方法中,存在如下问题:一方面会因为高优先级任务的抢占导致原中断处理产生延迟,比如本该在100ms触发的时钟中断处理,在105ms才得到执行,那么定时器就会产生5ms的偏差,进而导致对其他业务进程/线程的影响;另一方面,对中断线程的抢占会引入任务上下文的切换,切换是有性能开销的,频繁切换会导致系统吞吐量下降。
为了解决上述问题,相关技术中另一种处理方式是中断绑定方式,即将中断处理绑定目标处理器核,目标处理器核为预先设置的至少一个处理器核;根据处理器核负载将指定线程调度到除目标处理器核以外的其他处理器核上,从而使得除了目标处理器核,其它处理器核上的中断数量可控,调度时延也就可控,不会造成过大的调度时延。
在一个示意性的例子中,电子设备包括8个处理器(核0至核7),如图5a所示,采用的中断处理策略为中断均衡处理,中断处理在每个处理器核上基本均摊,即每个处理器核对应的中断处理耗时(单位为us)是差不多的,这种策略下,中断处理可能会来回迁移,从而导致调度时延不可控。而图5b中,采用的中断处理策略为中断绑核处理,比如将中断处理绑定在核0和核4上(其他处理器核上仍然有中断负载是因为部分中断请求是无法进行绑核的,比如时钟中断)。根据处理器核负载将指定线程调度到除核0和核4以外的其他处理器核上,即可控制其调度时延。
但是在上述方法中,存在如下几个问题:1、会导致中断处理集中在目标处理器核上(如图5b中核0和核4),拉高整个集群的频率,造成功耗浪费(同集群内其他处理器核负载低,但频率高);2、同样因为中断处理集中在目标处理器核上,其他处理器核即使空闲也不会进行处理,系统吞吐量低;3、进行中断绑定前,往往需要针对各外设中断的负载进行评估,按照负载合理进行中断绑定,这种方式缺乏灵活性,假如新增一个外设,就需要重新评估中断的分配,甚至有时原中断也要重新规划绑定.
为此,本申请实施例提供了一种中断调度方法、电子设备及存储介质,以解决上述相关技术中存在的问题。本申请实施例提供的技术方案中,为第一处理器核配置的中断处理造成的调度时延的最大值即第一时延阈值,使得在第一处理器核的调度时延值大于第一时延阈值的情况下,将第一处理器核当前的部分中断请求迁移绑定至第二处理器核,保证了第一处理器核上由于中断处理造成的调度时延可控,避免了相关技术中因中断处理引发的调度时延过大的问题,保证了业务处理过程的实时性,提高了电子设备的整体性能。
在对本申请实施例进行解释说明之前,先对本申请实施例的应用场景进行说明。请参考图6,其示出了本申请实施例涉及的电子设备的示意图。该电子设备包括硬件层610、内核层620和用户层630。用户层630可以运行有至少一个线程,每个线程用于处理任务。每个线程的任务调度过程和中断响应过程主要由内核层620实现。
其中,硬件层610是电子设备中的硬件基础。该电子设备可以是基站设备、传输设备、工业机器人等对任务处理的实时性有一定要求的电子设备。比如,电子设备为手机,本申请实施例提供的中断调度方法可以应用于需要快速响应的应用场景,比如汽车自动驾驶、工业控制、虚拟现实技术(Virtual Reality,VR)等场景,结合业务进程的配置,均可以降低任务调度时延,保障关键任务能够得到及时调度。
硬件层610包括外围设备612、中断控制器614和至少一个处理器616。外围设备612包括无线网卡、蓝牙设备等。处理器616可以是单核心处理器,也可以是多核心处理器。
外围设备612在处理数据时(比如无线网卡收发包)产生中断请求,并通过中断控制器614路由至多个处理器核中的一个处理器核。
内核层620是操作系统内核、虚拟存储空间和驱动应用程序运行的层。比如,操作系统内核为Linux内核。
内核层620包括中断子系统622和调度子系统624。中断子系统622包括中断处理模块640、中断负载收集模块641、中断负载计算模块642、中断负载信息统计模块643、中断负载策略模块644、中断负载均衡执行模块645。调度子系统624包括指定线程配置模块651、任务选核策略模块652和任务调度执行模块653。
中断处理模块640获取处理器核的中断请求,开始中断子系统622中的中断处理,该中断处理包括硬中断处理和软中断处理。
中断负载收集模块641记录中断处理时长,将该中断处理时长发送至中断负载计算模块642。其中,中断处理时长包括硬中断处理和软中断处理的总时长。
中断负载计算模块642根据中断负载收集模块641提供的中断处理时长,采用预设算法确定当前处理器核的调度时延值,计算结果单位为us或ns。
中断负载信息统计模块643保存和汇总处理器核上的调度时延信息,调度时延信息包括处理器核上各个中断请求的调度时延值的汇总信息。
中断负载策略模块644获取用户层630为第一处理器核配置的第一时延阈值,根据中断负载信息统计模块643中保存的调度时延信息和第一时延阈值进行决策。当第一处理器核的调度时延值大于预配置的第一时延阈值时,确定绑核策略,将绑核策略发送至中断负载均衡执行模块645,该绑核策略指示将部分中断请求迁出,绑定至其它的第二处理器核,从而保证第一处理器核的调度时延值小于第一时延阈值。
中断负载均衡执行模块645从中断负载策略模块644处接收绑核策略,根据该绑核策略操作中断控制器614,将对应的中断请求绑定至第二处理器核。
调度子系统624负责系统中所有进程/线程的调度执行。
指定线程配置模块651支持对指定线程配置第二时延阈值。
任务选核策略模块652用于在任务选核流程中,对第一处理器核的中断负载进行检查,当调度时延值小于或等于第二时延阈值时,认为对应的处理器核满足条件,作为第二处理器核进一步筛选。
任务调度执行模块653用于将进程/线程加入对应处理器核的调度队列,由于该处理器核的中断负载已经在上一步完成的检查,因此可以认为对应的进程/线程可以在一定时间内得到调度执行。
用户层630是普通应用程序运行的层。比如,用户层包括应用框架层(比如Framework层)。用户层630包括中断负载管控模块632和指定线程识别/管控模块634。
用户层630负责配置第一处理器核的第一时延阈值,以及指定线程的识别和配置。
中断负载管控模块632负责监控系统中断整体负载,在某个处理器核的中断负载过大时,选择合适的第二处理器核(比如选择当前中断负载较轻的处理器核,可以减少中断的迁移),并为该处理器核配置第一时延阈值,保证每个集群中至少存在一个中断负载可控的处理器核。
指定线程识别/管控模块634负责识别用户层630中负责绘帧的线程(比如UI/Render),并对其配置第二时延阈值。
需要说明的是,上述各功能模块实现的功能可参考下面方法实施例中的相关描述,在此先不介绍。并且,上述实施例提供的电子设备,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将电子设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
下面,采用几个示例性实施例对本申请提供的中断调度方法进行介绍。
请参考图7,其示出了本申请一个示例性实施例提供的中断调度方法的流程图。本申请实施例以该中断调度方法应用于图6所示出的电子设备中来举例说明。该中断调度方法包括:
步骤701,用户层配置第一处理器核的第一时延阈值,向内核层发送第一配置信息。
可选的,用户层确定电子设备内的至少一个处理器核为第一处理器核,为第一处理器核配置的中断处理造成的调度时延的最大值即第一时延阈值。用户层向内核层发送第一配置信息。
示意性的,第一处理器核为一个处理器核,第一配置信息包括第一处理器核的处理器核标识和第一时延阈值。或者,第一处理器核为至少两个处理器核,第一配置信息包括至少两个处理器核标识和各自对应的第一时延阈值,至少两个处理器核标识各自对应的第一时延阈值可以是相同的,也可以是不同的。本申请实施例对此不加以限定,为了方便介绍,仅以第一处理器核为一个处理器核为例进行说明。
其中,处理器核标识用于为在电子设备的多个处理器核中唯一标识第一处理器核,第一时延阈值是为该第一处理器核配置的中断处理造成的调度时延的最大值。该第一时延阈值可以在后续根据各个处理器核内的调度时延值,和/或绘帧完成情况进行动态调整。
步骤702,内核层根据第一配置信息,判断第一处理器核的调度时延值是否大于第一时延阈值。
对应的,内核层接收用户层发送的第一配置信息,该第一配置信息包括第一处理器核的处理器核标识和第一时延阈值。
可选的,内核层在接收到用户层发送的第一配置信息或者在对各个处理器核的调度时延值进行信息更新时,判断第一处理器核的调度时延值是否大于第一时延阈值,若第一处理器核当前的调度时延值小于或者等于第一时延阈值则结束本实施例的流程,若第一处理器核的调度时延值大于第一时延阈值则执行步骤703。
其中,第一处理器核的调度时延值用于指示第一处理器核当前的中断负载。可选地,调度时延值与中断负载呈正相关关系,即中断负载越大,调度时延值越大。
可选地,第一处理器核的调度时延值是第一处理器核当前的调度时延的实际值或者估计值。示意性的,第一处理器核的调度时延值是基于第一处理器核当前的中断处理时长确定的调度时延的估计值。
需要说明的是,内核层确定第一处理器核的调度时延值的过程,可参考下面实施例中的相关描述,在此先不介绍。
步骤703,若第一处理器核的调度时延值大于第一时延阈值,则内核层进行中断均衡处理,向中断控制器发送第二配置信息。
若第一处理器核当前的调度时延值大于第一时延阈值,则内核层确定中断均衡策略,向中断控制器发送指示中断均衡策略的第二配置信息。可选地,内核层通过调度时延值均衡执行模块向中断控制器发送第二配置信息。
其中,第二配置信息指示的中断均衡策略为将第一处理器核当前的部分中断请求迁移绑定至第二处理器核,第二处理器核不同于第一处理器核,迁移绑定后第一处理器核的调度时延值小于或等于第一时延阈值。
可选的,第二配置信息包括第一处理器核中待迁出的中断号和第二处理器核的处理器核标识。示意性的,待迁出的中断号为待迁出的m个中断号,m为正整数。其中一个中断号对应至少一个中断请求。
示意性的,第二配置信息包括待迁出的中断号和待迁出的中断号对应的绑定关系信息,其中一个中断号对应的绑定关系信息用于指示该中断号对应的至少一个中断请求与处理器核之间的绑定关系。比如,电子设备包括8个处理器核,待迁出的中断号为中断号10,中断号10对应多个中断请求,第二配置信息包括中断号10和中断号10对应的8个比特位的信息,8个比特位与8个处理器核存在一一对应的关系,当比特位为第一数值时用于指示将该中断号对应的多个中断请求绑定至该比特位对应的处理器核,当比特位为第二数值时用于指示该中断号对应的多个中断请求与该比特位对应的处理器核无绑定关系。比如,第一数值为1,第二数值为0。本申请实施例对此不加以限定。
可选地,第一处理器当前包括多个中断负载,多个中断负载与多个中断号存在一一对应的关系。若第一处理器核当前的调度时延值大于第一时延阈值,则内核层将第一处理器核当前的调度时延值与第一时延阈值的差值绝对值确定为第一差值。第一处理器按照预设算法从多个中断负载选择至少一个中断负载,将选择的至少一个中断负载对应的中断号确定为待迁出的中断号,使得待迁出的中断号对应的调度时延总数大于第一差值,确定中断均衡策略为将待迁出的中断号对应的中断请求迁移绑定至第二处理器核。比如,预设算法为按照中断号对应的中断负载从高到低的顺序依次选择中断号。需要说明的是,预设算法还可以采用其他可能的实现方式,本申请实施例对此不加以限定。其中,第二处理器核为电子设备中除第一处理器核以外的其他处理器核。可选地,第二处理器核为除第一处理器核以外的任意一个处理器核。或者,第二处理器核为除第一处理器核以外的任意的至少两个处理器核。
可选地,第二处理器核为除第一处理器核以外的调度时延值小于第三时延阈值的至少一个处理器核。示意性的,内核层遍历查询其他处理器核的调度时延值,将调度时延值小于第三时延阈值的处理器核确定为第二处理器核。其中,第三时延阈值为自定义设置的,或者默认设置的。本申请实施例对此不加以限定。
可选地,第二处理器核为除第一处理器核以外的调度时延值最小的至少一个处理器核。示意性的,内核层遍历查询其他处理器核的调度时延值,按照调度时延值从小到大的顺序对第二处理器核进行排序,将排序后位于前n个的处理器核确定为第二处理器核,n为正整数。
步骤704,中断控制器根据第二配置信息,将第一处理器核当前的部分中断请求迁移绑定至第二处理器核。
中断控制器接收内核层发送的第二配置信息,执行该第二配置信息所指示的中断均衡策略,即将第一处理器核当前的部分中断请求迁移绑定至第二处理器核,第二处理器核不同于第一处理器核,迁移绑定后第一处理器核的调度时延值小于或等于第一时延阈值。其中,第二处理器核为除第一处理器核以外的至少一个处理器核。
可选的,第二配置信息包括第一处理器核中待迁出的中断号和第二处理器核的处理器核标识。中断控制器根据第二配置信息,将中断号对应的至少一个中断请求迁移绑定至所述第二处理器核。示意性的,待迁出的中断号为待迁出的m个中断号,m为正整数。
可选地,中断控制器将第一处理器核当前的部分中断请求,以预设均摊方式迁移绑定至第二处理器核,预设均摊方式用于指示迁移绑定后其它处理器核的调度时延值之间的差值绝对值小于第一差值阈值。其中,其它处理器核为电子设备中除第一处理器核以外的各个处理器核,第一差值阈值为自定义设置的,或者默认设置的。本申请实施例对此不加以限定。
综上所述,本申请实施例通过内核层根据第一处理器核当前的调度时延值和用户层配置的第一时延阈值动态调整中断绑定,若第一处理器核当前的调度时延值大于第一时延阈值,则通过中断控制器将第一处理器核当前的部分中断请求迁移绑定至第二处理器核,使得迁移绑定后第一处理器核的调度时延值小于或等于第一时延阈值,降低了第一处理器核上的调度时延。还通过迁出的部分中断请求,在其他处理器核集群上合理均摊,保证中断处理的并发度,并避免单一处理器核负载过大拉高整个集群的频率,造成功耗浪费的问题。
关于调度时延值统计,相关技术中还存在如下问题:硬中断处理和软中断处理是分开处理的,软中断处理并不感知自己的执行是由哪个硬中断处理处理触发的,内核中对应的调度时延值也是分开统计的。
而实际上两者是有关联的,比如网络收包的过程中,内核进入硬中断处理进行简单的硬件配置(执行耗时较短),然后通过raise_softirq_irqoff接口触发软中断处理,通过软中断处理的handler函数中真正对数据包进行处理(执行耗时较长)。可以说这种场景下,没有硬中断处理也就不会触发软中断处理,两者都应计入同一中断号的开销统计。
相关技术中,调度时延值统计是以处理器核为粒度的,并不支持按照中断粒度进行负载统计。所以,当前一些实现中断均衡功能的软件,只能根据中断数量来评估某个中断号的调度时延值,而不同中断的处理时间并不一致,这样的统计结果并不精确,无法很好的支撑本申请实施例中的中断均衡处理。比如网卡的硬中断处理自身耗时并不多,但其软中断处理却比较耗时,若按照相关技术中的调度时延值计算方式即并没有将两者关联起来,可能会造成网卡的中断开销较小的假象。
针对上述问题,本申请实施例提出中断粒度的负载统计(Per-Interrupt LoadTracking,PILT)方式,即按照中断请求进行调度时延值统计,并将对应的软中断处理的开销,一并计入对应中断请求的调度时延值中。基于如图7所示的实施例,在步骤702即内核层判断第一处理器核的调度时延值是否大于第一时延阈值之前,内核层需要统计第一处理器核的调度时延值。在一种可能的实现方式中,内核层根据接收到的中断请求对调度时延值进行实时统计,调度时延值统计的过程包括如下几个步骤,如图8所示:
步骤801,获取中断请求对应的中断处理时长,中断处理时长包括硬中断处理和软中断处理的总时长。
可选地,在接收到某个中断请求后,确定该中断请求对应的硬中断处理的开始时刻和结束时刻,将硬中断处理的开始时刻和结束时刻的差值绝对值确定为第一处理时长;确定该中断请求对应的软中断处理的开始时刻和结束时刻,将软中断处理的开始时刻和结束时刻的差值绝对值确定为第二处理时长;将该中断请求的第一处理时长和第二处理时长之和确定为该中断请求的中断处理时长。
可选地,为了建立硬中断处理和软中断中断处理的关联,在一个中断请求的硬中断处理结束,且触发软中断处理前,保存该中断请求的中断号和其触发的软中断处理的软中断类型。其中,一个中断请求的中断号用于在多个中断请求中唯一标识该中断请求。软中断类型包括网络接收中断、网络发送中断、定时中断、调度中断、读-拷贝修改(Read-CopyUpdate,RCU)锁等类型。
可选地,由于在统计时刻硬中断处理可能较多,软中断处理可能来不及处理,因此需要进行数组保存,即将中断请求的中断号和其触发的软中断处理的软中断类型保存在一个数组中。比如,一个中断请求的中断号为“200”,软中断类型为网络接收中断“NET_RX”,则将“softirq_type:NET_RX;hw_irq:200”保存在一个数组中。软中断处理从上一步保存的数组中,获取与软中断类型匹配的第一个数组成员,比如网络收包处理的软中断对应软中断类型“NET_RX”,并获取与软中断类型“NET_RX”匹配的第一个数组成员中的中断号,将软中断处理的第二处理时长一并计入该中断号的中断处理时长中。
比如,中断号200的第一处理耗时为delta_hardirq200,中断号200的第二处理耗时为delta_softirq200,则中断号200的中断处理时长delta_irq200=delta_hardirq200+delta_softirq200。
步骤802,根据该中断请求的中断处理时长,采用预设算法确定该中断请求对应的调度时延值。
可选地,预设算法包括实体负载跟踪算法(Per-entity load tracking,PELT)或窗口辅助负载跟踪(Window Assisted Load Tracking,WALT)。
在一种可能的实现方式中,采用WALT算法,预先设置窗口的长度(比如10ms),统计最近的预设数量(比如预设数量为5)的窗口内的中断处理时长的平均值或者当前最大值,将统计得到的平均值或者最大值确定为该中断请求对应的调度时延值。
又比如,采用PELT算法,预设设置衰减因子的数值,采用衰减因子对预设数量的窗口内的中断处理时长进行加权求和,衰减因子为小于1的正数。比如,衰减因子为y,3个窗口内的中断处理时长分别为10、9和8,则中断请求对应的调度时延值为10×y+9×y2+8×y3。
可选地,将该中断请求对应的中断号和调度时延值的信息进行保存。示意性的,将该中断请求对应的中断号和调度时延值的信息保持在第一处理器核的指定变量中,比如指定变量为per处理器核变量。
步骤803,将该中断请求对应的调度时延值与第一处理器核当前的调度时延值进行求和,得到更新后的调度时延值。
可选地,将该中断请求对应的调度时延值与第一处理器核当前的调度时延值进行加权求和,得到更新后的调度时延值。
综上所述,与相关技术中按照处理器核维度统计调度时延值开销的方案相比,本申请实施例通过跟踪计算每个中断请求的负载开销,从而避免过往只能根据中断数量计算负载的粗放算法,支撑更精确的中断均衡处理,将由硬中断处理触发的软中断处理的时间开销一并计入对应的中断处理时长,使得基于中断处理时长确定的调度时延值更加精确,从而后续能够更加准确的进行中断均衡处理。
此外,相关技术中任务选核时未考虑中断处理造成的调度时延,造成调度时延过大;或针对所有线程采用统一的中断负载判断标准,导致后台线程也和指定线程选择到了同一个处理器核,造成不可预知的影响(比如持锁导致无法调度)。而本申请实施例支持对指定线程配置调度时延要求,并在选核时判断调度时延要求是否大于等于处理器核的调度时延值,满足要求时才选择对应的处理器核,保证指定线程能够得到及时调度,降低了丢帧概率。而非关键线程(比如后台线程),由于没有时延要求,则可以选择调度时延值高的处理器核,减少对关键线程运行的干扰。基于图6所示出的电子设备,任务选核过程包括如下几个步骤,如图9所示:
步骤901,用户层为前台应用的指定线程配置第二时延阈值,向内核层发送第三配置信息。
可选的,用户层确定前台应用的指定线程,为该指定线程配置的调度时延的最大值即第二时延阈值。用户层向内核层发送第三配置信息,该第三配置信息包括指定线程的线程标识和第二时延阈值。
其中,指定线程的线程标识用于为在多个线程中唯一标识指定线程。指定线程为对调度时延有要求的线程,可选地,指定线程包括绘帧线程和/或进程间通信机制的进程。比如指定线程为UI/Render线程、Surfaceflinger线程以及通信相关的binder线程等。本申请实施例对指定线程的类型不加以限定。
其中,第二时延阈值是为该指定线程配置的调度时延值的上限值。
该第二时延阈值可以在后续根据绘帧完成情况进行动态调整。比如,若上一帧绘制的实际结束时刻与指定终止时刻的差值绝对值大于第二差值阈值,则增加第二时延阈值;若上一帧绘制的实际结束时刻与指定终止时刻的差值绝对值小于或者等于第二差值阈值,则减小第二时延阈值,保证线程能够更快得到调度。其中,第二差值阈值为自定义设置的,或者默认设置的。本申请实施例对此不加以限定。
可选地,用户层识别指定线程,获取指定线程的线程标识,为指定线程配置第二时延阈值,通过预设方式向内核层发送第三配置信息。示意性的,预设方式为I/O设备控制(input/output control,ioctl)方式。比如,第三配置信息包括“tid=1200;lat_req=200000”,其中,指定线程的线程标识为1200,调度时延要求为200000ns,即200us。
步骤902,内核层根据第三配置信息,将满足预设选核条件的处理器核确定为目标处理器核,预设选核条件包括处理器核当前的调度时延值小于或等于第二时延阈值。
内核层接收到用户层发送的第三配置信息后,检查线程标识对应的指定线程的当前状态,若该指定线程正在执行,则不作操作;若该指定线程并非正在执行,则内核层尝试唤醒该指定线程,如果该指定线程不允许被唤醒(比如在等锁),则修改调度时延要求的第二时延阈值(比如减小第二时延阈值)。若该指定线程允许被唤醒,则进入选核流程。
可选地,在选核流程中,对于多个处理器核中的一个处理器核,内核层判断该处理器核是否满足预设选核条件,预设选核条件包括处理器核当前的调度时延值小于第二时延阈值。若该处理器核满足预设选核条件,则将该处理器核确定为目标处理器核,执行步骤903;若该处理器核不满足预设选核条件,则继续查看下一个处理器核,再次执行判断该处理器核是否满足预设选核条件的步骤。
需要说明的是,处理器核当前的调度时延值统计方式可以类比参考上述目标处理器核当前的调度时延值统计方式,在此不再赘述。
可选地,预设选核条件包括处理器核当前的调度时延值小于第二时延阈值和其他选核条件。比如,其他选核条件包括处理器的优先级大与预设优先级阈值,和/或处理器的属性信息与指定线程相匹配。本申请实施例对此不加以限定。
步骤903,内核层将该指定线程加入目标处理器核的调度队列。
内核层将该指定线程加入目标处理器核的调度队列后,等待调度执行。由于指定线程的调度时延值处于可控范围,指定线程可以在满足调度时延要求的时间内得到及时调度。
综上所述,本申请实施例支持针对任务粒度的调度时延要求配置,将前台/后台线程区分处理,降低后台线程对前台指定线程的影响。任务选核时,考虑任务调度时延要求和处理器核的调度时延值,只有处理器核当前的调度时延值小于或等于任务调度时延要求的第二时延阈值时,才可能将该处理器核作为目标处理器核,保证关键线程能够选择到调度时延值低的处理器核上,并得到及时调度。
在一个示意性的应用场景中,如图10所示,手机前台运行“应用市场”应用A,当接收到该应用A中作用于控件1001的点击操作信号时,对推荐的5个应用程序进行批量更新。手机将该应用A切换至后台运行后,打开“杂志汇”应用显示多个杂志封面。由于应用A进行批量更新时需要通过网络下载升级包,此时会有大量的网络流量通过无线网卡进行接收/转发,而网卡是通过中断请求通知内核层从网卡内存中读写数据的,故会有大量网卡中断请求产生。且由于涉及数据包处理,网络收发包的中断处理往往耗时较长(最多达10ms),若此时UI/Render线程、Surfaceflinger线程等绘帧线程选择了正在或将要进行网卡中断处理的处理器核,则非常容易造成丢帧,导致在应用B中浏览杂志时的用户界面出现卡顿的问题。
为了解决上述问题,本申请实施例提供的任务选核方法包括如下几个步骤,如图11所示:步骤1101,Framework层识别前台应用为“杂志汇”应用B,为应用B的UI/Render线程配置关键调度时延要求的第二时延阈值为500us;步骤1102,Framework层设置处理器核0和处理器核4的第一时延阈值为500us(4小核+4大核架构),保证小核、大核都至少有一个处理器核的任务调度时延可控。步骤1103,Framework层下发第一时延阈值后,处理器核0和处理器核4分别根据当前的调度时延值,决定是否需要将发往本处理器核的部分中断请求绑定到其他的处理器核,超出第一时延阈值的部分中断请求迁出后,处理器核0和处理器核4的调度时延值可保证在500us以下。步骤1104,当手机接收到应用B中的滑动操作信号时触发绘帧操作,应用B调用UI/Render线程进行绘帧。步骤1105,UI/Render线程被唤醒后,根据调度时延要求的第二时延阈值进行选核流程,此时由于其他处理器核都在处理网卡中断,负载较高,因此大概率会选择到处理器核0和处理器核4,将UI/Render线程加入这两个处理器核的调度队列后,由于调度时延值小于500us,因此可以保证UI/Render线程在500us内得到调度,从而降低丢帧卡顿的概率。
在一个示意性的例子中,如图12所示,在相关技术中(假设应用B绘制一帧需要花费16.7ms),由于缺少调度时延值的管控,指定线程可能会由于中断处理,长时间处于就绪(runnable)状态,比如3ms或8ms。一旦中断处理时长超过6ms,就非常容易出现丢帧问题。而通过本申请实施例提供的中断调度方法,使得指定线程的调度时延调整为500us,从而可以保证指定线程的调度时延在可控范围内,不会因为调度延迟而导致丢帧和卡顿的问题。
请参考图13,其示出了本申请另一个示例性实施例提供的中断调度方法的流程图。本申请实施例以该中断调度方法应用于电子设备中来举例说明。该中断调度方法包括:
步骤1301,获取预配置的第一时延阈值,第一时延阈值是为第一处理器核配置的中断处理造成的调度时延的最大值。
步骤1302,获取第一处理器核的调度时延值,调度时延值用于指示第一处理器核当前的中断负载。
步骤1303,在调度时延值大于第一时延阈值的情况下,将第一处理器核当前的部分中断请求迁移绑定至第二处理器核,第二处理器核不同于第一处理器核。
需要说明的是,本实施例中的各个步骤的相关细节可参考上述实施例中的相关描述,在此不再赘述。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图14,其示出了本申请一个示例性实施例提供的中断调度装置的框图。该装置可以通过软件、硬件或者两者的结合实现成为上述提供的电子设备的全部或者一部分。该装置可以包括:第一获取单元1410、第二获取单元1420和绑定单元1430。
第一获取单元1410,用于获取预配置的第一时延阈值,第一时延阈值是为第一处理器核配置的中断处理造成的调度时延的最大值;
第二获取单元1420,用于获取第一处理器核的调度时延值,调度时延值用于指示第一处理器核当前的中断负载;
绑定单元1430,用于在调度时延值大于第一时延阈值的情况下,将第一处理器核当前的部分中断请求迁移绑定至第二处理器核,第二处理器核不同于第一处理器核。
在一种可能的实现方式中,迁移绑定后第一处理器核的调度时延值小于或等于第一时延阈值。
在另一种可能的实现方式中,迁移绑定后其他处理器核的调度时延值之间的差值绝对值均小于预设的第一差值阈值,其他处理器核为除第一处理器核以外的各个处理器核。
在另一种可能的实现方式中,该装置用于包括用户层、内核层和硬件层的电子设备中,第一获取单元1410,还用于通过用户层向内核层发送第一配置信息,第一配置信息包括第一处理器核的处理器核标识和第一时延阈值;内核层接收用户层发送的第一配置信息;
绑定单元1430,还用于在调度时延值大于第一时延阈值的情况下,通过内核层向硬件层的中断控制器发送第二配置信息,第二配置信息包括第一处理器核中待迁出的中断号和第二处理器核的处理器核标识;中断控制器根据第二配置信息,将中断号对应的至少一个中断请求迁移绑定至第二处理器核。
在另一种可能的实现方式中,该装置还包括:统计单元;该统计单元用于:
在接收到中断请求后获取中断请求对应的中断处理时长,中断处理时长包括硬中断处理和软中断处理的总时长;
根据中断请求的中断处理时长,采用预设算法确定中断请求对应的调度时延值;
将中断请求对应的调度时延值与第一处理器核当前的调度时延值进行求和,得到更新后的调度时延值。
在另一种可能的实现方式中,该装置还包括:选核单元;该选核单元用于:
获取预配置的第二时延阈值,第二时延阈值是为指定线程配置的中断处理造成的调度时延的最大值;
在指定线程被唤醒后,将满足预设选核条件的处理器核确定为目标处理器核,预设选核条件包括处理器核当前的调度时延值小于或等于第二时延阈值;
将指定线程加入目标处理器核的调度队列。
在另一种可能的实现方式中,指定线程包括前台应用的绘帧进程和/或进程间通信机制的进程。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例提供了一种电子设备,该电子设备包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令时实现上述实施例中由电子设备执行的中断调度方法。
本申请实施例提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当计算机可读代码在电子设备的处理器中运行时,电子设备中的处理器执行上述实施例中由电子设备执行的中断调度方法。
本申请实施例提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述实施例中由电子设备执行的中断调度方法。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RandomAccess Memory,RAM)、只读存储器(Read Only Memory,ROM)、可擦式可编程只读存储器(Electrically Programmable Read-Only-Memory,EPROM或闪存)、静态随机存取存储器(Static Random-Access Memory,SRAM)、便携式压缩盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、数字多功能盘(Digital Video Disc,DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
这里所描述的计算机可读程序指令或代码可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本申请操作的计算机程序指令可以是汇编指令、指令集架构(Instruction Set Architecture,ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(Local Area Network,LAN)或广域网(WideArea Network,WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(Field-ProgrammableGate Array,FPGA)或可编程逻辑阵列(Programmable Logic Array,PLA),该电子电路可以执行计算机可读程序指令,从而实现本申请的各个方面。
这里参照根据本申请实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本申请的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本申请的多个实施例的装置、系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行相应的功能或动作的硬件(例如电路或ASIC(Application SpecificIntegrated Circuit,专用集成电路))来实现,或者可以用硬件和软件的组合,如固件等来实现。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其它变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其它单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种中断调度方法,其特征在于,所述方法包括:
获取预配置的第一时延阈值,所述第一时延阈值是为第一处理器核配置的中断处理造成的调度时延的最大值;
获取所述第一处理器核的调度时延值,所述调度时延值用于指示所述第一处理器核当前的中断负载;
在所述调度时延值大于所述第一时延阈值时,将所述第一处理器核当前的部分中断请求迁移绑定至第二处理器核,所述第二处理器核不同于所述第一处理器核。
2.根据权利要求1所述的方法,其特征在于,所述迁移绑定后所述第一处理器核的调度时延值小于或等于所述第一时延阈值。
3.根据权利要求1或2所述的方法,其特征在于,所述迁移绑定后其他处理器核的调度时延值之间的差值绝对值均小于预设的第一差值阈值,所述其他处理器核为除所述第一处理器核以外的各个处理器核。
4.根据权利要求1至3任一所述的方法,其特征在于,所述方法用于包括用户层、内核层和硬件层的电子设备中,所述获取预配置的第一时延阈值,包括:
所述内核层接收所述用户层发送的第一配置信息,所述第一配置信息包括所述第一处理器核的处理器核标识和所述第一时延阈值;
所述在所述调度时延值大于所述第一时延阈值时,将所述第一处理器核当前的部分中断请求迁移绑定至第二处理器核,包括:
在所述调度时延值大于所述第一时延阈值时,所述内核层向所述硬件层的中断控制器发送第二配置信息,所述第二配置信息包括所述第一处理器核中待迁出的中断号和所述第二处理器核的处理器核标识;所述第二配置信息用于指示所述中断控制器将所述中断号对应的至少一个中断请求迁移绑定至所述第二处理器核。
5.根据权利要求1至4任一所述的方法,其特征在于,所述方法还包括:
在接收到中断请求后获取所述中断请求对应的中断处理时长,所述中断处理时长包括硬中断处理和软中断处理的总时长;
根据所述中断请求的中断处理时长,采用预设算法确定所述中断请求对应的调度时延值;
将所述中断请求对应的调度时延值与所述第一处理器核当前的所述调度时延值进行求和,得到更新后的所述调度时延值。
6.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:
获取预配置的第二时延阈值,所述第二时延阈值是为指定线程配置的中断处理造成的调度时延的最大值;
在所述指定线程被唤醒后,将满足预设选核条件的处理器核确定为目标处理器核,所述预设选核条件包括处理器核当前的所述调度时延值小于或等于所述第二时延阈值;
将所述指定线程加入所述目标处理器核的调度队列。
7.根据权利要求6所述的方法,其特征在于,所述指定线程包括所述前台应用的绘帧进程和/或进程间通信机制的进程。
8.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令时实现权利要求1-8任意一项所述的方法。
9.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1-8中任意一项所述的方法。
10.一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,其特征在于,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行权利要求1-8中任意一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110613606.2A CN115437755A (zh) | 2021-06-02 | 2021-06-02 | 中断调度方法、电子设备及存储介质 |
PCT/CN2022/093584 WO2022252986A1 (zh) | 2021-06-02 | 2022-05-18 | 中断调度方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110613606.2A CN115437755A (zh) | 2021-06-02 | 2021-06-02 | 中断调度方法、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115437755A true CN115437755A (zh) | 2022-12-06 |
Family
ID=84272307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110613606.2A Pending CN115437755A (zh) | 2021-06-02 | 2021-06-02 | 中断调度方法、电子设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115437755A (zh) |
WO (1) | WO2022252986A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117369986A (zh) * | 2023-08-07 | 2024-01-09 | 华为技术有限公司 | 一种中断请求的均衡方法、装置和计算设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130771B (zh) * | 2023-03-30 | 2024-06-04 | 荣耀终端有限公司 | 一种资源调度方法、电子设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6269391B1 (en) * | 1997-02-24 | 2001-07-31 | Novell, Inc. | Multi-processor scheduling kernel |
CN101354664B (zh) * | 2008-08-19 | 2011-12-28 | 中兴通讯股份有限公司 | 多核处理器中断负载均衡方法和装置 |
US8943252B2 (en) * | 2012-08-16 | 2015-01-27 | Microsoft Corporation | Latency sensitive software interrupt and thread scheduling |
CN105528330B (zh) * | 2014-09-30 | 2019-05-28 | 杭州华为数字技术有限公司 | 负载均衡的方法、装置、丛集和众核处理器 |
CN110839075A (zh) * | 2019-11-08 | 2020-02-25 | 重庆大学 | 边缘计算环境下基于粒子群的服务迁移方法 |
-
2021
- 2021-06-02 CN CN202110613606.2A patent/CN115437755A/zh active Pending
-
2022
- 2022-05-18 WO PCT/CN2022/093584 patent/WO2022252986A1/zh active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117369986A (zh) * | 2023-08-07 | 2024-01-09 | 华为技术有限公司 | 一种中断请求的均衡方法、装置和计算设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2022252986A1 (zh) | 2022-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210200587A1 (en) | Resource scheduling method and apparatus | |
US9727372B2 (en) | Scheduling computer jobs for execution | |
US9501319B2 (en) | Method and apparatus for scheduling blocking tasks | |
US10754706B1 (en) | Task scheduling for multiprocessor systems | |
US9582326B2 (en) | Quality of service classes | |
US8615765B2 (en) | Dividing a computer job into micro-jobs | |
WO2022252986A1 (zh) | 中断调度方法、电子设备及存储介质 | |
CN111488210B (zh) | 基于云计算的任务调度方法、装置和计算机设备 | |
CN111897637B (zh) | 作业调度方法、装置、主机及存储介质 | |
WO2022068697A1 (zh) | 任务调度方法及装置 | |
CN110069337B (zh) | 一种容灾降级的方法和装置 | |
EP4404539A1 (en) | Resource scheduling method, apparatus and system, device, medium, and program product | |
CN105718320A (zh) | 一种时钟任务处理方法、装置及设备 | |
KR101377195B1 (ko) | 컴퓨터 마이크로 작업 | |
CN114911538A (zh) | 一种运行系统的启动方法及计算设备 | |
CN114661415A (zh) | 调度方法及计算机系统 | |
US20230418667A1 (en) | Computing device for handling tasks in a multi-core processor, and method for operating computing device | |
CN114860403B (zh) | 一种任务调度方法、装置、设备和存储介质 | |
CN118051313A (zh) | 进程调度方法及装置、计算机可读存储介质、终端 | |
CN117667324A (zh) | 用于处理任务的方法、装置、设备和存储介质 | |
US7996845B2 (en) | Methods and apparatus to control application execution resource with a variable delay |
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 |