CN117234695A - 用于自动驾驶系统的处理任务的调度方法及其装置 - Google Patents

用于自动驾驶系统的处理任务的调度方法及其装置 Download PDF

Info

Publication number
CN117234695A
CN117234695A CN202311501330.4A CN202311501330A CN117234695A CN 117234695 A CN117234695 A CN 117234695A CN 202311501330 A CN202311501330 A CN 202311501330A CN 117234695 A CN117234695 A CN 117234695A
Authority
CN
China
Prior art keywords
node
time
processing task
earliest
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202311501330.4A
Other languages
English (en)
Other versions
CN117234695B (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 Zhitu Technology Co Ltd
Original Assignee
Suzhou Zhitu 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 Zhitu Technology Co Ltd filed Critical Suzhou Zhitu Technology Co Ltd
Priority to CN202311501330.4A priority Critical patent/CN117234695B/zh
Publication of CN117234695A publication Critical patent/CN117234695A/zh
Application granted granted Critical
Publication of CN117234695B publication Critical patent/CN117234695B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种用于自动驾驶系统的处理任务的调度方法及其装置,该处理任务包括:获取多个处理任务、总延迟阈值、以及每个处理任务对应的属性信息;创建多个处理任务对应的DAG图;寻找关键路径,之后,将其余的节点分配到若干执行路径中,在每个执行路径中,对应的最早启动时间≤处理任务的启动时间≤对应的最晚启动时间;所述自动驾驶系统为关键路径和每条路径均分配不同的线程上,控制每个线程运行,其中,目标节点不执行。从而能够优化若干处理任务的执行次序,以满足延时≤总延迟阈值的要求。

Description

用于自动驾驶系统的处理任务的调度方法及其装置
技术领域
本发明涉及自动驾驶技术领域,尤其涉及用于自动驾驶系统的处理任务的调度方法及其装置。
背景技术
自动驾驶系统是目前人工智能的一个重要的应用领域。在无人车系统中,运行着对应不同功能的多个功能模块,各个功能模块由程序实现,可以有或没有配合的硬件设备。典型的功能模块如,驾驶(Driver)模块、感知(Perception)模块和规划(Planning)模块等。不同的无人车系统,会由于配置的硬件设备不同,或软件功能不同,而设置不同的功能模块。
现有技术中,每个功能模块都有对应的若干处理任务,各处理任务负责对实时产生的各类数据进行处理,例如,感知模块的感知任务,在实时接收到采集的感知数据时就会进行处理。各处理任务之间会需要交互数据。例如,规划模块的规划任务输出的路线数据,会提供给驾驶模块的驾驶任务,从而对驾驶进行控制。由于处理任务之间的数据交互关系,导致处理任务之间存在依赖关系,必须串行处理。
此外,自动驾驶系统的另一个同样关键的需求是实时性,即从接收新的一帧感知数据到发送新的一帧控制信息的延时需要有确定的上限,即延时≤上限。延时的确定的上限可以确保自动驾驶车辆在任意时刻都能对外界事件做出及时的反应,以确保自动驾驶功能的安全性,车辆安全等级在此方面也有相应的刚性要求。
因此,在自动驾驶系统中,如何优化若干处理任务的执行次序,以满足延时≤总延迟阈值的要求,就成为一个亟待解决的问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种用于自动驾驶系统的处理任务的调度方法及其装置。
为达到上述目的,本发明的技术方案是这样实现的:一种用于自动驾驶系统的处理任务的调度方法,包括以下步骤:
获取多个处理任务、总延迟阈值、以及每个处理任务对应的属性信息,所述属性信息包括:处理任务的若干触发条件、若干输出消息、最坏执行时间和每个输出消息对应的延迟时间;当处理任务对应的所有触发条件都被满足时,自动驾驶系统能够启动所述处理任务,所述处理任务的实际执行时间≤对应的最坏执行时间;在所述处理任务完成执行时,发出若干输出消息;每个输出消息,在经过对应的时间Time之后,自动驾驶系统能够探测到所述输出消息,所述时间Time≤所述输出消息的延迟时间。
创建多个处理任务对应的DAG图,在所述DAG图中,每个处理任务均对应到唯一的节点,每个处理任务对应的节点的权重为所述处理任务的最坏执行时间;当第一处理任务的输出消息等于第二处理任务的触发条件时,第一处理任务对应的节点有指向第二处理任务对应节点的有向边,所述有向边的权重为所述输出消息的延迟时间;当第三处理任务有输出消息,但不存在任一的处理任务的触发条件为所述输出消息时,创建一个权重为零的目标节点,第三处理任务对应的节点有指向目标节点的有向边,所述有向边的权重为所述输出消息的延迟时间。
对于每个节点均做以下处理:如果箭头朝向所述节点的有向边的数量为零,则所述节点的最早启动时间Time1=0;所述节点的最早结束时间Time3=最早启动时间Time1+最坏执行时间;如果箭头朝向所述节点的有向边的数量为Num1,且分别为,Num1为自然数,所述节点的最早启动时间Time1=/>的箭尾指向的节点的最早结束时间/>对应的延迟时间/>;对所述DAG图中的关键路径中的每个节点均做以下处理:所述节点的最晚启动时间Time2=最早启动时间Time1,所述节点的启动时间=最早启动时间Time1。
对于每个不处于所述关键路径中的节点均做以下处理:如果箭尾朝向所述节点的有向边的数量为零,则所述节点的最晚启动时间Time2=总延迟阈值-所述节点的权重;如果箭尾朝向所述节点的有向边的数量为Num2,分别为,Num2为自然数,所述节点的最晚启动时间Time3=/>的箭头指向的节点的最晚启动时间对应的延迟时间-所述节点对应的最坏执行时间/>;对于所有不处于所述关键路径中的节点分配到若干执行路径中,在每个执行路径中,对应的最早启动时间Time1≤处理任务的启动时间≤对应的最晚启动时间Time2。
所述自动驾驶系统为关键路径和每条路径均分配不同的线程上,控制每个线程运行,其中,目标节点不执行。
作为本发明实施例的一种改进,还包括以下步骤:如果所述关键路径中的最后一个节点的最早结束时间>总延迟阈值时,发出警报。
作为本发明实施例的一种改进,所述控制每个线程运行具体包括:将每个线程分配到不同的CPU核心上运行,在线程的执行过程中,CPU核心不执行中断。
作为本发明实施例的一种改进,所述对于所有不处于所述关键路径中的节点分配到若干第一执行路径中具体包括:按照最早启动时间Time1的由小到大的顺序,对于所有不处于所述关键路径中的节点进行排序,得到节点队列,且节点的最晚完成时间Time4=最晚启动时间Time2+最坏执行时间。
创建空的集合,按照预设的次序,对所述节点队列中的每个节点均进行以下处理:
如果所述集合中存在第一执行路径,且第一执行路径满足第一条件和第二条件,且第四、第五处理任务相邻时,则将所述节点插入到第一执行路径中的第四、第五处理任务之间,之后执行第一操作和第二操作。
如果所述集合中存在第二执行路径,且第二执行路径满足第一条件,且第四处理任务没有后续的处理任务时,则将所述节点插入到第三执行路径中的第四处理任务之后,之后执行第一操作。
如果所述集合中存在第三执行路径,且第三执行路径满足第二条件,且第五处理任务没有前续的处理任务时,则将所述节点插入到第三执行路径中的第五处理任务之前,之后执行第二操作。
第一条件为:存在第四处理任务且第四处理任务的最早结束时间Time3≤节点的最早启动Time1;第二条件为:存在第五处理任务且节点的最早结束时间Time3≤第五处理任务的最晚启动时间Time2时。
第一操作为:如果节点的最早启动Time1≤第四处理任务的最晚完成时间Time4,则Len1=第四处理任务的最晚完成时间Time4-节点的最早启动Time1,将第四处理任务的最晚启动时间Time2减去Len1;第二操作为:第五处理任务的最早启动时间Time1≤节点的最早完成时间Time3,则Len2=节点的最早完成时间Time3-第五处理任务的最早启动时间Time1,将第五处理任务的最早启动时间增加Len2。
作为本发明实施例的一种改进,所述按照预设的次序具体包括:按照从队头朝向队尾的次序。
本发明实施例还提供了一种用于自动驾驶系统的处理任务的调度装置,包括以下模块:
信息获取模块,用于获取多个处理任务、总延迟阈值、以及每个处理任务对应的属性信息,所述属性信息包括:处理任务的若干触发条件、若干输出消息、最坏执行时间和每个输出消息对应的延迟时间;当处理任务对应的所有触发条件都被满足时,自动驾驶系统能够启动所述处理任务,所述处理任务的实际执行时间≤对应的最坏执行时间;在所述处理任务完成执行时,发出若干输出消息;每个输出消息,在经过对应的时间Time之后,自动驾驶系统能够探测到所述输出消息,所述时间Time≤所述输出消息的延迟时间。
ADG图生成模块,用于创建多个处理任务对应的DAG图,在所述DAG图中,每个处理任务均对应到唯一的节点,每个处理任务对应的节点的权重为所述处理任务的最坏执行时间;当第一处理任务的输出消息等于第二处理任务的触发条件时,第一处理任务对应的节点有指向第二处理任务对应节点的有向边,所述有向边的权重为所述输出消息的延迟时间;当第三处理任务有输出消息,但不存在任一的处理任务的触发条件为所述输出消息时,创建一个权重为零的目标节点,第三处理任务对应的节点有指向目标节点的有向边,所述有向边的权重为所述输出消息的延迟时间。
第一处理模块,用于对于每个节点均做以下处理:如果箭头朝向所述节点的有向边的数量为零,则所述节点的最早启动时间Time1=0;所述节点的最早结束时间Time3=最早启动时间Time1+最坏执行时间;如果箭头朝向所述节点的有向边的数量为Num1,且分别为,Num1为自然数,所述节点的最早启动时间Time1=/>的箭尾指向的节点的最早结束时间/>对应的延迟时间/>;对所述DAG图中的关键路径中的每个节点均做以下处理:所述节点的最晚启动时间Time2=最早启动时间Time1,所述节点的启动时间=最早启动时间Time1。
第二处理模块,用于对于每个不处于所述关键路径中的节点均做以下处理:如果箭尾朝向所述节点的有向边的数量为零,则所述节点的最晚启动时间Time2=总延迟阈值-所述节点的权重;如果箭尾朝向所述节点的有向边的数量为Num2,分别为,Num2为自然数,所述节点的最晚启动时间Time3=/>的箭头指向的节点的最晚启动时间/>对应的延迟时间-所述节点对应的最坏执行时间;对于所有不处于所述关键路径中的节点分配到若干执行路径中,在每个执行路径中,对应的最早启动时间Time1≤处理任务的启动时间≤对应的最晚启动时间Time2。
执行模块,用于所述自动驾驶系统为关键路径和每条路径均分配不同的线程上,控制每个线程运行,其中,目标节点不执行。
作为本发明实施例的一种改进,还包括以下模块:第三处理模块,用于如果所述关键路径中的最后一个节点的最早结束时间>总延迟阈值时,发出警报。
作为本发明实施例的一种改进,所述执行模块还用于:将每个线程分配到不同的CPU核心上运行,在线程的执行过程中,CPU核心不执行中断。
作为本发明实施例的一种改进,所述第二处理模块还用于:按照最早启动时间Time1的由小到大的顺序,对于所有不处于所述关键路径中的节点进行排序,得到节点队列,且节点的最晚完成时间Time4=最晚启动时间Time2+最坏执行时间。
创建空的集合,按照预设的次序,对所述节点队列中的每个节点均进行以下处理:
如果所述集合中存在第一执行路径,且第一执行路径满足第一条件和第二条件,且第四、第五处理任务相邻时,则将所述节点插入到第一执行路径中的第四、第五处理任务之间,之后执行第一操作和第二操作。
如果所述集合中存在第二执行路径,且第二执行路径满足第一条件,且第四处理任务没有后续的处理任务时,则将所述节点插入到第三执行路径中的第四处理任务之后,之后执行第一操作。
如果所述集合中存在第三执行路径,且第三执行路径满足第二条件,且第五处理任务没有前续的处理任务时,则将所述节点插入到第三执行路径中的第五处理任务之前,之后执行第二操作。
第一条件为:存在第四处理任务且第四处理任务的最早结束时间Time3≤节点的最早启动Time1;第二条件为:存在第五处理任务且节点的最早结束时间Time3≤第五处理任务的最晚启动时间Time2时。
第一操作为:如果节点的最早启动Time1≤第四处理任务的最晚完成时间Time4,则Len1=第四处理任务的最晚完成时间Time4-节点的最早启动Time1,将第四处理任务的最晚启动时间Time2减去Len1;第二操作为:第五处理任务的最早启动时间Time1≤节点的最早完成时间Time3,则Len2=节点的最早完成时间Time3-第五处理任务的最早启动时间Time1,将第五处理任务的最早启动时间增加Len2。
作为本发明实施例的一种改进,所述第二处理模块还用于:按照从队头朝向队尾的次序。
本发明实施例所提供的用于自动驾驶系统的处理任务的调度方法及其装置具有以下优点:本发明实施例公开了一种用于自动驾驶系统的处理任务的调度方法及其装置,该处理任务包括:获取多个处理任务、总延迟阈值、以及每个处理任务对应的属性信息;创建多个处理任务对应的DAG图;寻找关键路径,之后,将其余的节点分配到若干执行路径中,在每个执行路径中,对应的最早启动时间≤处理任务的启动时间≤对应的最晚启动时间;所述自动驾驶系统为关键路径和每条路径均分配不同的线程上,控制每个线程运行,其中,目标节点不执行。从而能够优化若干处理任务的执行次序,以满足延时≤总延迟阈值的要求。
附图说明
图1为本发明实施例提供的调度方法的流程示意图;
图2为本发明实施例提供的调度方法的实例图;
图3为图2中的实例的结果图;
图4和图5为本实施例中的调度方法的原理图。
具体实施方式
以下将结合附图所示的实施方式对本发明进行详细描述。但该实施方式并不限制本发明,本领域的普通技术人员根据该实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
以下描述和附图充分地示出本文的具体实施方案,以使本领域的技术人员能够实践它们。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本文的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。本文中,术语“第一”、“第二”等仅被用来将一个元素与另一个元素区分开来,而不要求或者暗示这些元素之间存在任何实际的关系或者顺序。实际上第一元素也能够被称为第二元素,反之亦然。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的结构、装置或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种结构、装置或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的结构、装置或者设备中还存在另外的相同要素。本文中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
本文中的术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本文和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。在本文的描述中,除非另有规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
本发明实施例一提供了一种用于自动驾驶系统的处理任务的调度方法,如图1所示,包括以下步骤:
步骤101:获取多个处理任务、总延迟阈值、以及每个处理任务对应的属性信息,所述属性信息包括:处理任务的若干触发条件、若干输出消息、最坏执行时间和每个输出消息对应的延迟时间;当处理任务对应的所有触发条件都被满足时,自动驾驶系统能够启动所述处理任务,所述处理任务的实际执行时间≤对应的最坏执行时间;在所述处理任务完成执行时,发出若干输出消息;每个输出消息,在经过对应的时间Time之后,自动驾驶系统能够探测到所述输出消息,所述时间Time≤所述输出消息的延迟时间;这里,每个处理任务执行所花费的时间都会小于等于对应的时间Time,在输出消息被发出之后,在至多等待对应的延迟时间之后,自动驾驶系统能够探测到所述输出消息。
在发明人的长期工作中,依据自己的工作经验,总结了一系列约束方法和代码库的实现方法,以使得任务的回调函数有确定的且足够低的执行时间上限,此上限被称为最坏执行时间(Worst Case Execution Time,WCET)。可以理解的是,约束函数代码的时间复杂度,对于任意的输入,必须有合理的执行次数上限,处理任务的最好情况、最坏情况、平均情况的时间复杂度中,只对最坏情况的时间复杂度做约束。
工作经验包括:(1)运行时的实时路径避免调用非确定性的代码,将非确定性代码放在初始化等阶段。非确定性代码所做的操作一般分为内存分配、锁、IO操作等。显式内存分配可以改为初始化时预分配,也可以使用实时安全的内存分配器;锁操作可通过无锁算法和资源预留解决;IO输入操作可改为初始化时预加载,IO输出可改为写到缓冲区,也可以使用支持实时的IO设备驱动;(2)避免页错误的可能性。在初始化时锁定物理内存空间(使用mlockall函数等),保证堆栈的页都映射到了物理内存;(3)提出了静态容量的动态容器库的实现方法,代替stl的动态容器。将最大容量作为数据类型的模板参数,附加到类型信息中,使得类型区分更加严格,不同的容量的容器属于不同的类型,避免混用。对于所有的需要使用的string、vector等动态容器,只需在设计时提供可能的最大容量信息,即可用兼容stl容器的方式使用静态容量的动态容器。
在设计该自动驾驶系统时,需要对系统内所有处理任务建模,建模过程可以通过开发的图形界面,也可以通过其它文本方式。处理任务需要有最坏执行时间、触发条件和输出消息三类模型信息。处理任务初始化后默认是idle状态,触发条件满足后变为ready状态,被用户态调度器运行时变为running状态,运行结束后变为idle状态。
其中,最坏执行时间的分析一般采用动态测量预估和静态分析结合的方式。动态测量预估是指在实际硬件上直接测试统计执行的时间;静态分析是指通过数学方法计算程序在硬件平台上的执行时间的安全上限。触发条件可以是消息触发,即接收一到多个消息之后进入ready状态,也可以是周期触发,即每隔一段时间自动进入ready状态一次。消息触发的信息通过消息名称列表保存。输出消息是指在任务完成时发送的消息名称列表,此名称用于和消息触发侧的名称匹配。输出的消息列表可以是空,也可以是一到多个消息名。需要注意的是处理任务的每次执行需要精确的发送一次列表中的消息,不能漏发也不能多发。
步骤102:创建多个处理任务对应的DAG(无回路有向图,Directed AcyclicGraph)图,在所述DAG图中,每个处理任务均对应到唯一的节点,每个处理任务对应的节点的权重为所述处理任务的最坏执行时间;当第一处理任务的输出消息等于第二处理任务的触发条件时,第一处理任务对应的节点有指向第二处理任务对应节点的有向边,所述有向边的权重为所述输出消息的延迟时间;当第三处理任务有输出消息,但不存在任一的处理任务的触发条件为所述输出消息时,创建一个权重为零的目标节点,第三处理任务对应的节点有指向目标节点的有向边,所述有向边的权重为所述输出消息的延迟时间;在图2所示的情形中,处理任务J和处理任务K为目标节点。
步骤103:对于每个节点均做以下处理:如果箭头朝向所述节点的有向边的数量为零,则所述节点的最早启动时间Time1=0;所述节点的最早结束时间Time3=最早启动时间Time1+最坏执行时间;如果箭头朝向所述节点的有向边的数量为Num1,且分别为,Num1为自然数,所述节点的最早启动时间Time1=/>的箭尾指向的节点的最早结束时间/>对应的延迟时间/>;对所述DAG图中的关键路径中的每个节点均做以下处理:所述节点的最晚启动时间Time2=最早启动时间Time1,所述节点的启动时间=最早启动时间Time1;这里,在图2所示的情形中,关键路径为:处理任务B-->处理任务C-->处理任务E-->处理任务F-->处理任务J,可以理解的是,处理任务J仅仅是为了便于处理,在执行时,是不需要执行的。
这里,可以获取每个最早启动时间Time1=0节点到所有目标节点之间的路径,该路径上的所有节点的权重和所有有向边的权重的总和即为该路径的总权重,则总权重最大的路径为关键路径。
步骤104:对于每个不处于所述关键路径中的节点均做以下处理:如果箭尾朝向所述节点的有向边的数量为零,则所述节点的最晚启动时间Time2=总延迟阈值-所述节点的权重;如果箭尾朝向所述节点的有向边的数量为Num2,分别为,Num2为自然数,所述节点的最晚启动时间Time3=/>的箭头指向的节点的最晚启动时间/>对应的延迟时间-所述节点对应的最坏执行时间/>;对于所有不处于所述关键路径中的节点分配到若干执行路径中,在每个执行路径中,对应的最早启动时间Time1≤处理任务的启动时间≤对应的最晚启动时间Time2。
步骤105:所述自动驾驶系统为关键路径和每条路径均分配不同的线程上,控制每个线程运行,其中,目标节点不执行。
如图3所示,在忽略目标节点之后,关键路径为:处理任务B-->处理任务C-->处理任务E-->处理任务F-->处理任务J,路径1为:处理任务G-->处理任务H-->处理任务I;路径2为:处理任务D。
本实施例中,包括以下步骤:如果所述关键路径中的最后一个节点的最早结束时间>总延迟阈值时,发出警报。当最后一个节点不能再总延迟阈值之前完成,则超时,需要发出警报,以便于设计人员进行修改。
本实施例中,所述控制每个线程运行具体包括:将每个线程分配到不同的CPU核心上运行,在线程的执行过程中,CPU核心不执行中断。这里,CPU核心不执行中断,可以确保每个线程能够在固定的时间内完成任务。
本实施例中,所述对于所有不处于所述关键路径中的节点分配到若干第一执行路径中,在每个第一执行路径中,对应的最早启动时间Time1≤处理任务的启动时间≤对应的最晚启动时间Time2具体包括:
按照最早启动时间Time1的由小到大的顺序,对于所有不处于所述关键路径中的节点进行排序,得到节点队列,且节点的最晚完成时间Time4=最晚启动时间Time2+最坏执行时间。
创建空的集合,按照预设的次序,对所述节点队列中的每个节点均进行以下处理:
如果所述集合中存在第一执行路径,且第一执行路径满足第一条件和第二条件,且第四、第五处理任务相邻时,则将所述节点插入到第一执行路径中的第四、第五处理任务之间,之后执行第一操作和第二操作。
如果所述集合中存在第二执行路径,且第二执行路径满足第一条件,且第四处理任务没有后续的处理任务时,则将所述节点插入到第二执行路径中的第四处理任务之后,之后执行第一操作。
如果所述集合中存在第三执行路径,且第三执行路径满足第二条件,且第五处理任务没有前续的处理任务时,则将所述节点插入到第三执行路径中的第五处理任务之前,之后执行第二操作。
第一条件为:存在第四处理任务且第四处理任务的最早结束时间Time3≤节点的最早启动Time1;第二条件为:存在第五处理任务且节点的最早结束时间Time3≤第五处理任务的最晚启动时间Time2时。
第一操作为:如果节点的最早启动Time1≤第四处理任务的最晚完成时间Time4,则Len1=第四处理任务的最晚完成时间Time4-节点的最早启动Time1,将第四处理任务的最晚启动时间Time2减去Len1;这里,如图4所示,此时,为了将节点插入到第四处理任务的后面,需要将第四处理任务的最晚启动时间Time2减去Len1,即往前挪Len1。
第二操作为:第五处理任务的最早启动时间Time1≤节点的最早完成时间Time3,则Len2=节点的最早完成时间Time3-第五处理任务的最早启动时间Time1,将第五处理任务的最早启动时间增加Len2。这里,如图5所示,此时,为了将节点插入到第五处理任务的前面,需要将第五处理任务的最早启动时间增加Len2,即往后挪Len2。
这里,当如果所述集合中存在第一执行路径,且第一执行路径满足第一条件和第二条件,且第四、第五处理任务相邻时,可以理解的是,该节点肯定能够插入到第一执行路径中的第四、第五处理任务之间,之后,执行第一操作,即判断是否需要将第四处理任务的最晚启动时间Time2往前挪Len1;执行第二操作,即判断是否需要将第五处理任务的最早启动时间往后挪Len2。
这里,如果所述集合中存在第二执行路径,且第二执行路径满足第一条件,且第四处理任务没有后续的处理任务时,可以理解的是,该第四处理任务为第二执行路径中的最后一个节点,且节点肯定能够插入到第二执行路径中的第四处理任务之后,执行第一操作,即判断是否需要将第四处理任务的最晚启动时间Time2往前挪Len1。
这里,如果所述集合中存在第三执行路径,且第三执行路径满足第二条件,且第五处理任务没有前续的处理任务时,可以理解的是,该第五处理任务为第三执行路径中的最前一个节点,且节点肯定能够插入到第三执行路径中的第五处理任务之前,执行第二操作,即判断是否需要将第五处理任务的最早启动时间往后挪Len2。
本实施例中,所述按照预设的次序具体包括:按照从队头朝向队尾的次序。
发明人在做实验的过程中,开发了用户态回调函数调度器,基于ROS(RobotOperating System,机器人操作系统)的执行器特点,做了关于用户优先级的增强。本文的调度器相对于ROS,不仅可以指定底层线程的OS(Operating System,操作系统)优先级,绑定一或多个硬件CPU核心,还支持用户回调函数的优先级配置,为了便于区分,称为用户优先级。不同于ROS执行器按照timer、subscriber、server、client的优先顺序检查ready状态和执行,本文的调度器严格按照用户优先级从高到低的顺序来检查ready状态和执行,结果是,当高优先级和低优先级的用户回调函数同时处于ready状态时,调度器会选择高优先级回调函数执行。这种机制给了在设计阶段更精确的控制任务运行顺序的能力。需要注意的是,同一调度器的用户任务之间在运行时不会也不需要互相抢占切换执行,这一点和不同OS优先级的线程不同。
不同执行路径编排的线程模型,按照关键级别划分不同线程优先级,按照执行路径端到端延时和周期的比例确定底层执行器线程数,同一线程优先级的不同执行路径绑定一或多个(线程数大于一时)CPU核,这样避免了同优先级的线程切换,避免执行路径的执行被其它线程打断。当执行路径端到端延时大于执行路径触发周期时,需要采用多线程绑定多核的方式并发处理多个周期的执行路径,避免跨周期的任务积压。底层执行器线程数的计算方式是:线程数>总延迟阈值/执行路径触发周期。对于更高优先级的抢占,视为可接受的情况,周期性的高优先级抢占,可以在分析时相应的按比例减少当前CPU核的算力,实际操作为了方便,可以按比例增大当前链的任务的WCET。
为同一执行路径的任务按照递增的方式分配用户态优先级,这样越靠后的任务优先级越高,避免本周期的执行路径被新一周期的任务打断,在旧周期执行路径结束后才开始新执行路径的执行。
以上的技术方案,首先保证每个处理任务有合理的最坏执行时间WCET,再通过静态调度设计的方法,在设计阶段建模分析DAG拓扑关系和理论延时,编排执行路径的调度序列,分析、确定端到端的总延时,最后通过调度器实现和调度编排约束,保证了执行路径运行时的链式无中断执行,确保设计阶段的任务调度时序。这样通过整套方案,最终满足了自动驾驶执行路径条的端到端实时性。
本发明实施例二提供了一种用于自动驾驶系统的处理任务的调度装置,包括以下模块:
信息获取模块,用于获取多个处理任务、总延迟阈值、以及每个处理任务对应的属性信息,所述属性信息包括:处理任务的若干触发条件、若干输出消息、最坏执行时间和每个输出消息对应的延迟时间;当处理任务对应的所有触发条件都被满足时,自动驾驶系统能够启动所述处理任务,所述处理任务的实际执行时间≤对应的最坏执行时间;在所述处理任务完成执行时,发出若干输出消息;每个输出消息,在经过对应的时间Time之后,自动驾驶系统能够探测到所述输出消息,所述时间Time≤所述输出消息的延迟时间。
ADG图生成模块,用于创建多个处理任务对应的DAG图,在所述DAG图中,每个处理任务均对应到唯一的节点,每个处理任务对应的节点的权重为所述处理任务的最坏执行时间;当第一处理任务的输出消息等于第二处理任务的触发条件时,第一处理任务对应的节点有指向第二处理任务对应节点的有向边,所述有向边的权重为所述输出消息的延迟时间;当第三处理任务有输出消息,但不存在任一的处理任务的触发条件为所述输出消息时,创建一个权重为零的目标节点,第三处理任务对应的节点有指向目标节点的有向边,所述有向边的权重为所述输出消息的延迟时间。
第一处理模块,用于对于每个节点均做以下处理:如果箭头朝向所述节点的有向边的数量为零,则所述节点的最早启动时间Time1=0;所述节点的最早结束时间Time3=最早启动时间Time1+最坏执行时间;如果箭头朝向所述节点的有向边的数量为Num1,且分别为,Num1为自然数,所述节点的最早启动时间Time1=/>的箭尾指向的节点的最早结束时间/>对应的延迟时间/>;对所述DAG图中的关键路径中的每个节点均做以下处理:所述节点的最晚启动时间Time2=最早启动时间Time1,所述节点的启动时间=最早启动时间Time1。
第二处理模块,用于对于每个不处于所述关键路径中的节点均做以下处理:如果箭尾朝向所述节点的有向边的数量为零,则所述节点的最晚启动时间Time2=总延迟阈值-所述节点的权重;如果箭尾朝向所述节点的有向边的数量为Num2,分别为,Num2为自然数,所述节点的最晚启动时间Time3=/>的箭头指向的节点的最晚启动时间/>对应的延迟时间-所述节点对应的最坏执行时间;对于所有不处于所述关键路径中的节点分配到若干执行路径中,在每个执行路径中,对应的最早启动时间Time1≤处理任务的启动时间≤对应的最晚启动时间Time2。
执行模块,用于所述自动驾驶系统为关键路径和每条路径均分配不同的线程上,控制每个线程运行,其中,目标节点不执行。
本实施例中,包括以下模块:第三处理模块,用于如果所述关键路径中的最后一个节点的最早结束时间>总延迟阈值时,发出警报。
本实施例中,所述执行模块还用于:将每个线程分配到不同的CPU核心上运行,在线程的执行过程中,CPU核心不执行中断。
本实施例中,所述第二处理模块还用于:
按照最早启动时间Time1的由小到大的顺序,对于所有不处于所述关键路径中的节点进行排序,得到节点队列,且节点的最晚完成时间Time4=最晚启动时间Time2+最坏执行时间。
创建空的集合,按照预设的次序,对所述节点队列中的每个节点均进行以下处理:
如果所述集合中存在第一执行路径,且第一执行路径满足第一条件和第二条件,且第四、第五处理任务相邻时,则将所述节点插入到第一执行路径中的第四、第五处理任务之间,之后执行第一操作和第二操作。
如果所述集合中存在第二执行路径,且第二执行路径满足第一条件,且第四处理任务没有后续的处理任务时,则将所述节点插入到第三执行路径中的第四处理任务之后,之后执行第一操作。
如果所述集合中存在第三执行路径,且第三执行路径满足第二条件,且第五处理任务没有前续的处理任务时,则将所述节点插入到第三执行路径中的第五处理任务之前,之后执行第二操作。
第一条件为:存在第四处理任务且第四处理任务的最早结束时间Time3≤节点的最早启动Time1;第二条件为:存在第五处理任务且节点的最早结束时间Time3≤第五处理任务的最晚启动时间Time2时。
第一操作为:如果节点的最早启动Time1≤第四处理任务的最晚完成时间Time4,则Len1=第四处理任务的最晚完成时间Time4-节点的最早启动Time1,将第四处理任务的最晚启动时间Time2减去Len1;第二操作为:第五处理任务的最早启动时间Time1≤节点的最早完成时间Time3,则Len2=节点的最早完成时间Time3-第五处理任务的最早启动时间Time1,将第五处理任务的最早启动时间增加Len2。
本实施例中,所述第二处理模块还用于:按照从队头朝向队尾的次序。
应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

Claims (10)

1.一种用于自动驾驶系统的处理任务的调度方法,其特征在于,包括以下步骤:
获取多个处理任务、总延迟阈值、以及每个处理任务对应的属性信息,所述属性信息包括:处理任务的若干触发条件、若干输出消息、最坏执行时间和每个输出消息对应的延迟时间;当处理任务对应的所有触发条件都被满足时,自动驾驶系统能够启动所述处理任务,所述处理任务的实际执行时间≤对应的最坏执行时间;在所述处理任务完成执行时,发出若干输出消息;每个输出消息,在经过对应的时间Time之后,自动驾驶系统能够探测到所述输出消息,所述时间Time≤所述输出消息的延迟时间;
创建多个处理任务对应的DAG图,在所述DAG图中,每个处理任务均对应到唯一的节点,每个处理任务对应的节点的权重为所述处理任务的最坏执行时间;当第一处理任务的输出消息等于第二处理任务的触发条件时,第一处理任务对应的节点有指向第二处理任务对应节点的有向边,所述有向边的权重为所述输出消息的延迟时间;当第三处理任务有输出消息,但不存在任一的处理任务的触发条件为所述输出消息时,创建一个权重为零的目标节点,第三处理任务对应的节点有指向目标节点的有向边,所述有向边的权重为所述输出消息的延迟时间;
对于每个节点均做以下处理:如果箭头朝向所述节点的有向边的数量为零,则所述节点的最早启动时间Time1=0;所述节点的最早结束时间Time3=最早启动时间Time1+最坏执行时间;如果箭头朝向所述节点的有向边的数量为Num1,且分别为,Num1为自然数,所述节点的最早启动时间Time1=/>的箭尾指向的节点的最早结束时间/>对应的延迟时间/>;对所述DAG图中的关键路径中的每个节点均做以下处理:所述节点的最晚启动时间Time2=最早启动时间Time1,所述节点的启动时间=最早启动时间Time1;
对于每个不处于所述关键路径中的节点均做以下处理:如果箭尾朝向所述节点的有向边的数量为零,则所述节点的最晚启动时间Time2=总延迟阈值-所述节点的权重;如果箭尾朝向所述节点的有向边的数量为Num2,分别为,Num2为自然数,所述节点的最晚启动时间Time3=/>的箭头指向的节点的最晚启动时间/>对应的延迟时间-所述节点对应的最坏执行时间/>;对于所有不处于所述关键路径中的节点分配到若干执行路径中,在每个执行路径中,对应的最早启动时间Time1≤处理任务的启动时间≤对应的最晚启动时间Time2;
所述自动驾驶系统为关键路径和每条路径均分配不同的线程上,控制每个线程运行,其中,目标节点不执行。
2.根据权利要求1所述的调度方法,其特征在于,还包括以下步骤:
如果所述关键路径中的最后一个节点的最早结束时间>总延迟阈值时,发出警报。
3.根据权利要求1所述的调度方法,其特征在于,所述控制每个线程运行具体包括:
将每个线程分配到不同的CPU核心上运行,在线程的执行过程中,CPU核心不执行中断。
4.根据权利要求1所述的调度方法,其特征在于,所述对于所有不处于所述关键路径中的节点分配到若干第一执行路径中具体包括:
按照最早启动时间Time1的由小到大的顺序,对于所有不处于所述关键路径中的节点进行排序,得到节点队列,且节点的最晚完成时间Time4=最晚启动时间Time2+最坏执行时间;
创建空的集合,按照预设的次序,对所述节点队列中的每个节点均进行以下处理:
如果所述集合中存在第一执行路径,且第一执行路径满足第一条件和第二条件,且第四、第五处理任务相邻时,则将所述节点插入到第一执行路径中的第四、第五处理任务之间,之后执行第一操作和第二操作;
如果所述集合中存在第二执行路径,且第二执行路径满足第一条件,且第四处理任务没有后续的处理任务时,则将所述节点插入到第三执行路径中的第四处理任务之后,之后执行第一操作;
如果所述集合中存在第三执行路径,且第三执行路径满足第二条件,且第五处理任务没有前续的处理任务时,则将所述节点插入到第三执行路径中的第五处理任务之前,之后执行第二操作;
第一条件为:存在第四处理任务且第四处理任务的最早结束时间Time3≤节点的最早启动Time1;第二条件为:存在第五处理任务且节点的最早结束时间Time3≤第五处理任务的最晚启动时间Time2时;
第一操作为:如果节点的最早启动Time1≤第四处理任务的最晚完成时间Time4,则Len1=第四处理任务的最晚完成时间Time4-节点的最早启动Time1,将第四处理任务的最晚启动时间Time2减去Len1;第二操作为:第五处理任务的最早启动时间Time1≤节点的最早完成时间Time3,则Len2=节点的最早完成时间Time3-第五处理任务的最早启动时间Time1,将第五处理任务的最早启动时间增加Len2。
5.根据权利要求4所述的调度方法,其特征在于,所述按照预设的次序具体包括:按照从队头朝向队尾的次序。
6.一种用于自动驾驶系统的处理任务的调度装置,其特征在于,包括以下模块:
信息获取模块,用于获取多个处理任务、总延迟阈值、以及每个处理任务对应的属性信息,所述属性信息包括:处理任务的若干触发条件、若干输出消息、最坏执行时间和每个输出消息对应的延迟时间;当处理任务对应的所有触发条件都被满足时,自动驾驶系统能够启动所述处理任务,所述处理任务的实际执行时间≤对应的最坏执行时间;在所述处理任务完成执行时,发出若干输出消息;每个输出消息,在经过对应的时间Time之后,自动驾驶系统能够探测到所述输出消息,所述时间Time≤所述输出消息的延迟时间;
ADG图生成模块,用于创建多个处理任务对应的DAG图,在所述DAG图中,每个处理任务均对应到唯一的节点,每个处理任务对应的节点的权重为所述处理任务的最坏执行时间;当第一处理任务的输出消息等于第二处理任务的触发条件时,第一处理任务对应的节点有指向第二处理任务对应节点的有向边,所述有向边的权重为所述输出消息的延迟时间;当第三处理任务有输出消息,但不存在任一的处理任务的触发条件为所述输出消息时,创建一个权重为零的目标节点,第三处理任务对应的节点有指向目标节点的有向边,所述有向边的权重为所述输出消息的延迟时间;
第一处理模块,用于对于每个节点均做以下处理:如果箭头朝向所述节点的有向边的数量为零,则所述节点的最早启动时间Time1=0;所述节点的最早结束时间Time3=最早启动时间Time1+最坏执行时间;如果箭头朝向所述节点的有向边的数量为Num1,且分别为,Num1为自然数,所述节点的最早启动时间Time1=/>的箭尾指向的节点的最早结束时间/>对应的延迟时间/>;对所述DAG图中的关键路径中的每个节点均做以下处理:所述节点的最晚启动时间Time2=最早启动时间Time1,所述节点的启动时间=最早启动时间Time1;
第二处理模块,用于对于每个不处于所述关键路径中的节点均做以下处理:如果箭尾朝向所述节点的有向边的数量为零,则所述节点的最晚启动时间Time2=总延迟阈值-所述节点的权重;如果箭尾朝向所述节点的有向边的数量为Num2,分别为,Num2为自然数,所述节点的最晚启动时间Time3=/>的箭头指向的节点的最晚启动时间/>对应的延迟时间-所述节点对应的最坏执行时间;对于所有不处于所述关键路径中的节点分配到若干执行路径中,在每个执行路径中,对应的最早启动时间Time1≤处理任务的启动时间≤对应的最晚启动时间Time2;
执行模块,用于所述自动驾驶系统为关键路径和每条路径均分配不同的线程上,控制每个线程运行,其中,目标节点不执行。
7.根据权利要求6所述的调度装置,其特征在于,还包括以下模块:
第三处理模块,用于如果所述关键路径中的最后一个节点的最早结束时间>总延迟阈值时,发出警报。
8.根据权利要求6所述的调度装置,其特征在于,所述执行模块还用于:
将每个线程分配到不同的CPU核心上运行,在线程的执行过程中,CPU核心不执行中断。
9.根据权利要求6所述的调度装置,其特征在于,所述第二处理模块还用于:
按照最早启动时间Time1的由小到大的顺序,对于所有不处于所述关键路径中的节点进行排序,得到节点队列,且节点的最晚完成时间Time4=最晚启动时间Time2+最坏执行时间;
创建空的集合,按照预设的次序,对所述节点队列中的每个节点均进行以下处理:
如果所述集合中存在第一执行路径,且第一执行路径满足第一条件和第二条件,且第四、第五处理任务相邻时,则将所述节点插入到第一执行路径中的第四、第五处理任务之间,之后执行第一操作和第二操作;
如果所述集合中存在第二执行路径,且第二执行路径满足第一条件,且第四处理任务没有后续的处理任务时,则将所述节点插入到第三执行路径中的第四处理任务之后,之后执行第一操作;
如果所述集合中存在第三执行路径,且第三执行路径满足第二条件,且第五处理任务没有前续的处理任务时,则将所述节点插入到第三执行路径中的第五处理任务之前,之后执行第二操作;
第一条件为:存在第四处理任务且第四处理任务的最早结束时间Time3≤节点的最早启动Time1;第二条件为:存在第五处理任务且节点的最早结束时间Time3≤第五处理任务的最晚启动时间Time2时;
第一操作为:如果节点的最早启动Time1≤第四处理任务的最晚完成时间Time4,则Len1=第四处理任务的最晚完成时间Time4-节点的最早启动Time1,将第四处理任务的最晚启动时间Time2减去Len1;第二操作为:第五处理任务的最早启动时间Time1≤节点的最早完成时间Time3,则Len2=节点的最早完成时间Time3-第五处理任务的最早启动时间Time1,将第五处理任务的最早启动时间增加Len2。
10.根据权利要求9所述的调度装置,其特征在于,所述第二处理模块还用于:按照从队头朝向队尾的次序。
CN202311501330.4A 2023-11-13 2023-11-13 用于自动驾驶系统的处理任务的调度方法及其装置 Active CN117234695B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311501330.4A CN117234695B (zh) 2023-11-13 2023-11-13 用于自动驾驶系统的处理任务的调度方法及其装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311501330.4A CN117234695B (zh) 2023-11-13 2023-11-13 用于自动驾驶系统的处理任务的调度方法及其装置

Publications (2)

Publication Number Publication Date
CN117234695A true CN117234695A (zh) 2023-12-15
CN117234695B CN117234695B (zh) 2024-01-30

Family

ID=89098729

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311501330.4A Active CN117234695B (zh) 2023-11-13 2023-11-13 用于自动驾驶系统的处理任务的调度方法及其装置

Country Status (1)

Country Link
CN (1) CN117234695B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107301500A (zh) * 2017-06-02 2017-10-27 北京工业大学 一种基于关键路径任务前瞻的工作流调度方法
CN113516301A (zh) * 2021-06-22 2021-10-19 中国联合网络通信集团有限公司 面向自动驾驶的任务调度方法、终端设备及存储介质
CN115509712A (zh) * 2022-10-07 2022-12-23 大连理工大学 一种基于smt的自动驾驶系统实时性任务调度分析方法
US20230176905A1 (en) * 2020-09-27 2023-06-08 Suzhou Inspur Intelligent Technology Co., Ltd. Automatic driving simulation task scheduling method and apparatus, device, and readable medium
US20230342186A1 (en) * 2022-04-26 2023-10-26 Hewlett Packard Enterprise Development Lp Priority-based directed acyclic graph scheduling

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107301500A (zh) * 2017-06-02 2017-10-27 北京工业大学 一种基于关键路径任务前瞻的工作流调度方法
US20230176905A1 (en) * 2020-09-27 2023-06-08 Suzhou Inspur Intelligent Technology Co., Ltd. Automatic driving simulation task scheduling method and apparatus, device, and readable medium
CN113516301A (zh) * 2021-06-22 2021-10-19 中国联合网络通信集团有限公司 面向自动驾驶的任务调度方法、终端设备及存储介质
US20230342186A1 (en) * 2022-04-26 2023-10-26 Hewlett Packard Enterprise Development Lp Priority-based directed acyclic graph scheduling
CN115509712A (zh) * 2022-10-07 2022-12-23 大连理工大学 一种基于smt的自动驾驶系统实时性任务调度分析方法

Also Published As

Publication number Publication date
CN117234695B (zh) 2024-01-30

Similar Documents

Publication Publication Date Title
Van Tilborg et al. Foundations of real-time computing: Scheduling and resource management
US8397235B2 (en) User tolerance based scheduling method for aperiodic real-time tasks
US8332862B2 (en) Scheduling ready tasks by generating network flow graph using information receive from root task having affinities between ready task and computers for execution
US9785468B2 (en) Finding resource bottlenecks with low-frequency sampled data
CN111861412B (zh) 面向完成时间优化的科学工作流调度方法及系统
Murthy et al. Resource management in real-time systems and networks
Manolache et al. Task mapping and priority assignment for soft real-time applications under deadline miss ratio constraints
Årzén et al. Integrated control and scheduling
US20040268335A1 (en) Modulo scheduling of multiple instruction chains
Kodase et al. Transforming structural model to runtime model of embedded software with real-time constraints
Guan et al. General and efficient response time analysis for EDF scheduling
CN117435324B (zh) 基于容器化的任务调度方法
CN117234695B (zh) 用于自动驾驶系统的处理任务的调度方法及其装置
EP1998247A2 (en) Model-based planning with multi-capacity resources
KR101335038B1 (ko) 위상 정렬 및 잉여 시간을 기반으로 하는 주기 및 비주기 실시간 태스크 스케줄링 알고리즘
CN117149378A (zh) 智能汽车操作系统的任务调度方法、装置、设备及介质
Tabbaa et al. A fault tolerant scheduling algorithm for dag applications in cluster environments
US20090168092A1 (en) Job management and scheduling method for network system
US20210026701A1 (en) Computer-implemented method and apparatus for planning resources
Küttler et al. Probabilistic analysis of low-criticality execution
Gu et al. Synthesis of real-time implementations from component-based software models
Oberthür Towards an RTOS for self-optimizing mechatronic systems
Goossens et al. Partitioned scheduling of multimode multiprocessor real-time systems with temporal isolation
JP4326963B2 (ja) ハードリアルタイムシステムにおけるソフトウェアコンポーネントのタイムボックス駆動型のスケジューリング
Chen High Performance Real-Time Scheduling Framework for Multiprocessor Systems

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