一种基于DAG的启发式任务调度方法技术

技术编号:36564752 阅读:11 留言:0更新日期:2023-02-04 17:20
本发明专利技术属于实时嵌入式系统技术领域,具体涉及一种基于DAG的启发式任务调度方法。本发明专利技术将DAG的节点划分为几个子集,然后对每个节点子集进行调度,并将所有节点子集的调度合并为针对整个DAG上所有任务节点的调度。该方法可以在具有DAG结构的嵌入式系统设计的编译阶段对系统完成静态调度。通过使用本发明专利技术提出的DAG上任务的调度方法,相对于经典的Graham列表调度算法有效降低了系统的平均响应时间,可以使计算资源有限的嵌入式系统提高单位时间内完成的任务数量并且用尽可能少的运行内核数量完成任务,从而避免资源浪费。从而避免资源浪费。从而避免资源浪费。

【技术实现步骤摘要】
一种基于DAG的启发式任务调度方法


[0001]本专利技术属于实时嵌入式系统
,具体涉及一种基于DAG的启发式任务调度方法。

技术介绍

[0002]实时和嵌入式系统正在从单核平台向多核平台转变,软件必须在多核平台上并行化,才能充分利用多核硬件的计算能力。多核(multicore)是指在一枚处理器(processor)中集成两个或多个完整的计算引擎(内核)。多核系统更易于扩展,并且能够在更纤巧外形的硬件中融入更强大处理性能的计算单元,这种系统所用的功耗更低、计算功耗产生的热量更少。
[0003]目前大多数实时并行任务都可以建模为有向无环图(Directed Acyclic Graph,DAG)。有向无环图是实时系统领域中表达性非常强的模型,是一种常见的对并行程序建模的模型。在多核处理器上调度DAG任务是高性能计算的关键问题,而在实时场景中,一个好的调度器不仅应该在实践中达到具有竞争力的性能,而且需要在理论上具有可预测性。任务调度是指系统为了自动完成特定任务,在约定的特定时刻去执行任务的过程。有了任务调度即可解放更多的人力,由系统自动去执行任务。任务调度系统负责指定各个任务何时运行,何时结束以及正确的处理任务之间的依赖关系。
[0004]DAG的响应时间是指在多核平台上应用的调度算法下执行G中的所有节点所花费的时间。在实时嵌入式系统领域,一个具有挑战性的问题是如何有效地限制最坏情况响应时间(Worst Case Response Time,WCRT)。
[0005]经典的Graham列表调度算法为系统提供了一个安全的响应时间分析的上界,但它的分析结果明显高于实际系统的结果,在计算资源非常有限的嵌入式系统中,这样的误差可能会造成巨大的资源浪费。

技术实现思路

[0006]实时嵌入式系统正在从单核平台向多核平台转变,软件必须在多核平台上并行化,为了能够充分利用多核硬件平台的计算能力,本专利技术提出了一种具有改进的响应时间界限的用于DAG上任务调度的启发式调度方法。
[0007]本专利技术的技术方案:
[0008]一种基于DAG的启发式任务调度方法,步骤如下:
[0009]步骤一:确定系统的DAG模型
[0010]将实时系统或嵌入式系统上的实时任务建模为DAG G=(V,E),其中V是节点的集合,E是边的集合;V中的每个节点v
i
表示一段连续的执行代码,并且具有执行时间e
i
;每条边(v
i
,v
j
)∈E表示节点v
i
和v
j
之间的优先关系,v
i
是v
j
的前驱节点,v
j
是v
i
的后继节点;如果v
i
是v
j
的前驱节点的前驱节点,则称节点v
i
是v
j
的祖先节点,称v
j
是v
i
的后裔节点;。
[0011]步骤二:将DAG中的节点划分为若干个节点子集
[0012]将DAG G的节点集V划分为几个子集,节点划分表示为P(V)={V1,V2,...,V
l
},其中V
l
=k(k=1,...,l)表示P(V)的第k个子集;通过在G中找到路径序列集合来求解节点划分P(V),其中路径序列集合记为Π={π1,π2,...,π
l
},使得的路径覆盖V中的所有节点,即并且Π的每个路径π
k
包含至少一个不属于{π1,...,π
k
‑1}中的路径的节点,即
[0013]步骤三:对各个节点子集分别进行调度并整合为对整个DAG的调度
[0014]串行调度P(V)的节点子集。首先,将每个节点v
i
的开始时间b
i
和结束时间f
i
分别初始化为+∞和0;然后,将P(V)的子集从V1到V
l
逐一进行调度;对于每个子集V
k
,假设V
k
中的节点是按照优先顺序排序的,即对于V
k
中的任意节点v
i
和v
j
,如果v
i
是v
j
的祖先节点,则i<j。
[0015]依次对节点集V
k
中的每一个节点v
i
的调度包括:计算可用的时间区间、核的分配以及重调度进程,具体为:首先,计算节点vi可以执行的可用时间间隔[t
a
,t
b
);然后,如果有足够的核资源在可用时间间隔[t
a
,t
b
)内执行v
i
,就将核分配给v
i
,并决定节点v
i
执行的时间段;否则,通过重新安排v
i
的后裔节点来延长可用时间间隔,并在延长的可用时间间隔内调度v
i

[0016]最终P(V)中的节点子集按下标顺序串行调度即为整个DAG的调度。
[0017]本专利技术的有益效果为:
[0018]本专利技术提出了一种新的DAG上任务的调度方法,将DAG的节点划分为几个子集,然后对每个节点子集进行调度,并将所有节点子集的调度合并为针对整个DAG上所有任务节点的调度。该方法可以在具有DAG结构的嵌入式系统设计的编译阶段对系统完成静态调度。通过使用本专利技术提出的DAG上任务的调度方法,相对于经典的Graham列表调度算法有效降低了系统的平均响应时间,可以使计算资源有限的嵌入式系统提高单位时间内完成的任务数量并且用尽可能少的运行内核数量完成任务,从而避免资源浪费。
附图说明
[0019]图1为本专利技术方法步骤流程图;
[0020]图2为一个DAGG的示例图,同时也是图G的剩余图G1的示例图;
[0021]图3为图G的剩余图G2的示例图;
[0022]图4为图G的剩余图G3的示例图;
[0023]图5为本专利技术的调度方法与经典的列表调度方法的响应时间的对比。
具体实施方式
[0024]以下结合附图和技术方案,进一步说明本专利技术的具体实施方式。
[0025]本专利技术的一种基于DAG的启发式任务调度方法的基本流程如图1所示,具体步骤如下:
[0026]步骤一:确定系统的DAG模型
[0027]将实时系统或嵌入式系统上的实时任务建模为DAG G=(V,E),其中V是节点的集合,E是边的集合。V中的每个节点v
i
表示一段连续的执行代码,并且具有执行时间e
i
;每条边(v
i
,v
j
)∈E表示节点v
i
和v
j
之间的优先关系,v
i
是v
j
的前驱本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于DAG的启发式任务调度方法,其特征在于,步骤如下:步骤一:确定系统的DAG模型将实时系统或嵌入式系统上的实时任务建模为DAG G=(V,E),其中V是节点的集合,E是边的集合;V中的每个节点v
i
表示一段连续的执行代码,并且具有执行时间e
i
;每条边(v
i
,v
j
)∈E表示节点v
i
和v
j
之间的优先关系,v
i
是v
j
的前驱节点,v
j
是v
i
的后继节点;如果v
i
是v
j
的前驱节点的前驱节点,则称节点v
i
是v
j
的祖先节点,称v
j
是v
i
的后裔节点;;步骤二:将DAG中的节点划分为若干个节点子集将DAG G的节点集V划分为几个子集,节点划分表示为P(V)={V1,V2,...,V
l
},其中V
l
=k(k=1,...,l)表示P(V)的第k个子集;通过在G中找到路径序列集合来求解节点划分P(V),其中路径序列集合记为Π={π1,π2,...,π
l
},使得Π的路径覆盖V中的所有节点,即并且Π的每个路径π
k
包含至少一个不属于{π1,...,π
k

【专利技术属性】
技术研发人员:孙振宇孟亚坤孙景昊王继伟章宇王英霖郑浩然毕冉
申请(专利权)人:大连理工大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1