CN116414542B - 任务调度方法、装置、设备及存储介质 - Google Patents
任务调度方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116414542B CN116414542B CN202310689484.4A CN202310689484A CN116414542B CN 116414542 B CN116414542 B CN 116414542B CN 202310689484 A CN202310689484 A CN 202310689484A CN 116414542 B CN116414542 B CN 116414542B
- Authority
- CN
- China
- Prior art keywords
- task
- kernel
- load
- tasks
- scheduling
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000012544 monitoring process Methods 0.000 claims abstract description 9
- 238000004590 computer program Methods 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 12
- 230000003068 static effect Effects 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3058—Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
- G06F11/3062—Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及任务调度领域,提出了一种任务调度方法、装置、设备及存储介质。该方法包括:监测多核处理器的各个内核的负载;在所述负载满足预设的调度条件时,根据预先设置的共享内存所存储的任务数据,结合初始化的任务位置,调度所述内核运行的任务。由于预先在不同的内核中对任务进行了初始化,因而可以由不同的内核运行所切换的任务,并且通过共享内存记录了任务数据,可以有效的提高任务调度后运行的可靠性和有效性。
Description
技术领域
本申请涉及任务调度领域,尤其涉及任务调度方法、装置、设备及存储介质。
背景技术
AUTOSAR(中文全称为汽车开放***架构,英文全称为AUTomotive Open SystemArchitecture)标准是由全球汽车制造商、部件供应商及其他电子、半导体和软件***公司联合开发的一个开放的、标准化的软件架构。AUTOSAR标准使得汽车应用软件设计开发易于管理,软件***不再受到基础平台的限制,易于移植,有利于汽车电子***软件的交换与更新,使复杂的汽车电子应用软件易于管理,因此被广泛推广。
然而,由于AUTOSAR-OS(中文全称为汽车开放***架构操作***,英文全称为AUTomotive Open System Architecture-OS)为静态操作***,在初始化后,软件组件(英文全称为software component,中文全称为SWC)固定由多核处理器中的某个内核执行,如果该内核的负载过大,则会影响各个软件组件的处理效率,影响***性能。
发明内容
有鉴于此,本申请实施例提供了一种任务调度方法、装置、设备及存储介质,以解决现有技术中由于软件组件在静态操作***中只能固定由某个内核执行,如果该内核的负载过大,则会影响各个软件组件的处理效率,影响***性能的问题。
本申请实施例的第一方面提供了一种任务调度方法,所述方法包括:监测多核处理器的各个内核的负载;在所述负载满足预设的调度条件时,根据预先设置的共享内存所存储的任务数据,结合初始化的任务位置,调度所述内核运行的任务。
本申请对于静态操作***中运行的任务,将任务同时在不同的内核进行初始化,并在共享内存中存储任务数据,在根据内核的负载确定需要进行调度时,由于预先在不同的内核中对任务进行了初始化,因而可以由不同的内核运行所切换的任务,并且通过共享内存记录了任务数据,可以有效的提高任务调度后运行的可靠性和有效性。
结合第一方面,在第一方面的第一种可能实现方式中,所述负载满足预设的调度条件,包括:所述多核处理器中的第一内核的负载大于预定的负载阈值的情况下,所述第一内核的负载满足所述预设的调度条件,其中,所述第一内核为所述多核处理器中的任意内核。
在检测多核处理器中的内核是否满足调度条件时,可以将其中的任意的第一内核的负载与预定的负载阈值进行比较。如果第一内核大于预定的负载阈值,则确定该内核的负载满足预设的调度条件,可以对第一内核进行任务调度,将第一内核中的任务调度至其它内核,从而减小第一内核的负载,提高第一内核中的任务的处理效率。
结合第一方面,在第一方面的第二种可能实现方式中,所述负载满足预设的调度条件,包括:确定所述多核处理器中的第一内核与第二内核的负载差,所述第一内核和所述第二内核为所述多核处理器中的任意两个内核;在所述负载差大于预定的差阈值的情况下,所述第一内核的负载满足预设的调度条件。
通过比较两个内核的负载差,来确定当前多核处理器中的内核的负载的均衡性。如果第一负载与第二负载的负载差大于预定的差阈值的情况下,表明第一内核与第二内核的负载的均衡性较差,可以通过任务调度,包括将第一内核中的一个或者多个任务调度至第二内核,以提高内核负载的均衡性,提升任务的处理效率。
结合第一方面,在第一方面的第三种可能实现方式中,根据预先设置的共享内存所存储的任务数据,结合初始化的任务位置,调度所述内核运行的任务,包括:根据所述初始化的任务位置,确定用于调度的第一内核和第二内核,其中,第一内核为所述任务的调出内核,所述第二内核为所述任务的调入内核;通过所述第二内核读取所述共享内存所存储的任务数据,并运行调度至第二内核的任务。
在对内核运行的任务进行调度时,需要先确定用于任务调出的第一内核中包括如些可以调度的任务,以及确定可调度的任务可以调度的目标位置,即可调入任务的第二内核。如果内核未初始化该任务时,则该任务无法调入该内核运行。根据预先确定的初始化的任务位置,可以确定用于任务调度的第一内核和第二内核。将任务从第一内核调往第二内核处理时,可以通过第二内核在共享内存中读取任务在第一内核运行时的任务数据,从而使得任务在第二内核中运行时,可以直接使用第一内核运行时的任务数据,从而能够使得任务能够稳定有效的运行。
结合第一方面的第三种可能实现方式,在第一方面的第四种可能实现方式中,根据所述初始化的任务位置,确定用于从第一内核调入所述任务的第二内核,包括:选择所述第一内核中用于调出的第一任务;根据初始化的第一任务的内核位置,确定用于调入所述第一任务的第二内核。
在确定用于调入任务的第二内核时,先在第一内核中选择需要进行调度的第一任务。根据第一任务的初始化位置,确定第一任务可用于调入的第二内核。比如,在选择第一内核中的第一任务作为调度的任务时,则根据内核在初始化时所包括的任务,确定已初始化第一任务的内核,作为可调入第一任务的第二内核。
结合第一方面的第四种可能实现方式,在第一方面的第五种可能实现方式中,选择所述第一内核中用于调出的第一任务,包括:获取所述第一内核所运行的任务,以及所运行的任务的负载;根据所述第一内核所运行的任务在内核中的初始化位置,以及所运行的任务的负载,选择所述第一内核中用于调出的第一任务。
在确定第一内核中需要调出的任务时,可以根据第一内核中运行的各个任务的负载的大小,结合各个任务在内核中的初始化位置,确定需要调入其它内核运行的任务,从而使得第一内核运行的任务数量减少,第一内核的负载降低,处理效率得到提升。
结合第一方面的第五种可能实现方式,在第一方面的第六种可能实现方式中,根据所述第一内核所运行的任务在内核中的初始化位置,以及所运行的任务的负载,选择所述第一内核中用于调出的第一任务,包括:根据所述第一内核所运行的任务的负载,按照从大到小的顺序查找任务;在根据所述顺序查找的任务在其它内核有初始化位置的情况下,选择所述任务为用于调出的所述第一任务。
在选择第一内核中调出的任务时,可以根据第一内核中运行的任务按照从大到小的顺序排序,根据该顺序选择任务,在确定所选择的任务在其它内核中有初始化时,则确定该任务为用于调出的第一任务。当然,不局限于选择一个任务,也可以选择两个以上的任务为作调出的任务。或者,也可以根据负载的大小,以及
结合第一方面的第四种可能实现方式,在第一方面的第七种可能实现方式中,所述静态操作***为用于车辆控制的操作***;选择所述第一内核中用于调出的第一任务,包括:获取车辆的运行状态信息;根据预先设定的运行状态信息与调出任务的对应关系,选择第一内核中用于调出的第一任务。
根据车辆的运行状态信息,确定与该运行状态信息对应的调出任务,从而使得第一任务调出后的第一内核的处理效率更高,提高第一内核中的任务处理的及时性和有可靠性,提高车辆运行的可靠性。
结合第一方面的第七种可能实现方式,在第一方面的第八种可能实现方式中,在运行调度至第二内核的任务之后,所述方法还包括:根据所述车辆的运行状态信息的变化,或者根据所述第一任务在所述第二内核中的运行时长,将所述第一任务调度至所述第一内核中运行。
在将第一任务调出后,可以根据车辆的运行状态,将第一任务调回至第一内核处理,或者根据运行的时长,将第一任务调回第一内核处理。或者,也可以根据第一内核的负载,在第一内核的负载下降至小于预定的第一阈值时,调回第一任务至第一内核处理。
结合第一方面至第一方面的第八种可能实现方式中的任意一种可能实现方式,在第一方面的第九种可能实现方式中,调度所述内核运行的任务,包括:通过自旋锁控制不同内核对所述共享内存所存储的任务数据的读写操作。
通过自旋锁控制不同内核对共享内存的任务数据的读写操作,在同一时间只能由一个任务对其进行读写操作,有利于提升共享内存的任务数据的可靠性,减小数据出现混乱的几率。
本申请实施例的第二方面提供了一种任务调度装置,所述装置包括:负载监测单元,用于监测多核处理器的各个内核的负载。任务调度单元,用于在所述负载满足预设的调度条件时,根据预先设置的共享内存所存储的任务数据,结合初始化的任务位置,调度所述内核运行的任务。
本申请实施例的第三方面提供了任务调度设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一项所述方法的步骤。
本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述方法的步骤。
可以理解的是,上述第二方面至第四方面的有益效果可以参见上述第一方面的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种任务调度方法的实现流程示意图;
图2是本申请实施例提供的一种确定满足调度条件方法的实现流程示意图;
图3是本申请实施例提供的一种任务调度过程的实现流程示意图;
图4是本申请实施例提供的一种确定调入任务的内核的方法的实现流程示意图;
图5是本申请实施例提供的一种内核与其运行的任务示意图;
图6是本申请实施例提供的一种确定调出的第一任务方法的实现流程示意图;
图7是本申请实施例提供的一种任务调出和调入方法的实现流程示意图;
图8是本申请实施例提供的一种任务调度装置的示意图;
图9是本申请实施例提供的一种任务调度设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
随着半导体技术的发展,处理器的运行效率得到了极大的提升。比如,通过在一枚处理器中集成两个或多个完整的计算引擎(内核)的多核处理器,可以有效提升处理器的处理效率。
AUTOSAR(英文全称为Automotive Open System Architecture,中文全称为自动开放***架构)是一种开放式的汽车电子***架构,通过该架构可以提供标准化的方法来设计和开发汽车电子***。由于AUTOSAR-OS为静态操作***,在初始化后,软件组件固定由初始化该软件组件的内核执行,如果该内核的负载过大,则会影响各个软件组件的处理效率,影响***性能。
为了解决上述问题,本申请实施例提出了一种任务调度方法,如图1所示,该方法包括:
在S101中,监测多核处理器的各个内核的负载。
在多核处理器处于运行状态时,多核处理器中的内核会根据初始化的任务信息,在其中运行有一个或者两个以上的任务或软件组件(英文全称为software componet,英文简称为SWC)。不同任务的负载的大小可能不同。比如,在某个内核中运行有N个任务,任务对应的负载的大小可能不同。或者,对于同一任务,在不同的实施场景下,所对应的负载可能也不相同。比如,对于车辆使用的AUTOSAR-OS,根据车辆的运行状态的不同,同一任务在不同时刻的负载的大小可能也会改变。
其中,内核的负载可以为内核需要处理的任务的计算量。可以通过预定时长内,内核被占用的时间与预定时长的比值来表示内核在该预定时长内的负载。
比如,在预定时长T中,内核被占用的时长为t1,则在该预定时长T内,该内核的负载为:t1/T。在同一个内核中同时运行有多个任务或软件组件时,可以根据预定时长内,任务或软件组件占用处理器的时长与预定时长的比值,确定各个任务的负载的大小。
在第一内核中同时运行有第一任务和第二任务,在预定时长T内,第一任务占用内核的时长为t2,第二任务占用内核的时长为t3,则在该预定时长内,第一任务的负载大小为t2/T,第二任务的负载大小为t3/T。该内核的负载为该内核运行的多个任务或软件组件的负载之和。
在S102中,在所述负载满足预设的调度条件时,根据预先设置的共享内存所存储的任务数据,结合初始化的任务位置,调度所述内核运行的任务。
本申请实施例中的内核在对任务进行初始化时,为了便于任务调度,可以将一个或者多个任务,同时在两个以上的内核进行初始化。从而使得在两个以上的内核对任务进行调度。比如,在初始化时,第一任务SWC_1在内核A和内核B进行了初始化。在多核处理器的运行过程中,如果监测到内核A需要进行任务调度,需要将其中的任务调出,则可以将第一任务SWC_1从内核A调往内核B进行处理。
其中,本申请实施例中的负载满足预设的调度条件,可以包括多核处理器中的任意内核的负载大于预定的负载阈值。可以实时监测多核处理器中的各个内核的实时负载,并将监测的负载与预定的负载阈值进行比较,如果监测到的负载大于预定的负载阈值,则表明该内核的负载满足预设的调度条件,可以将该内核中一个或两个以上的任务,调至其它内核进行处理。如果内核的负载小于负载阈值,则不需要对该内核中运行的任务进行调度。
在可能的实现方式中,可以根据不同内核的负载的差异的大小,来确定是负载是否满足调度条件。如图2所示,确定负载满足预设的调度条件的过程可以包括:
在S201中,确定所述多核处理器中的第一内核与第二内核的负载差,所述第一内核和所述第二内核为所述多核处理器中的任意两个内核。
在确定多核多理器中的内核是否需要进行任务调度时,可以将多核处理器中的任意两个内核的负载进行比较,确定二者的负载差。即将用于比较的两个内核的负载作差,得到二者的负载差。假设第一内核和第二内核为多核处理器中的任意两个内核,第一内核的负载为L1,第二内核的负载为L2,则负载差为:|L1-L2|,也即第一内核的负载L1与第二内核的负载L2之间的差值的绝对值。
在S202中,在所述负载差大于预定的差阈值的情况下,所述第一内核的负载满足预设的调度条件。
其中,差阈值用于衡量内核之间的负载的均衡性。当多核处理器中存在内核的负载差大于预定的差阈值时,则表明内核之间的负载的均衡性较差,该负载状态满足调度条件。如果多核处理器中的所有负载差均小于差阈值,则说明多核处理器的负载较为均衡,可以不需要进行内核之间的任务调度。
在内核的负载满足调度条件时,还可以进一步判断内核中的任务或软件组件是否满足调度条件。比如,通过内核的负载比较,确定第一内核满足负载的调度条件时,可以进一步确定第一内核中运行的任务或软件组件是否满足调度条件。其中,第一内核中运行的任务或软件组件满足调度条件,可以包括第一内核中运行的任务或软件组件在其它内核中已完成初始化。当负载的调度条件为第一内核与第二内核的负载差大于预定的差阈值时,任务或软件组件满足调度条件可以包括第一内核中运行的至少一个任务或软件组件,在第二内核中已完成初始化。如果第一内核中运行的任务或软件组件均未在第一内核之外的其它内核中初始化,则第一内核的任务不满足调度条件。
在负载和运行的任务均满足调度条件时,则可以调度内核所运行的任务,如图3所示,可以包括:
在S301中,根据所述初始化的任务位置,确定用于从第一内核调入所述任务的第二内核。
其中,第一内核用于调出所述任务,所述第二内核用于调入所述任务。
在将第一内核中的任务调出时,需要确定用于调出的任务,以及任务调入的目标位置。当第一内核中运行有两个以上的任务,且仅有第一任务在两个内核(第一内核和第二内核)完成初始化时,则可以确定第一任务为用于调出的任务,第二内核为第一任务调入的目标位置。
如果第一内核中运行有两个以上的任务,且包括两个以上的任务在其它内核中初始化时,则可以根据图4所示的方法,确定用于从第一内核调入所述任务的第二内核,包括:
在S401中,选择所述第一内核中用于调出的第一任务。
如图5所示,在第一内核(Core_A)中运行多个任务,分别为SWC_1、SWC_2、SWC_3和SWC_4。第二内核(Core_B)中运行有多个任务,分别为SWC_A、SWC_B和SWC_C。通过第一内核的负载进行检测,第一内核的负载大于预定的负载阈值,或者第一内核与第二内核的负载差大于预定的差阈值,且第一内核的负载大于第二内核的负载,则确定第一内核的负载过大,第一内核为用于调出任务的内核。需要从第一内核中选择用于调出的任务。
在选择第一内核中用于调出的任务时,可以如图6所示,包括:
在S601中,获取所述第一内核所运行的任务,以及所运行的任务的负载。
在用于调出任务的第一内核中运行有多个任务时,可以先确定第一内核中运行的多个任务,以及各个任务的负载的大小。其中,负载的大小可以根据负载在运行过程中占用内核处理时间的比值来确定。
在S602中,根据所述第一内核所运行的任务在内核中的初始化位置,以及所运行的任务的负载,选择所述第一内核中用于调出的第一任务。
根据第一内核所运行的任务的负载,可以确定降低第一内核的负载至小于负载阈值时,需要调的任务,以及任务的数量。比如,第一内核的负载为Lcore_1,负载阈值为Lth,如果第一任务的负载为Lt1,且Lcore_1-Lth>Lt1,则即使将第一任务调度至第二内核运行,仍然未能满足负载均衡的要求,需要进一步将第一内核的任务调出。
在可能的实现方式中,可以将第一内核中的任务按照从大到小的顺序进行排序。按照从大到小的顺序选择任务,如果所选择的任务在其它内核中已初始化,则将该任务调度至其它内核。
在将所选择的任务调度至其它内核后,可以判断第一内核的负载是否小于负载阈值,如果未能小于负载阈值,则按照从大到小的顺序,进一步选择任务,如果所选择的任务在其它内核中已初始化,则将该任务调度至其它内核,直到第一内核的负载小于负载阈值。
不局限于此,也可以根据第一内核中运行的任务的负载,以及是否可调度至其它内核,选择其中的一个或者两个以上的内核调度至其它内核,使得调出后的第一内核的负载小于负载阈值。比如,在任务调度前,第一内核的负载为L,通过在第一内核中选择两个调出的任务,减少的负载为L1+L2,那么,在L-(L1+L2)<Lth,即调出后的第一内核的负载小于负载阈值时,则可以表示对第一内核的任务调度完成。
在可能的实现方式中,静态操作***可以为用于车辆控制的操作***,确定用于调出的第一任务的方法还可以如图7所示,包括:
在S701中,获取车辆的运行状态信息。
其中,车辆的运行状态信息可以包括车辆处于起步行驶状态、加速行驶状态、等速行驶状态、减速行驶状态、转弯行驶状态、上下坡行驶状态、停车状态中的一项或者多项。
不同的运行状态信息,可能对应不同的运行任务,或者不同运行任务的计算量不同。比如,在转弯行驶状态下,需要计算场景中的弯道信息、场景中的障碍物信息,增加场景检测任务的计算量。
在S702中,根据预先设定的运行状态信息与调出任务的对应关系,选择第一内核中用于调出的第一任务。
为了便于快速的对任务进行调度,可以预先设定不同的运行状态信息对应的调出任务。比如,在转弯行驶状态下,由于场景检测任务需要的计算量增大,即场景检测任务的负载增大。为了能够提高场景检测任务能够快速有效的处理,可以预先设定运行状态信息对应的用于调出的第一任务,从而在该运行状态信息下,快速的确定需要调出的任务,提高第一内核运行的可靠性。
在可能的实现方式中,根据设定的运行状态信息与调出任务的对应关系,在检测到运行状态信息发生变化,比如由转弯行驶状态转换为等速行驶状态,则可以进一步包括S703,根据所述车辆的运行状态信息的变化,将所述第一任务调度至所述第一内核中运行。
或者,在可能的实现方式中,还可以根据第一任务调出的时长,即第一任务在第二内核中的运行时长,将第一任务调回第一内核。比如,在检测第一任务在第二内核的运行时长大于第一预定时长时,则可以将第一任务调回第一内核。
或者,还可以实时监测第一内核的负载。在第一内核的负载小于第一阈值时,则可以将第一任务调回至第一内核。其中,第一阈值小于负载阈值。
在S402中,根据初始化的第一任务的内核位置,确定用于调入所述第一任务的第二内核。
在确定了需要用于调出的第一任务(包括一个或两个以上的任务)后,可以根据第一任务初始化的位置,确定第一任务需要调往的目标位置,即用于调入第一任务的第二内核。
当用于调出的第一任务仅包括一个任务,且第一任务初始化的内核仅包括第一内核和第二内核时,则可以直接将第一任务调入第二内核。
当用于调出的第一任务包括两个以上的任务时,则可以根据任务的初始化信息,分别确定各个任务的目标位置。
如果调入第一任务的内核的负载小于预定的第三阈值,则可以允许调入第一任务。使得调入第一任务后,该内核的负载仍然小于预定的负载阈值,有利于保障该内核的任务的处理效率。
或者,如果从第一内核中调出的第一任务存在三个以上的初始化位置,则可以在其它完成初始化的内核中,选择负载最小的内核,作为该第一任务的调入目标位置。
当所选择的第一任务在其它内核中不能调入,包括由于未进行初始化不能调入,或者其它内核由于调入该第一任务后导致该内核的负载超过预定的负载阈值时,则可以重新选择用于调出的任务。比如按照负载从大到小的顺序依次选择用于调出的任务,或者随机选择剩余的用于调出的任务。
在S302中,通过所述第二内核读取所述共享内存所存储的任务数据,并运行调度至第二内核的任务。
本申请实施例中预先设定的共享内存,在共享内存中,可用于存储在两个以上的内核中完成初始化的任务在运行过程中所产生的任务数据。任务在任意内核中运行时,由内核所产生的任务数据,包括任务中的状态机值或变量值等,均可以存储在共享内存。当任务需要对共享内存进行读写操作时,可以采用自旋锁的控制方法,控制不同内核对共享内存的任务数据进行读写操作。即:在同一时间只能由一个任务对其进行读写操作,有利于提升共享内存的任务数据的可靠性,减小数据出现混乱的几率。
比如,在检测到第一内核的负载大于预定的负载阈值,或者第一内核与第二内核的负载差大于预定的差阈值,则可以认为第一内核的负载满足调度条件,可以根据第一内存中运行的任务,确定需要调出的第一任务。根据第一任务初始化的位置,确定可调入第一任务的内核,通过内核的负载对内核进一步筛选,保留调入后负载小于第二阈值或负载阈值的第二内核。第一任务在第一内核中运行时,将运行时产生的任务数据,包括状态机值或变量值等,可以通过IOC通信方式或其它通信方式存储至共享内存中。在第二内核运行第一任务时,可以通过IOC通信方式或其它通信方式,读取任务数据中的状态机值或变量值,使得第二内核在调入第一任务时,可以持续稳定的运行第一任务。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图8为本申请实施例提供的一种任务调度装置的示意图,该装置包括:
负载监测单元801,用于监测多核处理器的各个内核的负载。
任务调度单元802,用于在所述负载满足预设的调度条件时,根据预先设置的共享内存所存储的任务数据,结合初始化的任务位置,调度所述内核运行的任务。
图8所示的任务调度装置,与图1所示的任务调度方法对应。
图9是本申请一实施例提供的任务调度设备的示意图。如图9所示,该实施例的任务调度设备9包括:处理器90、存储器91以及存储在所述存储器91中并可在所述处理器90上运行的计算机程序92,例如任务调度程序。所述处理器90执行所述计算机程序92时实现上述各个任务调度方法实施例中的步骤。或者,所述处理器90执行所述计算机程序92时实现上述各装置实施例中各模块/单元的功能。
示例性的,所述计算机程序92可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器91中,并由所述处理器90执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序92在所述任务调度设备9中的执行过程。
所述任务调度设备可包括,但不仅限于,处理器90、存储器91。本领域技术人员可以理解,图9仅仅是任务调度设备9的示例,并不构成对任务调度设备9的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述任务调度设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器90可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器91可以是所述任务调度设备9的内部存储单元,例如任务调度设备9的硬盘或内存。所述存储器91也可以是所述任务调度设备9的外部存储设备,例如所述任务调度设备9上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器91还可以既包括所述任务调度设备9的内部存储单元也包括外部存储设备。所述存储器91用于存储所述计算机程序以及所述任务调度设备所需的其他程序和数据。所述存储器91还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (13)
1.一种任务调度方法,其特征在于,所述方法包括:
监测多核处理器的各个内核的负载;
在所述负载满足预设的调度条件时,根据预先设置的共享内存所存储的、在两个以上的内核中完成初始化的任务在运行过程中所产生的任务数据,结合初始化的任务位置,将一个或者多个任务,同时在两个以上的内核进行初始化,调度所述内核运行的任务,如果选择的任务在其它内核中已初始化,则将该任务调度至其它内核,所述任务为静态操作***中运行的任务。
2.根据权利要求1所述的方法,其特征在于,所述负载满足预设的调度条件,包括:
所述多核处理器中的第一内核的负载大于预定的负载阈值的情况下,所述第一内核的负载满足所述预设的调度条件,其中,所述第一内核为所述多核处理器中的任意内核。
3.根据权利要求1所述的方法,其特征在于,所述负载满足预设的调度条件,包括:
确定所述多核处理器中的第一内核与第二内核的负载差,所述第一内核和所述第二内核为所述多核处理器中的任意两个内核;
在所述负载差大于预定的差阈值的情况下,所述第一内核的负载满足预设的调度条件。
4.根据权利要求1所述的方法,其特征在于,根据预先设置的共享内存所存储的任务数据,结合初始化的任务位置,调度所述内核运行的任务,包括:
根据所述初始化的任务位置,确定用于从第一内核调入所述任务的第二内核,其中,第一内核用于调出所述任务,所述第二内核用于调入所述任务;
通过所述第二内核读取所述共享内存所存储的任务数据,并运行调度至第二内核的任务。
5.根据权利要求4所述的方法,其特征在于,根据所述初始化的任务位置,确定用于从第一内核调入所述任务的第二内核,包括:
选择所述第一内核中用于调出的第一任务;
根据初始化的第一任务的内核位置,确定用于调入所述第一任务的第二内核。
6.根据权利要求5所述的方法,其特征在于,选择所述第一内核中用于调出的第一任务,包括:
获取所述第一内核所运行的任务,以及所运行的任务的负载;
根据所述第一内核所运行的任务在内核中的初始化位置,以及所运行的任务的负载,选择所述第一内核中用于调出的第一任务。
7.根据权利要求6所述的方法,其特征在于,根据所述第一内核所运行的任务在内核中的初始化位置,以及所运行的任务的负载,选择所述第一内核中用于调出的第一任务,包括:
根据所述第一内核所运行的任务的负载,按照从大到小的顺序查找任务;
在根据所述顺序查找的任务在其它内核有初始化位置的情况下,选择所述顺序查找的任务为用于调出的所述第一任务。
8.根据权利要求5所述的方法,其特征在于,所述方法应用于汽车控制的操作***;
选择所述第一内核中用于调出的第一任务,包括:
获取车辆的运行状态信息;
根据预先设定的运行状态信息与调出任务的对应关系,选择第一内核中用于调出的第一任务。
9.根据权利要求8所述的方法,其特征在于,在运行调度至第二内核的任务之后,所述方法还包括:
根据所述车辆的运行状态信息的变化,或者根据所述第一任务在所述第二内核中的运行时长,将所述第一任务调度至所述第一内核中运行。
10.根据权利要求1-9任一项所述的方法,其特征在于,调度所述内核运行的任务,包括:
通过自旋锁控制不同内核对所述共享内存所存储的任务数据的读写操作。
11.一种任务调度装置,其特征在于,所述装置包括:
负载监测单元,用于监测多核处理器的各个内核的负载;
任务调度单元,用于在所述负载满足预设的调度条件时,根据预先设置的共享内存所存储的、在两个以上的内核中完成初始化的任务在运行过程中所产生的任务数据,结合初始化的任务位置,将一个或者多个任务,同时在两个以上的内核进行初始化,调度所述内核运行的任务,如果选择的任务在其它内核中已初始化,则将该任务调度至其它内核,所述任务为静态操作***中运行的任务。
12.一种任务调度设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至10任一项所述方法的步骤。
13.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至10任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310689484.4A CN116414542B (zh) | 2023-06-12 | 2023-06-12 | 任务调度方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310689484.4A CN116414542B (zh) | 2023-06-12 | 2023-06-12 | 任务调度方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116414542A CN116414542A (zh) | 2023-07-11 |
CN116414542B true CN116414542B (zh) | 2023-11-14 |
Family
ID=87054728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310689484.4A Active CN116414542B (zh) | 2023-06-12 | 2023-06-12 | 任务调度方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116414542B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991246A (zh) * | 2023-09-27 | 2023-11-03 | 之江实验室 | 用于导览机器人的算法调度方法、装置及导览机器人*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184125A (zh) * | 2011-06-02 | 2011-09-14 | 首都师范大学 | 异构多核环境下基于程序行为在线分析的负载均衡方法 |
CN104539972A (zh) * | 2014-12-08 | 2015-04-22 | 中安消技术有限公司 | 一种多核处理器中视频并行解码的控制方法和装置 |
JP2019074851A (ja) * | 2017-10-13 | 2019-05-16 | 株式会社デンソー | 電子制御装置 |
CN110297661A (zh) * | 2019-05-21 | 2019-10-01 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于amp构架dsp操作***的并行计算方法、***及介质 |
CN115470006A (zh) * | 2022-10-09 | 2022-12-13 | 电子科技大学 | 一种基于微内核的负载均衡方法 |
CN115686800A (zh) * | 2022-12-30 | 2023-02-03 | 摩尔线程智能科技(北京)有限责任公司 | 用于多核***的动态核心调度方法和装置 |
-
2023
- 2023-06-12 CN CN202310689484.4A patent/CN116414542B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184125A (zh) * | 2011-06-02 | 2011-09-14 | 首都师范大学 | 异构多核环境下基于程序行为在线分析的负载均衡方法 |
CN104539972A (zh) * | 2014-12-08 | 2015-04-22 | 中安消技术有限公司 | 一种多核处理器中视频并行解码的控制方法和装置 |
JP2019074851A (ja) * | 2017-10-13 | 2019-05-16 | 株式会社デンソー | 電子制御装置 |
CN110297661A (zh) * | 2019-05-21 | 2019-10-01 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 基于amp构架dsp操作***的并行计算方法、***及介质 |
CN115470006A (zh) * | 2022-10-09 | 2022-12-13 | 电子科技大学 | 一种基于微内核的负载均衡方法 |
CN115686800A (zh) * | 2022-12-30 | 2023-02-03 | 摩尔线程智能科技(北京)有限责任公司 | 用于多核***的动态核心调度方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116414542A (zh) | 2023-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190324772A1 (en) | Method and device for processing smart contracts | |
CN116414542B (zh) | 任务调度方法、装置、设备及存储介质 | |
CN111597040A (zh) | 一种资源分配方法、装置、存储介质和电子设备 | |
CN103329102A (zh) | 多处理器*** | |
CN109739700B (zh) | 一种接口测试方法和装置 | |
CN112802359A (zh) | 一种停车场管理方法、装置及服务器 | |
CN111338716A (zh) | 基于规则引擎的数据处理方法、装置及终端设备 | |
CN117216758B (zh) | 应用安全检测***及方法 | |
CN116048740A (zh) | 基于众核***的任务调度方法、***、电子设备及介质 | |
CN112199272A (zh) | 一种智能终端的测试方法、装置、终端设备及介质 | |
CN116627356A (zh) | 一种大容量存储数据的分布控制方法及*** | |
CN114425787B (zh) | 机器人自动测试的控制方法、装置、服务器及存储介质 | |
CN111199084A (zh) | 动力学模型的接入方法和装置 | |
CN111625358A (zh) | 一种资源分配方法、装置、电子设备及存储介质 | |
KR20170037851A (ko) | 매니코어 시스템을 작동하기 위한 방법 및 장치 | |
US20210124600A1 (en) | Rescheduling jit compilation based on jobs of parallel distributed computing framework | |
CN111401560A (zh) | 推理任务的处理方法、设备和存储介质 | |
CN117472593B (zh) | 一种多线程间资源分配方法及*** | |
US11783168B2 (en) | Network accuracy quantification method and system, device, electronic device and readable medium | |
CN113190497B (zh) | 一种可重构处理器的任务处理方法及可重构处理器 | |
CN118250226A (zh) | 一种下载方法、下载装置、汽车诊断设备及存储介质 | |
CN111176134B (zh) | 仿真***适配方法、装置和终端 | |
CN116149323A (zh) | 一种机器人的过门方法、装置及设备 | |
CN115081596A (zh) | 卷积神经网络模型推理方法、装置、设备及存储介质 | |
CN116542192A (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 |