CN116185582B - 多核调度的方法、装置、车辆、电子设备及介质 - Google Patents

多核调度的方法、装置、车辆、电子设备及介质 Download PDF

Info

Publication number
CN116185582B
CN116185582B CN202211716884.1A CN202211716884A CN116185582B CN 116185582 B CN116185582 B CN 116185582B CN 202211716884 A CN202211716884 A CN 202211716884A CN 116185582 B CN116185582 B CN 116185582B
Authority
CN
China
Prior art keywords
task
core
migration
target
tasks
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
CN202211716884.1A
Other languages
English (en)
Other versions
CN116185582A (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.)
Guoke Chushi Chongqing Software Co ltd
Original Assignee
Guoke Chushi Chongqing Software 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 Guoke Chushi Chongqing Software Co ltd filed Critical Guoke Chushi Chongqing Software Co ltd
Priority to CN202211716884.1A priority Critical patent/CN116185582B/zh
Priority to CN202410174062.8A priority patent/CN118034880A/zh
Publication of CN116185582A publication Critical patent/CN116185582A/zh
Application granted granted Critical
Publication of CN116185582B publication Critical patent/CN116185582B/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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • 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)
  • Hardware Redundancy (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本公开涉及一种多核调度的方法、装置、车辆、电子设备及介质,上述方法包括:获取车辆多核处理器中各核的任务初始分配信息和各核上任务的优先级;根据上述任务初始分配信息和上述各核上任务的优先级,确定任务分配不均衡程度,上述任务分配不均衡程度表示各核之间的任务分配数量和各核内不同优先级任务的执行时长至少之一的不均衡程度;根据上述任务分配不均衡程度,在各核之间进行任务迁移调度。该方法能够提升多核处理器的利用率,实现多核负载均衡,在初始状态下用户只需要根据任务的重要程度来指定任务的优先级即可,无需考虑任务和核之间的对应关系而进行任务的初始分配设置,极大地降低了初始化进行任务分配的难度。

Description

多核调度的方法、装置、车辆、电子设备及介质
技术领域
本公开涉及车辆任务调度领域,尤其涉及一种多核调度的方法、装置、车辆、电子设备及介质。
背景技术
在车辆领域,汽车的智能化应用越来越普及。汽车开放系统架构(AUTOSAR,AUTomotive Open System ARchitecture)是由全球各家汽车制造商、零部件供应商以及各种研究、服务机构共同参与的一种汽车电子系统的合作开发框架,并建立了一个开放的汽车控制器(ECU)标准软件架构。AUTOSAR具有经典操作平台(CP,Classsic Platform)和自适应平台(AP,Adaptive Platform)。
针对自动驾驶车辆而言,在有限的计算和存储条件(车规级芯片对应的计算资源和有限的存储资源等)下,具有任务及时响应和一些重要程度较高的任务(例如根据路况确定是否进行刹车的任务)快速处理的需求。目前,在AUTOSAR的CP操作平台支持多核调度,AUTOSAR的CP操作平台在进行多核调度时,主要调度逻辑是各核独立调度,每个核只能处理绑定在本核上面的任务,在各个核内基于算法实现核内任务的最优调度。然而,这种调度方式如果面对一开始任务分配不合理的场景,容易出现有的核过度负载而有些核始终空闲导致的核负载不均衡的问题,如此导致多核处理器的利用率较低。
发明内容
为克服相关技术中存在的问题,本公开提供一种多核调度的方法、装置、车辆、电子设备及介质。
根据本公开实施例的第一方面,提供一种多核调度的方法。上述方法包括:获取车辆多核处理器中各核的任务初始分配信息和各核上任务的优先级;根据上述任务初始分配信息和上述各核上任务的优先级,确定任务分配不均衡程度,上述任务分配不均衡程度表示各核之间的任务分配数量和各核内不同优先级任务的执行时长至少之一的不均衡程度;根据上述任务分配不均衡程度,在各核之间进行任务迁移调度。
在一些实施例中,根据上述任务分配不均衡程度,在各核之间进行任务迁移调度,包括:根据上述各核之间的任务分配数量的不均衡程度,在各核中分别确定是否需要进行任务迁移和对应的迁移状态;在确定第一核需要进行任务迁移且迁移状态为迁出状态的情况下,根据上述第一核的就绪队列中任务的优先级相对高低,将上述就绪队列中优先级较高的一个或多个第一任务迁出至迁移队列。
在一些实施例中,上述迁移队列是基于自旋锁来维护的,在同一个时刻,只能有一个核来访问上述迁移队列。
在一些实施例中,上述方法还包括:在确定第二核需要进行任务迁移且迁移状态为迁入状态的情况下,将上述迁移队列中的一个或多个第二任务迁入至上述第二核的就绪队列。
在一些实施例中,上述迁移队列内的任务按照优先级由高到低进行排序。将上述迁移队列中的一个或多个第二任务迁入至上述第二核的就绪队列,包括:基于上述迁移队列内任务的优先级排序,将上述迁移队列中优先级排序处于靠前预设名次的第二任务迁入至上述第二核的就绪队列。
在一些实施例中,根据上述各核之间的任务分配数量的不均衡程度,在各核中分别确定是否需要进行任务迁移和对应的迁移状态,包括:根据上述多核处理器的总核数和总任务数量,确定核均衡任务数量;确定各核的任务分配数量和上述核均衡任务数量的数量关系;在上述数量关系表示第一核的任务分配数量大于上述核均衡任务数量的情况下,确定上述第一核需要进行任务迁移且对应的迁移状态为迁出状态,迁出任务数量为上述任务分配数量与上述核均衡任务数量的差值;在上述数量关系表示第二核的任务分配数量小于上述核均衡任务数量的情况下,确定上述第二核需要进行任务迁移且对应的迁移状态为迁入状态,迁入任务数量为上述核均衡任务数量与上述任务分配数量的差值;在上述数量关系表示第三核的任务分配数量处于上述核均衡任务数量所在区间或等于上述核均衡任务数量的情况下,确定上述第三核无需进行任务迁移。
在一些实施例中,根据上述多核处理器的总核数和总任务数量,确定核均衡任务数量,包括:基于原子计数器,获取活动状态的总任务数量;根据上述总任务数量和上述多核处理器的总核数,计算核平均任务数量,上述核平均任务数量作为上述核均衡任务数量。
在一些实施例中,根据上述多核处理器的总核数和总任务数量,确定核均衡任务数量,包括:基于原子计数器,获取活动状态的总任务数量;根据上述总任务数量,确定目标数量浮动值;根据上述总任务数量和上述多核处理器的总核数,计算核平均任务数量;根据上述核平均任务数量和上述目标数量浮动值,生成均衡数量范围,当核上的任务数量在上述均衡数量范围内,则认为该核的任务数量是均衡的。
在一些实施例中,根据上述任务分配不均衡程度,在各核之间进行任务迁移调度,包括:根据各核内不同优先级任务的执行时长的不均衡程度,在各核中确定是否存在需要被迁出的目标迁出任务;其中,上述目标迁出任务包括:在运行任务的运行时长超过设定阈值的情况下,就绪队列中运行时间为零的目标优先级对应的任务;在第四核中存在上述目标迁出任务的情况下,确定上述第四核除外的其他核中是否存在目标迁入核,上述目标迁入核中任务的最高优先级小于上述目标迁出任务的优先级;在存在上述目标迁入核的情况下,将上述目标迁出任务迁入至上述目标迁入核。
在一些实施例中,将上述目标迁出任务迁入至上述目标迁入核,包括:将上述目标迁出任务迁出至迁移队列,并根据上述目标迁入核来标记上述目标迁出任务对应的迁移目标;在各核设定的迁移队列访问时机,各核访问上述迁移队列;在第五核访问上述迁移队列并确定存在标记上述第五核为迁移目标的第一目标迁出任务的情况下,将上述迁移队列中的上述第一目标迁出任务迁入至上述第五核的就绪队列。
在一些实施例中,上述迁移队列是基于自旋锁来维护的,在同一个时刻,只能有一个核来访问上述迁移队列。
在一些实施例中,上述各核设定的迁移队列访问时机包括以下中的一种:各核预先设定有迁移队列的访问时序,基于上述访问时序执行访问迁移队列的操作;或者,在各核发生运行任务处理完成的情况下,执行访问迁移队列的操作;或者,在各核发生就绪队列的任务数量变化的情况下,执行访问迁移队列的操作;或者,在上述迁移目标上设置有需要检查迁移队列任务的检查标记,在各核中确定是否设置有上述检查标记,设置有上述检查标记的核执行访问迁移队列的操作。
在一些实施例中,根据上述目标迁入核来标记上述目标迁出任务对应的迁移目标,包括:在存在多个目标迁入核的情况下,将上述多个目标迁入核标记为上述目标迁出任务对应的迁移目标;或者,在存在多个目标迁入核的情况下,将上述多个目标迁入核中任务的最高优先级中最小的核标记为上述目标迁出任务对应的迁移目标。
在一些实施例中,上述方法还包括:在不存在上述目标迁入核的情况下,上述第四核标记上述目标迁出任务为待迁出状态,并持续监测上述第四核除外的其他核中是否存在目标迁入核;在设定时长内监测到不存在上述目标迁入核的情况下,取消上述目标迁出任务的待迁出状态的标记;在设定时长内监测到存在上述目标迁入核的情况下,将上述目标迁出任务迁出至迁移队列,标记上述目标迁出任务的迁移目标为上述目标迁入核,并在上述目标迁入核上设置需要检查迁移队列任务的检查标记。
在一些实施例中,在各核内,就绪队列中的任务和运行任务基于优先级高低来运行;其中,在就绪队列中存在比运行任务的优先级高的目标任务的情况下,上述目标任务抢占处理器资源,由上述运行任务的运行状态切换至上述目标任务的运行状态。
根据本公开实施例的第二方面,提供一种多核调度的装置。上述装置包括:信息获取模块、确定模块和调度模块。上述信息获取模块用于获取车辆多核处理器中各核的任务初始分配信息和各核上任务的优先级。上述确定模块用于根据上述任务初始分配信息和上述各核上任务的优先级,确定任务分配不均衡程度,上述任务分配不均衡程度表示各核之间的任务分配数量和各核内不同优先级任务的执行时长至少之一的不均衡程度。上述调度模块用于根据上述任务分配不均衡程度,在各核之间进行任务迁移调度。
根据本公开实施例的第三方面,提供一种车辆,存储有一组指令集,上述指令集被上述车辆的系统模块执行,以实现本公开第一方面所提供的多核调度的方法。
根据本公开实施例的第四方面,提供一种电子设备,包括:处理器;用于存储上述处理器可执行指令的存储器;上述处理器,用于从上述存储器中读取上述可执行指令,并执行上述指令以实现本公开第一方面所提供的多核调度的方法。
根据本公开实施例的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开第一方面所提供的多核调度的方法的步骤。
本公开的实施例提供的技术方案可以包括以下有益效果:
通过根据任务初始分配信息和各核上任务的优先级,确定各核之间的任务分配数量和各核内不同优先级任务的执行时长至少之一的不均衡程度,从而在各核之间进行任务迁移调度,使得各核之间的任务分配数量达到均衡和/或各核内较高优先级任务能够及时得到执行且保证所需的执行时长,一方面,能够提升多核处理器的利用率,实现多核负载均衡,避免有的核空闲而有的核任务超负荷运行,或者避免有些核内的高优先级任务始终无法得到执行的情况;另一方面,由于本公开实施例提供的多核调度的方法能够随着任务的运行过程进行动态调整,实现多核负载均衡以及确保高优先级任务的及时执行,在初始状态下用户(例如系统开发人员)只需要根据任务的重要程度来指定任务的优先级即可,无需考虑任务和核之间的对应关系而进行任务的初始分配设置,极大地降低了初始化进行任务分配的难度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的多核调度的方法的流程图。
图2是根据一示例性实施例的多核处理器中各核的任务初始分配信息和各核上任务的优先级的示意图。
图3是根据一示例性实施例的步骤S130的详细实施流程图。
图4是根据一示例性实施例的步骤S310的详细实施流程图。
图5A是根据一示例性实施例的迁移队列和各核内处于活动状态的任务的示意图。
图5B是根据一示例性实施例的各核内处于活动状态中运行任务突出显示的示意图。
图5C是根据一示例性实施例的第一核将第一任务迁出至迁移队列的状态示意图。
图5D是根据一示例性实施例的第二核将第二任务迁入至就绪队列的状态示意图。
图6是根据另一示例性实施例的步骤S130的详细实施流程图。
图7A是根据另一示例性实施例的迁移队列和各核内处于活动状态中运行任务突出显示的示意图。
图7B是根据另一示例性实施例的第四核在确定存在目标迁入核的情况下将目标迁出任务迁出至迁移队列的状态示意图。
图7C是根据另一示例性实施例的目标迁入核将目标迁出任务从迁移队列迁入至就绪队列的状态示意图。
图8是根据一示例性实施例的步骤S630的详细实施流程图。
图9是根据又一示例性实施例的步骤S130的详细实施流程图。
图10是根据一示例性实施例示出的多核调度的装置的框图。
图11是根据一示例性实施例示出的车辆的框图。
图12是根据一示例性实施例示出的电子设备的框图。
具体实施方式
下面将结合附图详细地对示例性实施例进行描述说明。
应当指出,相关实施例及附图仅为描述说明本公开所提供的示例性实施例,而非本公开的全部实施例,也不应理解本公开受相关示例性实施例的限制。
应当指出,本公开中所用术语“第一”、“第二”等仅用于区别不同步骤、设备或模块等。相关术语既不代表任何特定技术含义,也不表示它们之间的顺序或者相互依存关系。
应当指出,本公开中所用术语“一个”、“多个”、“至少一个”的修饰是示意性而非限制性的。除非在上下文另有明确指出,否则应该理解为“一个或多个”。
应当指出,本公开中所用术语“和/或”,用于描述关联对象之间的关联关系,一般表示至少存在三种关联关系。例如,A和/或B,至少可以表示:单独存在A,同时存在A和B,单独存在B这三种关联关系。
应当指出,本公开的方法实施例中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。除非特别说明,本公开的范围不受相关实施例中步骤的描述顺序限制。
需要说明的是,本公开中所有获取信号、信息或数据的动作都是在遵照所在地国家相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
示例性方法
图1是根据一示例性实施例示出的多核调度的方法的流程图。
参照图1所示,本公开的实施例提供的多核调度的方法,包括以下步骤:S110、S120和S130。上述方法可以应用于具有多核处理器的电子设备,例如为具有多核处理器的自动驾驶车辆,或者为具有多核处理器且能够与车辆进行通信的电子设备,该电子设备用于对车辆多核处理器进行任务调度,例如该电子设备可以是车载设备或为车辆的调度提供服务的服务器等。
在步骤S110,获取车辆多核处理器中各核的任务初始分配信息和各核上任务的优先级。
图2是根据一示例性实施例的多核处理器中各核的任务初始分配信息和各核上任务的优先级的示意图。
上述任务初始分配信息用于表示在任务开始运行阶段各个任务和多核处理器中核的对应关系。例如,参照图2所示,多核处理器包含3个核,分别为核0、核1和核2,其中核0分配有任务T1、任务T2、任务T3和任务T4,核1分配有任务T5,核2分配有任务T6、任务T7和任务T8。这里的任务数量仅作为示例,在实际的车辆运行环境中,多核处理器对应处理的任务数量可以变化。
上述任务初始分配信息可以是在多核处理器初始化过程中为各核(core)分配各个任务而生成。具体可以是多核处理器根据用户(例如为系统开发人员)的初始化配置信息来进行初始化任务分配,例如初始化配置信息中声明有哪个核绑定哪些任务。
每个任务的优先级是预先分配好的,例如由用户在初始化配置信息中根据各个任务的重要程度来配置各个任务的优先级。在一些实施例中,上述优先级是全局优先级,例如参照图2所示,初始化配置信息中声明的各个任务的优先级一共分为5个等级,分别表示为1级~5级,1级对应的优先程度最低,5级对应的优先程度最高。其中,任务T1的优先级为5级,任务T6的优先级为4级,任务T2、任务T3和任务T7的优先级为3级,任务4和任务T8的优先级为2级,任务T5的优先级为1级。
在一些应用场景下,上述方法的执行主体为自动驾驶车辆,该自动驾驶车辆能够从初始化配置信息中获取车辆多核处理器中各核的任务初始分配信息以及各个任务的优先级。
在另一些应用场景下,上述方法的执行主体为具有多核处理器且能够与车辆进行通信的电子设备,上述电子设备能够从车辆的初始化配置信息中获取车辆多核处理器中各核的任务初始分配信息以及各个任务的优先级。
在步骤S120,根据上述任务初始分配信息和上述各核上任务的优先级,确定任务分配不均衡程度。
上述任务分配不均衡程度表示各核之间的任务分配数量和各核内不同优先级任务的执行时长至少之一的不均衡程度。
例如,在一些实施例中,上述任务分配不均衡程度表示各核之间的任务分配数量的不均衡程度。例如,参照图2所示,存在以下场景A:核0的任务分配数量为4,核1的任务分配数量为1,核2的任务分配数量为3,核2的任务分配数量相较于核0和核3而言相对较少,各核之间的任务分配数量存在不均衡。这就需要进行核间任务调度来实现各核任分配数量的均衡。
在另一些实施例中,上述任务分配不均衡程度表示各核内不同优先级任务的执行时长的不均衡程度。不同优先级任务对应的执行时机是有先后要求的,不同优先级任务的执行时长对应的均衡状态包括各个优先级任务按照各自对应的优先级先后进行及时的执行,如果某个目标优先级的任务在其他任务的执行时长超过设定阈值而自身的执行时长仍然为0,说明该目标优先级的任务尚未得到及时执行,说明在不同优先级任务的执行时长上存在不均衡。
以核0作为示例,一般而言,在核0内,各个任务按照优先级的顺序依次执行或者按照优先级的顺序以占用时间片的形式执行,相同优先级对应的任务按照唤醒时间的顺序依次执行。以各个任务按照优先级的顺序依次执行作为示例,正常情况下,优先级为5级(为本实施例中的最高优先级)的任务T1优先执行,在任务T1执行完之后,先是任务T2执行,然后是任务T3执行,最后是任务T4执行,一般而言,任务T1的执行时长一般在2s内就可以执行完成。然而,存在以下场景B:在实际运行过程中,任务T1已经执行了3s,而任务T2的运行时间仍然为0,这时高优先级的任务迟迟不能执行,存在各核内不同优先级任务的执行时长的不均衡程度。由于任务T2的优先级较高且需要能够按照预期时间(例如最晚要在3.1s(设定阈值之后的100ms)内开始执行或得到执行结果等)及时执行,需要进行核间任务调度。
在又一些实施例中,上述任务分配不均衡程度表示各核之间的任务分配数量和各核内不同优先级任务的执行时长的不均衡程度,例如同时存在前述示例的场景A和场景B。
在步骤S130,根据上述任务分配不均衡程度,在各核之间进行任务迁移调度。
例如,在示例的场景A,通过在核间进行任务迁移调度,使得各核之间的任务分配数量达到均衡;在示例的场景B,通过在各核之间进行任务迁移调度,使得某些核内优先级较高且一直尚未得到执行的任务能够被迁移至其他核得到及时的执行,使得各核内不同优先级任务的执行时长达到均衡。
图3是根据一示例性实施例的步骤S130的详细实施流程图。
在一些实施例中,参照图3所示,上述步骤S130中,根据上述任务分配不均衡程度,在各核之间进行任务迁移调度,包括以下步骤S310、S320和S330。
其中,针对同一个核,基于步骤S310确定的迁移状态结果,对应执行步骤S320或S330的一种;针对多核处理器中的各个核,同时存在一部分核迁出任务且另一部分核迁入任务对应的情况。
例如,上述步骤S310、S320、S330是由调度模块实现的,该调度模块位于每个核中,由每个核执行;在一些实施例中,有的核的调度模块仅需要执行步骤S310和S320,有的核的调度模块仅需要执行步骤S310和S330。
在步骤S310,根据上述各核之间的任务分配数量的不均衡程度,在各核中分别确定是否需要进行任务迁移和对应的迁移状态。
在一些实施例中,如果某个核H1的任务分配数量相对于其他核而言是不均衡的,例如,如果该核H1的任务分配数量大于均衡状态下的数量,则该核H1需要进行任务迁移且对应的迁移状态是迁出状态;如果该核H1的任务分配数量小于均衡状态下的数量,则该核H1需要进行任务迁移且对应的迁移状态是迁入状态;如果该核H1的任务分配数量等于均衡状态下的数量或在均衡状态下的数量的范围之内,则该核H1不需要进行任务迁移。
图4是根据一示例性实施例的步骤S310的详细实施流程图。
在一些实施例中,参照图4所示,上述步骤S310中,根据上述各核之间的任务分配数量的不均衡程度,在各核中分别确定是否需要进行任务迁移和对应的迁移状态,包括以下步骤:S410、S420、S431、S432和S433。
在步骤S410,根据上述多核处理器的总核数和总任务数量,确定核均衡任务数量。
上述核均衡数量是各核之间任务分配均衡状态对应的任务数量。上述核均衡数量可以是一个确定值或者为一个数值范围。
在一些实施例中,上述步骤S410中,根据上述多核处理器的总核数和总任务数量,确定核均衡任务数量,包括:基于原子计数器,获取活动状态的总任务数量;根据上述总任务数量和上述多核处理器的总核数,计算核平均任务数量,上述核平均任务数量作为上述核均衡任务数量。
原子计数器是用于统计全局任务数量的一个计数器,该计数器中能够统计初始化配置信息所涉及的全部任务。本实施例通过基于原子计数器来活动状态的总任务数量,可以安全、快捷地得到任务数量,而不用去遍历各个核对应的任务列表来获取各核的任务数量并对多核的任务数量进行求和计算任务总数量。在其他实施例中,可以理解的是,也可以通过针对各核的任务列表进行统计计算来得到总任务数量。
对于车辆操作系统而言,任务对应的状态可以和线程状态关联对应,包含但不限于是:睡眠、就绪、运行、中断(或描述为阻塞)和等待等这些状态,活动状态(active)的任务是指活动中且尚未结束的任务,涵盖处于运行、就绪、等待和阻塞状态等的任务等。
睡眠状态为:任务只以代码的形式存在,未交给操作系统管理的状态;就绪状态为:任务已经处于可实施的状态并等待处理器(CPU)资源的分配;运行状态为:获得了处理器资源执行的状态;中断状态为:正在运行的任务响应于中断请求中断执行原处理逻辑而去执行中断服务子程序(ISR);等待状态(也称为挂起状态)为:正在运行的任务,需要等待一个事件的发生才能运行,自身的cpu使用权被剥夺并处于等待状态。
上述核平均任务数量是由活动状态的总任务数量active tasks和多核处理器的总核数cores计算得到的。
作为示例,核平均任务数量per_core_tasks的计算公式表示为以下形式:
per_core_tasks=floor(active tasks/cores)+need_balance,(1)
need_balance=active tasks%cores!=0?1:0,(2)
其中,floor()表示向下取整函数;need_balance表示平衡常数;公式(2)表示当核平均任务数量不能被总核数整除即余数不等于0的情况下,平衡常数为1;当核平均任务数量能够被总核数整除即余数等于0的情况下,平衡常数为0。
例如,针对前述图2示例的核0~核2而言,活动状态的总任务数量active tasks为8,总核数cores为3,则核平均任务数量per_core_tasks=8/3+1=3。
在另一些实施例中,上述步骤S410中,根据上述多核处理器的总核数和总任务数量,确定核均衡任务数量,包括:基于原子计数器,获取活动状态的总任务数量;根据上述总任务数量,确定目标数量浮动值;根据上述总任务数量和上述多核处理器的总核数,计算核平均任务数量;根据上述核平均任务数量和上述目标数量浮动值,生成均衡数量范围,当核上的任务数量在上述均衡数量范围内,则认为该核的任务数量是均衡的。
根据上述总任务数量,确定目标数量浮动值,包括:根据上述总任务数量所处的数量区间,确定对应的目标数量浮动值。在一些实施例中,预先存储有总任务数量所处的数量区间与对应的数量浮动值之间的映射关系表,例如总任务数量在Z1~Z2,对应的数量浮动值为f1,总任务数量在Z2~Z3,对应的数量浮动值为f2,其中,Z3>Z1,f2>f1;通过在映射关系表中查询总任务数量对应的数量区间,便能得到对应的目标数量浮动值。
在一些实施例中,根据核平均任务数量和上述目标数量浮动值,生成均衡数量范围可以是:在核平均任务数量per_core_tasks的上下进行目标数量浮动值f0的浮动而得到均衡数量范围,即均衡数量范围为:[per_core_tasks-f0,per_core_tasks+f0];在另一些实施例中,还可以是在核平均任务数量per_core_tasks之上进行上述目标数量浮动值f0的浮动而得到均衡数量范围,即均衡数量范围为:[per_core_tasks,per_core_tasks+f0]等。
在步骤S420,确定各核的任务分配数量和上述核均衡任务数量的数量关系。
针对每个核在运行任务的各个动态时刻,上述数量关系包含大于、小于或等于三种情况中的一种。由于核间任务的迁移调度是动态执行的,因此同一个核在不同时刻下对应的数量关系可能有变化。
在步骤S431,在上述数量关系表示第一核的任务分配数量大于上述核均衡任务数量的情况下,确定上述第一核需要进行任务迁移且对应的迁移状态为迁出状态,迁出任务数量为上述任务分配数量与上述核均衡任务数量的差值。
例如,针对核0而言,核0的任务分配数量为4,核均衡任务数量为3,则核0属于第一核的情况,需要进行任务迁移且为迁出状态。
在一些实施例中,实际迁出任务的数量可能等于或小于根据上述差值计算得到的迁出任务数量,实际迁出任务的数量小于计算得到的迁出任务数量的一种示例情况可以是准备迁出的某个任务在被迁出前已经在所在核内开始运行,无需迁出。
在步骤S432,在上述数量关系表示第二核的任务分配数量小于上述核均衡任务数量的情况下,确定上述第二核需要进行任务迁移且对应的迁移状态为迁入状态,迁入任务数量为上述核均衡任务数量与上述任务分配数量的差值。
例如,针对核1而言,核1的任务分配数量为1,核均衡任务数量为3,则核1属于第二核的情况,需要进行任务迁移且为迁入状态。
在一些实施例中,实际迁入任务的数量可能等于或小于根据上述差值计算得到的迁入任务数量,实际迁入任务的数量小于计算得到的迁入任务数量的一种示例情况可以是迁移队列中任务个数小于上述迁入任务数量。
在步骤S433,在上述数量关系表示第三核的任务分配数量处于上述核均衡任务数量所在区间或等于上述核均衡任务数量的情况下,确定上述第三核无需进行任务迁移。
例如,针对核3而言,核3的任务分配数量为3,核均衡任务数量为3,则核3属于第三核的情况,不需要进行任务迁移。
在步骤S320,在确定第一核需要进行任务迁移且迁移状态为迁出状态的情况下,根据上述第一核的就绪队列中任务的优先级相对高低,将上述就绪队列中优先级较高的一个或多个第一任务迁出至迁移队列。
将各核中要进行迁出的任务描述为第一任务。
图5A是根据一示例性实施例的迁移队列和各核内处于活动状态的任务的示意图。图5B是根据一示例性实施例的各核内处于活动状态中运行任务突出显示的示意图。
参照图5A所示,采用矩形框示意迁移队列510,并采用虚线框示意核0~核2中各自处于活动状态的任务。在一些实施例中,迁移队列是一个用于存放各核之间的迁移任务的一个数据列表,由该迁移队列510实现任务在各核之间的中转和迁移。参照图5B所示,采用填充框和白色框来区分显示各核的运行任务和就绪任务,其中填充框示意的是运行任务,白色框示意的是就绪任务,就绪任务位于就绪列表中。例如核0中当前时刻的运行任务为任务T1,就绪任务是任务T2、任务T3和任务T4。核1中当前时刻的运行任务为任务T5。核2中当前时刻的运行任务为任务T6,就绪任务是任务T7和任务T8。
图5C是根据一示例性实施例的第一核将第一任务迁出至迁移队列的状态示意图。
综合考虑核内按照优先级高低运行的策略和核间调度迁移策略,如果打断核内正在运行的运行任务(说明已经是核内最高优先级任务了)产生的时间成本以及对高优先级任务的资源抢占可能导致的重要任务(例如根据路况确定是否进行刹车的任务、根据感知的红绿灯显示信息进行车辆行驶状态的判断任务等)无法及时执行,如此会引起车辆功能异常以及安全隐患等,因此本公开的实施例采用以下迁移策略:从就绪队列选取任务进行任务迁出而不迁移正在运行的任务。
例如,参照图5C所示,核0属于第一核的情况,迁出任务数量为4-3=1个,则将核0的就绪队列(包含就绪任务T2、T3和T4)中优先级较高(这里为3级)的1个第一任务迁出至迁移队列,在任务T2和任务T3具有相同优先级的情况下,这里是将唤醒时间较早的任务作为迁出任务,例如示例的第一任务为任务T2。
需要说明的是,迁移队列510本身并不放置任务的具体内容,而仅通过任务在不同列表的所属关系来进行任务与各核之间对应关系的调整。例如,第一核将自身就绪队列中的任务迁出至迁移队列510。第二核将迁移队列510中的任务迁入至自身就绪队列。
在一些实施例中,上述迁移队列510是基于自旋锁来维护的,在同一个时刻,只能有一个核来访问上述迁移队列。
自旋锁是为实现保护共享资源而提出一种锁机制,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁,对于自旋锁,如果资源已经被占用,资源调用者一直监听该自旋锁的保持者是否已经释放了锁,而该资源调用者的状态不会处于休眠。
在步骤S330,在确定第二核需要进行任务迁移且迁移状态为迁入状态的情况下,将上述迁移队列中的一个或多个第二任务迁入至上述第二核的就绪队列。
将各核中要进行迁入的任务描述为第二任务,第二任务是第一任务中的部分或全部任务。
图5D是根据一示例性实施例的第二核将第二任务迁入至就绪队列的状态示意图。
例如,参照图5D所示,核1属于第二核的情况,迁入任务数量为3-1=2个。由于之前迁移队列510中仅迁入了一个任务T2,则这里的实施例中核1将迁移队列510中的任务T2(第二任务的一种示例)迁入至自身的就绪队列。
在一些实施例中,在各核内,就绪队列中的任务和运行任务基于优先级高低来运行;其中,在就绪队列中存在比运行任务的优先级高的目标任务的情况下,上述目标任务抢占处理器资源,由上述运行任务的运行状态切换至上述目标任务的运行状态。
例如,在任务T2迁入的一瞬间,核1内部的任务T5是正在运行的运行任务,任务T2为就绪任务,由于任务T2的优先级为3级,运行任务T5的优先级为1级,则在核1迁入任务T2之后,根据优先级高低进行调度过程中,任务T2会抢占运行任务T5对应的处理器资源而开始运行,而任务T5则处于阻塞状态,例如图5D中采用填充框示意的任务T2处于运行状态。
在一些实施例中,上述迁移队列510内的任务按照优先级由高到低进行排序。例如,在上述迁移队列存在多个任务的情况下,多个任务按照优先级从高到低的顺序进行先后排序。
将上述迁移队列中的一个或多个第二任务迁入至上述第二核的就绪队列,包括:基于上述迁移队列内任务的优先级排序,将上述迁移队列中优先级排序处于靠前预设名次的第二任务迁入至上述第二核的就绪队列。
通过根据优先级排序从迁移队列中迁入第二任务,能够使得迁出的优先级较高的任务被迁入至第二核内之后能够快速得到执行。
图6是根据另一示例性实施例的步骤S130的详细实施流程图。
在另一些实施例中,参照图6所示,上述步骤S130中,根据上述任务分配不均衡程度,在各核之间进行任务迁移调度,包括以下步骤:S610、S620和S630。
在步骤S610,根据各核内不同优先级任务的执行时长的不均衡程度,在各核中确定是否存在需要被迁出的目标迁出任务。
上述目标迁出任务包括:在运行任务的运行时长超过设定阈值的情况下,就绪队列中运行时间为零的目标优先级对应的任务。
例如,针对上述示例的场景B,在核0内,任务T1的执行时长一般在2s内就可以执行完成。然而,存在以下场景B:在实际运行过程中,任务T1已经执行了3s(设定阈值的示例),而任务T2的运行时间仍然为0,则核0中的目标迁出任务为任务T1。
在步骤S620,在第四核中存在上述目标迁出任务的情况下,确定上述第四核除外的其他核中是否存在目标迁入核,上述目标迁入核中任务的最高优先级小于上述目标迁出任务的优先级。
在一些实施例中,该步骤S620由第四核的调度模块来执行。在其他实施例中,可以由第四核之外的其他核的调度模块来执行。
核0为上述第四核的一种示例,在一些实施例中,核0通过获取其他核的任务最高优先级来确定其他核中是否存在用于迁入上述目标迁出任务的目标迁入核。
例如,核0通过遍历比较其他核的任务最高优先级来确定是否存在目标迁入核。核0获取到核1中任务的最高优先级为1级,上述目标迁出任务T2的优先级为3级,高于核1中任务的最高优先级,由此可以确定目标迁入核存在且核1为目标迁入核。此外,核0还获取到核2中任务的最高优先级为4级,目标迁出任务T2的优先级低于核2的任务最高优先级,说明核2不是目标迁入核。
在步骤S630,在存在上述目标迁入核的情况下,将上述目标迁出任务迁入至上述目标迁入核。
在一些场景下,可能会存在一个或多个目标迁入核。
图7A是根据另一示例性实施例的迁移队列和各核内处于活动状态中运行任务突出显示的示意图。图7B是根据另一示例性实施例的第四核在确定存在目标迁入核的情况下将目标迁出任务迁出至迁移队列的状态示意图。图7C是根据另一示例性实施例的目标迁入核将目标迁出任务从迁移队列迁入至就绪队列的状态示意图。
参照图7A所示,采用矩形框示意迁移队列710,并采用虚线框示意核0~核2中各自处于活动状态的任务,其中填充虚线框示意的是运行任务,白色虚线框示意的是就绪任务,就绪任务位于就绪列表中。参照图7B所示,在核0(作为第四核的示例)确定存在目标迁出任务T2,并且存在一个目标迁入核为核1,将该目标迁出任务T2迁出至迁移队列710。参照图7C所示,目标迁入核核1已经从迁移队列710中将目标迁出任务T2迁入至就绪队列,并根据优先级排序使得任务T2对原先正在运行的任务T5发生资源抢占,使得核1从原先的任务T5的运行状态转换为任务T2处于运行状态。
在一些实施例中,上述迁移队列710是基于自旋锁来维护的,在同一个时刻,只能有一个核来访问上述迁移队列。
图8是根据一示例性实施例的步骤S630的详细实施流程图。
在一些实施例中,参照图8所示,上述步骤S630中,将上述目标迁出任务迁入至上述目标迁入核,包括以下步骤:S810、S820和S830。
在步骤S810,将上述目标迁出任务迁出至迁移队列,并根据上述目标迁入核来标记上述目标迁出任务对应的迁移目标。
例如参照图7B所示,在迁移队列710中,目标迁出任务T2上标记有迁移目标为核1。
在一些实施例中,根据上述目标迁入核来标记上述目标迁出任务对应的迁移目标,包括:在存在多个目标迁入核的情况下,将上述多个目标迁入核标记为上述目标迁出任务对应的迁移目标。
例如,在存在多个目标迁入核例如为目标迁入核X和目标迁入核Y的情况下,上述目标迁出任务对应标记的迁移目标也有多个,在其中一个目标迁入核X基于自旋锁来访问迁移队列710的情况下,那么该目标迁入核X优先将迁移队列710中的目标迁出任务迁移至自身的就绪队列里面;后续其他目标迁入核Y再次访问的过程中,由于上述迁移队列中标记该目标迁入核Y的目标迁出任务已经不存在,则该目标迁入核Y访问后迁移队列后没有任务迁入。该实施例中,能够确保较高优先级的目标迁出任务能够在迁入至目标迁入核的情况下及时得到执行。
在另一些实施例中,根据上述目标迁入核来标记上述目标迁出任务对应的迁移目标,包括:在存在多个目标迁入核的情况下,将上述多个目标迁入核中任务的最高优先级中最小的核标记为上述目标迁出任务对应的迁移目标。
例如,在存在多个目标迁入核的情况下标记迁移目标的时候,采用冒泡排序的方法,比较各个目标迁入核中任务的最高优先级,将最高优先级最小的核标记为迁移目标。该实施例中,能够确保较高优先级的目标迁出任务能够在迁入至目标迁入核的情况下及时得到执行,同时由于迁入的目标迁入核是符合条件的多个目标迁入核中最高优先级的取值最小的,即,目标迁入核正在运行的任务的优先级较低,那么对应的执行紧急性比较低,延后执行所导致的影响较小,因此,该方案能够降低对目标迁入核所运行任务进行抢占导致的任务靠后的影响程度。
在步骤S820,在各核设定的迁移队列访问时机,各核访问上述迁移队列。
在一些实施例中,上述各核设定的迁移队列访问时机包括以下中的一种:
各核预先设定有迁移队列的访问时序,基于上述访问时序执行访问迁移队列的操作;或者,
在各核发生运行任务处理完成的情况下,执行访问迁移队列的操作;或者,
在各核发生就绪队列的任务数量变化的情况下,执行访问迁移队列的操作;或者,
在上述迁移目标上设置有需要检查迁移队列任务的检查标记,在各核中确定是否设置有上述检查标记,设置有上述检查标记的核执行访问迁移队列的操作。
在步骤S830,在第五核访问上述迁移队列并确定存在标记上述第五核为迁移目标的第一目标迁出任务的情况下,将上述迁移队列中的上述第一目标迁出任务迁入至上述第五核的就绪队列。
在一些实施例中,在迁移队列中可能存在一个或多个指向第五核的第一目标迁出任务。
图9是根据又一示例性实施例的步骤S130的详细实施流程图。
上述步骤S130中,根据上述任务分配不均衡程度,在各核之间进行任务迁移调度,除了包括上述步骤:S610、S620之外,在不存在目标迁入核的情况下,还可以包括否定分支对应的步骤:S910、S920和S930,为了简化示意,在图9中仅示意了步骤S910~S930。
在步骤S910,上述第四核标记上述目标迁出任务为待迁出状态,并持续监测上述第四核除外的其他核中是否存在目标迁入核。
在步骤S920,在设定时长内监测到不存在上述目标迁入核的情况下,取消上述目标迁出任务的待迁出状态的标记。
在步骤S930,在设定时长内监测到存在上述目标迁入核的情况下,将上述目标迁出任务迁出至迁移队列,标记上述目标迁出任务的迁移目标为上述目标迁入核,并在上述目标迁入核上设置需要检查迁移队列任务的检查标记。
在包含步骤S910~S930的实施例中,在目标迁出任务暂时不存在对应接收的目标迁入核的情况下,为目标迁出任务设置的待迁出状态的标记保留设定时长的缓冲时间,在该缓冲时间内通过继续监测是否有符合条件的目标迁入核,如果在缓冲时间内没有接收该任务的目标迁入核,则取消标记,之后该目标迁出任务可以在核内根据内部调度进行执行或等待;如果这段缓冲时间内出现了目标迁入核,则可以将待迁出状态的目标迁出任务迁入至迁移队列。通过采取短暂的等待策略,有助于高优先级的任务在自身核内无法得到执行的情况下能够及时被安排到其他优先级符合条件的核里面。
在一些实施例中,在各核内,就绪队列中的任务和运行任务基于优先级高低来运行;其中,在就绪队列中存在比运行任务的优先级高的目标任务的情况下,上述目标任务抢占处理器资源,由上述运行任务的运行状态切换至上述目标任务的运行状态。
例如,参照图7C所示,核1中的就绪队列中的任务为从迁移队列710中迁出的目标迁出任务T2,根据优先级排序,任务T2的优先级高于之前正在运行的任务T5的优先级,则任务T2对原先正在运行的任务T5发生处理器资源抢占,使得核1从原先的任务T5的运行状态切换为任务T2的运行状态。
示例性装置
图10是根据一示例性实施例示出的多核调度的装置的框图。
参照图10所示,本公开实施例提供的多核调度的装置1000包括:信息获取模块1010、确定模块1020和调度模块1030。
上述信息获取模块1010用于获取车辆多核处理器中各核的任务初始分配信息和各核上任务的优先级。
上述确定模块1020用于根据上述任务初始分配信息和上述各核上任务的优先级,确定任务分配不均衡程度,上述任务分配不均衡程度表示各核之间的任务分配数量和各核内不同优先级任务的执行时长至少之一的不均衡程度。
上述调度模块1030用于根据上述任务分配不均衡程度,在各核之间进行任务迁移调度。
在一些实施例中,上述调度模块1030包括:数量不均衡迁移确定模块、迁出模块、迁入模块。
上述数量不均衡迁移确定模块用于:根据上述各核之间的任务分配数量的不均衡程度,在各核中分别确定是否需要进行任务迁移和对应的迁移状态。
在一些实施例中,根据上述各核之间的任务分配数量的不均衡程度,在各核中分别确定是否需要进行任务迁移和对应的迁移状态,包括:根据上述多核处理器的总核数和总任务数量,确定核均衡任务数量;确定各核的任务分配数量和上述核均衡任务数量的数量关系;在上述数量关系表示第一核的任务分配数量大于上述核均衡任务数量的情况下,确定上述第一核需要进行任务迁移且对应的迁移状态为迁出状态,迁出任务数量为上述任务分配数量与上述核均衡任务数量的差值;在上述数量关系表示第二核的任务分配数量小于上述核均衡任务数量的情况下,确定上述第二核需要进行任务迁移且对应的迁移状态为迁入状态,迁入任务数量为上述核均衡任务数量与上述任务分配数量的差值;在上述数量关系表示第三核的任务分配数量处于上述核均衡任务数量所在区间或等于上述核均衡任务数量的情况下,确定上述第三核无需进行任务迁移。
在一些实施例中,根据上述多核处理器的总核数和总任务数量,确定核均衡任务数量,包括:基于原子计数器,获取活动状态的总任务数量;根据上述总任务数量和上述多核处理器的总核数,计算核平均任务数量,上述核平均任务数量作为上述核均衡任务数量。
在一些实施例中,根据上述多核处理器的总核数和总任务数量,确定核均衡任务数量,包括:基于原子计数器,获取活动状态的总任务数量;根据上述总任务数量,确定目标数量浮动值;根据上述总任务数量和上述多核处理器的总核数,计算核平均任务数量;根据上述核平均任务数量和上述目标数量浮动值,生成均衡数量范围,当核上的任务数量在上述均衡数量范围内,则认为该核的任务数量是均衡的。
上述迁出模块用于在确定第一核需要进行任务迁移且迁移状态为迁出状态的情况下,根据上述第一核的就绪队列中任务的优先级相对高低,将上述就绪队列中优先级较高的一个或多个第一任务迁出至迁移队列。
上述迁入模块用于:在确定第二核需要进行任务迁移且迁移状态为迁入状态的情况下,将上述迁移队列中的一个或多个第二任务迁入至上述第二核的就绪队列。
在一些实施例中,上述迁移队列是基于自旋锁来维护的,在同一个时刻,只能有一个核来访问上述迁移队列。
在一些实施例中,上述迁移队列内的任务按照优先级由高到低进行排序。将上述迁移队列中的一个或多个第二任务迁入至上述第二核的就绪队列,包括:基于上述迁移队列内任务的优先级排序,将上述迁移队列中优先级排序处于靠前预设名次的第二任务迁入至上述第二核的就绪队列。
在另一些实施例中,上述调度模块1030包括:执行时长不均衡迁移确定模块、目标迁入核确定模块、迁移模块。
上述执行时长不均衡迁移确定模块用于:根据各核内不同优先级任务的执行时长的不均衡程度,在各核中确定是否存在需要被迁出的目标迁出任务;其中,上述目标迁出任务包括:在运行任务的运行时长超过设定阈值的情况下,就绪队列中运行时间为零的目标优先级对应的任务。
上述目标迁入核确定模块用于:在第四核中存在上述目标迁出任务的情况下,确定上述第四核除外的其他核中是否存在目标迁入核,上述目标迁入核中任务的最高优先级小于上述目标迁出任务的优先级。
上述迁移模块用于:在存在上述目标迁入核的情况下,将上述目标迁出任务迁入至上述目标迁入核。
在一些实施例中,将上述目标迁出任务迁入至上述目标迁入核,包括:将上述目标迁出任务迁出至迁移队列,并根据上述目标迁入核来标记上述目标迁出任务对应的迁移目标;在各核设定的迁移队列访问时机,各核访问上述迁移队列;在第五核访问上述迁移队列并确定存在标记上述第五核为迁移目标的第一目标迁出任务的情况下,将上述迁移队列中的上述第一目标迁出任务迁入至上述第五核的就绪队列。
在一些实施例中,上述迁移队列是基于自旋锁来维护的,在同一个时刻,只能有一个核来访问上述迁移队列。
在一些实施例中,根据上述目标迁入核来标记上述目标迁出任务对应的迁移目标,包括:在存在多个目标迁入核的情况下,将上述多个目标迁入核标记为上述目标迁出任务对应的迁移目标;或者,在存在多个目标迁入核的情况下,将上述多个目标迁入核中任务的最高优先级中最小的核标记为上述目标迁出任务对应的迁移目标。
在一些实施例中,上述调度模块1030除了包括上述执行时长不均衡迁移确定模块、目标迁入核确定模块和迁移模块之外,还包括:标记和监听模块和标记取消模块。
上述标记和监听模块用于:在不存在上述目标迁入核的情况下,上述第四核标记上述目标迁出任务为待迁出状态,并持续监测上述第四核除外的其他核中是否存在目标迁入核。
上述标记取消模块用于:在设定时长内监测到不存在上述目标迁入核的情况下,取消上述目标迁出任务的待迁出状态的标记。
上述迁移模块用于:在设定时长内监测到存在上述目标迁入核的情况下,将上述目标迁出任务迁出至迁移队列,标记上述目标迁出任务的迁移目标为上述目标迁入核,并在上述目标迁入核上设置需要检查迁移队列任务的检查标记。
在一些实施例中,在各核内,就绪队列中的任务和运行任务基于优先级高低来运行;其中,在就绪队列中存在比运行任务的优先级高的目标任务的情况下,上述目标任务抢占处理器资源,由上述运行任务的运行状态切换至上述目标任务的运行状态。
本实施例的具体细节还可以参照第一个实施例中的全部描述,这里不再赘述。
示例性车辆
图11是根据一示例性实施例示出的车辆的框图。
参照图11所示,本公开实施例提供的车辆1100可以是燃油车辆、混合动力车辆、电动车辆、燃料电池车辆或者其他类型的车辆。
参照图11所示,车辆1100可包括多个子系统,例如,驱动系统1110、控制系统1120、感知系统1130、通信系统1140、信息显示系统1150以及计算处理系统1160。车辆1100还可以包括更多或更少的子系统,且各个子系统还可以包括多个部件,在此不一一赘述。
该驱动系统1110,包括为车辆1100提供动力运动的组件。例如,发动机、能量源、传动装置等。
该控制系统1120,包括为车辆1100提供控制的组件。例如,车辆控制、座舱设备控制、驾驶辅助控制等。
该感知系统1130,包括为车辆1100提供周边环境感知的组件。例如,车辆定位系统、激光传感器、语音传感器、超声波传感器、摄像设备等。
该通信系统1140,包括为车辆1100提供通信连接的组件。例如,移动通信网络(如,3G、4G、5G网络等)、WiFi、蓝牙、车联网等。
该信息显示系统1150,包括为车辆1100提供各种信息显示的组件。例如,车辆信息显示、导航信息显示、娱乐信息显示等。
该计算处理系统1160,包括为车辆1100提供数据计算和处理能力的组件。计算处理系统1160可包括至少一个处理器1161和存储器1162。处理器1161可以执行存储在存储器1162中的指令。
处理器1161可以是任何常规的处理器,诸如商业可获得的CPU。处理器还可以包括诸如图像处理器(Graphic Process Unit,GPU),现场可编程门阵列(Field ProgrammableGate Array,FPGA)、片上系统(System on Chip,SOC)、专用集成芯片(ApplicationSpecific Integrated Circuit,ASIC)或它们的组合。该处理器1161中包含系统模块。
存储器1162可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
在本公开实施例中,存储器1162中存储有一组指令集,处理器1161的系统模块可以执行该指令集,以实现上述示例性实施例中任一所述的多核调度的方法的全部或部分步骤。
示例性电子设备
图12是根据一示例性实施例示出的电子设备的框图。
参照图12所示,本公开实施例提供的电子设备1200可以是车辆控制器、车载终端、车载计算机或者其他类型的电子设备。
参照图12所示,电子设备1200,可包括至少一个处理器1210和存储器1220。处理器1210可以执行存储在存储器1220中的指令。处理器1210通过数据总线与存储器1220通信连接。除存储器1220外,处理器1210还可通过数据总线与输入设备1230、输出设备1240、通信设备1250通信连接。
处理器1210可以是任何常规的处理器,诸如商业可获得的CPU。处理器还可以包括诸如图像处理器(Graphic Process Unit,GPU),现场可编程门阵列(Field ProgrammableGate Array,FPGA)、片上系统(System on Chip,SOC)、专用集成芯片(ApplicationSpecific Integrated Circuit,ASIC)或它们的组合。
存储器1220可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
在本公开实施例中,存储器1220中存储有可执行指令,处理器1210可以从所述存储器1220中读取所述可执行指令,并执行所述指令以实现上述示例性实施例中任一所述的多核调度的方法的全部或部分步骤。
示例性计算机可读存储介质
除了上述方法和装置以外,本公开的示例性实施例还可以是计算机程序产品或存储有该计算机程序产品的计算机可读存储介质。该计算机产品中包括计算机程序指令,该计算机程序指令可被处理器执行,以实现上述示例性实施例中任一方法中描述的全部或部分步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言以及脚本语言(例如Python)。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子包括:具有一个或多个导线电连接的静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘,或者上述的任意合适的组合。
本领域技术人员在考虑说明书及实践本公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (18)

1.一种多核调度的方法,其特征在于,包括:
获取车辆多核处理器中各核的任务初始分配信息和各核上任务的优先级;
根据所述任务初始分配信息和所述各核上任务的优先级,确定任务分配不均衡程度,所述任务分配不均衡程度表示各核之间的任务分配数量和各核内不同优先级任务的执行时长至少之一的不均衡程度;
根据所述任务分配不均衡程度,在各核之间进行任务迁移调度;
根据所述任务分配不均衡程度,在各核之间进行任务迁移调度,包括:根据各核内不同优先级任务的执行时长的不均衡程度,在各核中确定是否存在需要被迁出的目标迁出任务;其中,所述目标迁出任务包括:在运行任务的运行时长超过设定阈值的情况下,就绪队列中运行时间为零的目标优先级对应的任务;在第四核中存在所述目标迁出任务的情况下,确定所述第四核除外的其他核中是否存在目标迁入核,所述目标迁入核中任务的最高优先级小于所述目标迁出任务的优先级;在存在所述目标迁入核的情况下,将所述目标迁出任务迁入至所述目标迁入核。
2.根据权利要求1所述的方法,其特征在于,根据所述任务分配不均衡程度,在各核之间进行任务迁移调度,包括:
根据所述各核之间的任务分配数量的不均衡程度,在各核中分别确定是否需要进行任务迁移和对应的迁移状态;
在确定第一核需要进行任务迁移且迁移状态为迁出状态的情况下,根据所述第一核的就绪队列中任务的优先级相对高低,将所述就绪队列中优先级较高的一个或多个第一任务迁出至迁移队列。
3.根据权利要求2所述的方法,其特征在于,还包括:
在确定第二核需要进行任务迁移且迁移状态为迁入状态的情况下,将所述迁移队列中的一个或多个第二任务迁入至所述第二核的就绪队列。
4.根据权利要求3所述的方法,其特征在于,所述迁移队列内的任务按照优先级由高到低进行排序;
将所述迁移队列中的一个或多个第二任务迁入至所述第二核的就绪队列,包括:
基于所述迁移队列内任务的优先级排序,将所述迁移队列中优先级排序处于靠前预设名次的第二任务迁入至所述第二核的就绪队列。
5.根据权利要求2-4中任一项所述的方法,其特征在于,根据所述各核之间的任务分配数量的不均衡程度,在各核中分别确定是否需要进行任务迁移和对应的迁移状态,包括:
根据所述多核处理器的总核数和总任务数量,确定核均衡任务数量;
确定各核的任务分配数量和所述核均衡任务数量的数量关系;
在所述数量关系表示第一核的任务分配数量大于所述核均衡任务数量的情况下,确定所述第一核需要进行任务迁移且对应的迁移状态为迁出状态,迁出任务数量为所述任务分配数量与所述核均衡任务数量的差值;
在所述数量关系表示第二核的任务分配数量小于所述核均衡任务数量的情况下,确定所述第二核需要进行任务迁移且对应的迁移状态为迁入状态,迁入任务数量为所述核均衡任务数量与所述任务分配数量的差值;
在所述数量关系表示第三核的任务分配数量处于所述核均衡任务数量所在区间或等于所述核均衡任务数量的情况下,确定所述第三核无需进行任务迁移。
6.根据权利要求5所述的方法,其特征在于,根据所述多核处理器的总核数和总任务数量,确定核均衡任务数量,包括:
基于原子计数器,获取活动状态的总任务数量;
根据所述总任务数量和所述多核处理器的总核数,计算核平均任务数量,所述核平均任务数量作为所述核均衡任务数量。
7.根据权利要求5所述的方法,其特征在于,根据所述多核处理器的总核数和总任务数量,确定核均衡任务数量,包括:
基于原子计数器,获取活动状态的总任务数量;
根据所述总任务数量,确定目标数量浮动值;
根据所述总任务数量和所述多核处理器的总核数,计算核平均任务数量;
根据所述核平均任务数量和所述目标数量浮动值,生成均衡数量范围,当核上的任务数量在所述均衡数量范围内,则认为该核的任务数量是均衡的。
8.根据权利要求2-4中任一项所述的方法,其特征在于,所述迁移队列是基于自旋锁来维护的,在同一个时刻,只能有一个核来访问所述迁移队列。
9.根据权利要求1所述的方法,其特征在于,将所述目标迁出任务迁入至所述目标迁入核,包括:
将所述目标迁出任务迁出至迁移队列,并根据所述目标迁入核来标记所述目标迁出任务对应的迁移目标;
在各核设定的迁移队列访问时机,各核访问所述迁移队列;
在第五核访问所述迁移队列并确定存在标记所述第五核为迁移目标的第一目标迁出任务的情况下,将所述迁移队列中的所述第一目标迁出任务迁入至所述第五核的就绪队列。
10.根据权利要求9所述的方法,其特征在于,所述各核设定的迁移队列访问时机包括以下中的一种:
各核预先设定有迁移队列的访问时序,基于所述访问时序执行访问迁移队列的操作;或者,
在各核发生运行任务处理完成的情况下,执行访问迁移队列的操作;或者,
在各核发生就绪队列的任务数量变化的情况下,执行访问迁移队列的操作;或者,
在所述迁移目标上设置有需要检查迁移队列任务的检查标记,在各核中确定是否设置有所述检查标记,设置有所述检查标记的核执行访问迁移队列的操作。
11.根据权利要求9所述的方法,其特征在于,根据所述目标迁入核来标记所述目标迁出任务对应的迁移目标,包括:
在存在多个目标迁入核的情况下,将所述多个目标迁入核标记为所述目标迁出任务对应的迁移目标;或者,
在存在多个目标迁入核的情况下,将所述多个目标迁入核中任务的最高优先级中最小的核标记为所述目标迁出任务对应的迁移目标。
12.根据权利要求9所述的方法,其特征在于,还包括:
在不存在所述目标迁入核的情况下,所述第四核标记所述目标迁出任务为待迁出状态,并持续监测所述第四核除外的其他核中是否存在目标迁入核;
在设定时长内监测到不存在所述目标迁入核的情况下,取消所述目标迁出任务的待迁出状态的标记;
在设定时长内监测到存在所述目标迁入核的情况下,将所述目标迁出任务迁出至迁移队列,标记所述目标迁出任务的迁移目标为所述目标迁入核,并在所述目标迁入核上设置需要检查迁移队列任务的检查标记。
13.根据权利要求9所述的方法,其特征在于,在各核内,就绪队列中的任务和运行任务基于优先级高低来运行;
其中,在就绪队列中存在比运行任务的优先级高的目标任务的情况下,所述目标任务抢占处理器资源,由所述运行任务的运行状态切换至所述目标任务的运行状态。
14.根据权利要求9所述的方法,其特征在于,所述迁移队列是基于自旋锁来维护的,在同一个时刻,只能有一个核来访问所述迁移队列。
15.一种多核调度的装置,其特征在于,包括:
信息获取模块,用于获取车辆多核处理器中各核的任务初始分配信息和各核上任务的优先级;
确定模块,用于根据所述任务初始分配信息和所述各核上任务的优先级,确定任务分配不均衡程度,所述任务分配不均衡程度表示各核之间的任务分配数量和各核内不同优先级任务的执行时长至少之一的不均衡程度;
调度模块,用于根据所述任务分配不均衡程度,在各核之间进行任务迁移调度;
根据所述任务分配不均衡程度,在各核之间进行任务迁移调度,包括:
根据各核内不同优先级任务的执行时长的不均衡程度,在各核中确定是否存在需要被迁出的目标迁出任务;其中,所述目标迁出任务包括:在运行任务的运行时长超过设定阈值的情况下,就绪队列中运行时间为零的目标优先级对应的任务;
在第四核中存在所述目标迁出任务的情况下,确定所述第四核除外的其他核中是否存在目标迁入核,所述目标迁入核中任务的最高优先级小于所述目标迁出任务的优先级;
在存在所述目标迁入核的情况下,将所述目标迁出任务迁入至所述目标迁入核。
16.一种车辆,其特征在于,存储有一组指令集,所述指令集被所述车辆的系统模块执行,以实现所述权利要求1-14中任一所述的方法。
17.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现所述权利要求1-14中任一所述的方法。
18.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该程序指令被处理器执行时,以实现所述权利要求1-14中任一所述的方法。
CN202211716884.1A 2022-12-29 2022-12-29 多核调度的方法、装置、车辆、电子设备及介质 Active CN116185582B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211716884.1A CN116185582B (zh) 2022-12-29 2022-12-29 多核调度的方法、装置、车辆、电子设备及介质
CN202410174062.8A CN118034880A (zh) 2022-12-29 2022-12-29 多核调度的方法、装置、车辆、电子设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211716884.1A CN116185582B (zh) 2022-12-29 2022-12-29 多核调度的方法、装置、车辆、电子设备及介质

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202410174062.8A Division CN118034880A (zh) 2022-12-29 2022-12-29 多核调度的方法、装置、车辆、电子设备及介质

Publications (2)

Publication Number Publication Date
CN116185582A CN116185582A (zh) 2023-05-30
CN116185582B true CN116185582B (zh) 2024-03-01

Family

ID=86447095

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202211716884.1A Active CN116185582B (zh) 2022-12-29 2022-12-29 多核调度的方法、装置、车辆、电子设备及介质
CN202410174062.8A Pending CN118034880A (zh) 2022-12-29 2022-12-29 多核调度的方法、装置、车辆、电子设备及介质

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202410174062.8A Pending CN118034880A (zh) 2022-12-29 2022-12-29 多核调度的方法、装置、车辆、电子设备及介质

Country Status (1)

Country Link
CN (2) CN116185582B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6993762B1 (en) * 1999-04-07 2006-01-31 Bull S.A. Process for improving the performance of a multiprocessor system comprising a job queue and system architecture for implementing the process
CN104615488A (zh) * 2015-01-16 2015-05-13 华为技术有限公司 异构多核可重构计算平台上任务调度的方法和装置
CN107145388A (zh) * 2017-05-25 2017-09-08 深信服科技股份有限公司 一种多任务环境下任务调度方法及系统
CN107656813A (zh) * 2017-09-29 2018-02-02 上海联影医疗科技有限公司 一种负载调度的方法、装置及终端
CN109144691A (zh) * 2018-07-13 2019-01-04 哈尔滨工程大学 一种面向多核处理器的任务调度分配方法
CN110633133A (zh) * 2018-06-21 2019-12-31 中兴通讯股份有限公司 一种任务处理方法、装置及计算机可读存储介质
CN114168352A (zh) * 2021-12-30 2022-03-11 科东(广州)软件科技有限公司 任务的多核调度方法、装置、电子设备及存储介质
CN114816747A (zh) * 2022-04-21 2022-07-29 国汽智控(北京)科技有限公司 处理器的多核负载调控方法、装置及电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8397235B2 (en) * 2008-10-07 2013-03-12 Futurewei Technologies, Inc. User tolerance based scheduling method for aperiodic real-time tasks

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6993762B1 (en) * 1999-04-07 2006-01-31 Bull S.A. Process for improving the performance of a multiprocessor system comprising a job queue and system architecture for implementing the process
CN104615488A (zh) * 2015-01-16 2015-05-13 华为技术有限公司 异构多核可重构计算平台上任务调度的方法和装置
CN107145388A (zh) * 2017-05-25 2017-09-08 深信服科技股份有限公司 一种多任务环境下任务调度方法及系统
CN107656813A (zh) * 2017-09-29 2018-02-02 上海联影医疗科技有限公司 一种负载调度的方法、装置及终端
CN110633133A (zh) * 2018-06-21 2019-12-31 中兴通讯股份有限公司 一种任务处理方法、装置及计算机可读存储介质
CN109144691A (zh) * 2018-07-13 2019-01-04 哈尔滨工程大学 一种面向多核处理器的任务调度分配方法
CN114168352A (zh) * 2021-12-30 2022-03-11 科东(广州)软件科技有限公司 任务的多核调度方法、装置、电子设备及存储介质
CN114816747A (zh) * 2022-04-21 2022-07-29 国汽智控(北京)科技有限公司 处理器的多核负载调控方法、装置及电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Dynamic Load Balancing Scheduling Model Based on Multi-core Processor;Xiaozhong Geng等;《2010 Fifth International Conference on Frontier of Computer Science and Technology》;第282-287页 *
一种基于核集的多核嵌入式实时调度方法;任晓宇等;《单片机与嵌入式系统应用》;第3-6页 *

Also Published As

Publication number Publication date
CN116185582A (zh) 2023-05-30
CN118034880A (zh) 2024-05-14

Similar Documents

Publication Publication Date Title
US11822958B2 (en) Method and a device for data transmission between an internal memory of a system-on-chip and an external memory
CN107203428B (zh) 一种基于Xen的VCPU多核实时调度算法
CN110324806B (zh) 控制装置、记录介质以及控制方法
CN115086438B (zh) 任务处理方法、视频处理单元、部件及交通设备
CN115145210B (zh) 车辆的控制信号的控制方法、装置、车辆、介质及芯片
JP2023532324A (ja) プロセス実行方法および装置
CN114461396A (zh) 基于lxc的资源调度方法、装置、设备及存储介质
CN116185582B (zh) 多核调度的方法、装置、车辆、电子设备及介质
CN113535251A (zh) 一种线程管理方法及装置
US11934865B2 (en) Vehicle control system for dynamically updating system components
US9229716B2 (en) Time-based task priority boost management using boost register values
US8793423B2 (en) Servicing interrupt requests in a computer system
CN112559176A (zh) 一种指令处理方法和装置
CN116414542A (zh) 任务调度方法、装置、设备及存储介质
US20240054002A1 (en) Vehicle-mounted computer, computer execution method, and computer program
CN115454594A (zh) 一种车辆域控制器通信信号周期优化方法、系统及车辆
CN114911538A (zh) 一种运行系统的启动方法及计算设备
CN113888028A (zh) 巡视任务分配方法、装置、电子设备以及存储介质
US20210173720A1 (en) Dynamically direct compute tasks to any available compute resource within any local compute cluster of an embedded system
CN110262522B (zh) 用于控制自动驾驶车辆的方法和装置
CN111737013B (zh) 芯片的资源管理方法、装置、存储介质及系统芯片
CN116880982A (zh) Ros2确定性调度方法、装置、电子设备、存储介质及车辆
CN115589434B (zh) 请求处理方法、面向服务系统、ecu、车辆及存储介质
US20230214227A1 (en) In-vehicle information processing apparatus, control method, and computer program
US20240036941A1 (en) Vehicle-mounted computer, computer execution method, and computer program

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