本发明属于嵌入式系统多核技术领域,涉及嵌入式多核平台下软实时任务调度过程中的性能评测研究。
背景技术:
在当前基于多核体系结构的调度方法中,针对相互独立的实时周期任务的调度算法大致分为两大类:全局调度算法和任务划分调度算法。全局调度算法典型的如gedf(globalearliestdeadlinefirstscheduling),该算法的优点是核利用率高,缺点是要想达到负载均衡必须进行线程迁移,而迁移的开销很大。任务划分调度算法典型的如pedf(partitionedearliestdeadlinefirstscheduling),该算法的优点是能够达到负载均衡,但却使核利用率较低。于是许多学者结合两种算法各自的优点,提出了半划分调度算法(semi-partitionedscheduling)典型的如edf-os(earliestdeadlinefirst-basedoptimalsemi-partitioned)算法,该类算法的总体思想是将调度算法分为两个部分:离线划分阶段和调度执行阶段。在离线划分阶段,将任务分为固定任务(fixedtasks)和迁移任务(splittingtasks),大部分任务为固定任务,被指派到其中一个处理器上,这种任务不可迁移;而另外一些小部分任务按照一定的比例被分配到不同处理器上,被称为迁移任务。调度执行阶段迁移的任务可以按照已经设定好的比例在不同处理器之间进行迁移。半划分调度算法在理论和实际应用中优于单纯的任务划分和全局的调度算法,但当两个或者两个以上相互独立的实时周期任务被分配到同一个处理器上时,如何精确计算出低优先级任务由于被抢占而导致的每次任务执行后的延迟时间,却是一个比较棘手的问题。当前大多学者都是在划分算法理论上给出一个延迟的最大范围,或者在假设已有的延迟的基础上进行最大延迟的理论推导,却无法从理论上精确给出低优先级任务每次执行的完成时间以及相应的延迟。
技术实现要素:
本发明提供一种基于扩展向量模型的软实时周期任务延迟计算方法,解决现有技术中软实时系统中两个或两个以上暗含时限的实时周期任务被分配到同一处理器上时,由于抢占导致低优先级任务产生的延迟时间无法确定的问题。
为了达到上述目的,本发明的技术方案如下:
一种基于扩展向量模型的软实时周期任务延迟计算方法,其特征在于,针对同一处理器上被调度的两个或两个以上相互独立的暗含时限的实时周期任务,首先将暗含时限的周期任务模型转化为初始向量模型,然后将迁移任务的迁移比例情况计算出来,将迁移任务再转化为扩展向量,根据扩展向量的内容,精确计算低优先级的任务的每次执行的完成时间以及延迟时间。
进一步的,具体包括以下步骤:
步骤1、选择一个已经分配好的处理器,将该处理器上已经分配的暗含时限的周期模型转化为初始向量模型;
步骤2、根据划分调度算法,将分配在处理器上的高优先级的任务的分配份额以及job执行的比例计算出来;
步骤3、根据步骤2,将所有高优先级任务的初始向量按照job分配的比例转化为扩展向量模型;
步骤4、如果同一个处理器上只有两个任务,则直接进入步骤5;否则将高优先级任务的扩展向量合并为一个扩展向量。
步骤5、根据步骤4的扩展向量模型来判定是离散型的任务模型还是一般的暗含时限的周期任务模型;如果是离散型的任务模型则根据离散型延迟的计算方法来计算低优先级任务的完成时间和延迟时间,否则根据普通暗含时限的延迟计算方法来计算,如果系统处理器还没有处理完毕,转步骤1。
进一步的,步骤1中,转化为初始向量模型具体包括以下步骤:
步骤101、先根据某个划分的调度算法将任务分配到不同的处理器上;
步骤102、选择其中一个处理器,将已经分配好的暗含时限的实时周期任务τ(e,p)写成p维向量,从第一个元素开始连续e个元素的值都为1,剩余的都为0。
进一步的,步骤2中,计算高优先级任务的划分份额si,j以及job的比例fi,j,具体包括以下步骤:
步骤201、对于某处理器上的高优先级任务τj,计算其运行在该处理器上的划分份额就是除了低优先级任务之外的处理器的利用率份额,用
步骤202、根据fi,j=si,j/ui公式来计算job的分配比例。
进一步的,步骤3中,初始向量按照job分配的比例fi,j转化为扩展向量模型,具体包括以下步骤:
步骤301、将fi,j化为最简式,记为fi,j=a/b,那么将周期任务的τ(e,p)的初始向量转化为τ′(e×a,p×b)的初始向量;
步骤302、根据调度算法特点,如果分配该任务的第k个job在该处理器上运行,那么将τ′(e×a,p×b)的初始向量的1的起始位置重新进行定位到第k个job的位置;
步骤303、将所有分配到该处理器上的job按照p×b个周期重新定位,其他未能分配到job的周期内所有元素值为0,即为扩展向量模型。
进一步的,步骤4中,合并扩展向量具体包括以下步骤:
步骤401、先求出不同的高优先级任务的扩展向量周期的最小公倍数m;
步骤402、根据m对高优先级的扩展向量进行再次扩展,然后对应元素进行相加运算;运算后的结果应仍然为0或者1的元素。
进一步的,步骤5中,选择不同的计算公式具体包括以下步骤:
步骤501、根据高优先级任务的扩展向量是否与初始向量性质相同,即从第一个位置开始为1,且后续为1的值的位置一直连续,后续0的位置也连续,既可以判定该扩展向量等同于一般暗含时限的周期任务,即扩展向量的中1的个数为e1,向量维度为p1进行计算;这种情况直接利用暗含时限的任务延迟方法来进行计算;如果1的位置不连续则判定为离散型周期任务,用离散型任务延迟方法进行计算;
步骤502、如果利用定理1计算低优先级任务某次执行的延迟,则根据上述步骤中的e1和p1,以及低优先级任务的暗含时限的周期模型(e2,p2)直接计算该次job的完成时间、绝对时限、推迟时间和延迟时间;
步骤503、如果利用定理2进行计算低优先级任务某次执行的延迟,则先要根据定义3写出上述扩展向量的离散型周期任务模型,写出
与现有技术相比,本发明的有益效果是:
1.本发明可以提前预测软实时周期任务低优先级任务每次完成的时间节点和延迟情况,为保证安全关键任务的执行以及分析调度过程中的性能提供有力的理论依据,这对于进一步研究嵌入式多核调度算法的性能评价方法有很重要的意义,在嵌入式多核设备的自动控制和安全领域将会有广泛的应用前景和重要的价值。
2.本发明根据软实时系统中划分调度算法离线分配任务的特点,提出利用扩展向量模型精确计算低优先级任务每次被执行后的完成时间和延迟时间的理论计算方法,为多核调度算法性能和系统的高效性分析提供了合理的理论依据。
附图说明
图1是本发明edf-os算法示例离线阶段的分配情况;
图2是本发明edf-os算法在线执行阶段的调度情况。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
第一部分:说明本发明方法完整的步骤
本发明针对两个或两个以上相互独立、暗含时限的软实时周期任务,被分配到同一处理器上进行调度时,利用向量模型对低优先级任务每次执行的完成时间和延迟时间进行精确计算的方法。首先,需要确定软实时系统中的暗含时限的实时周期任务的三个重要属性——发布时间r、周期p和最坏执行时间e。其中周期也是相对时限,记为τ(r,e,p),如果r为从0时刻发布,则记为τ(e,p)。本发明讨论的是后者。
对于一个拥有n个实时周期任务的软实时系统τ={τ1,τ2,τ3…,τn},其中第i个任务τi(ei,pi),其利用率因子记为ui=ei/pi,每过一个周期时间就执行一次称为一次job,该任务的第j次job的执行记为τi,j,第j次job执行完毕的时刻记为end(τi,j),第j次job任务的绝对时限为deadline(τi,j)=pi×j,第j次job执行完毕后距离绝对时限的时间记为lateness(τi,j)=end(τi,j)-deadline(τi,j),第j次job执行完毕后的延迟时间记为lateness(τi,j)=max{0,lateness(τi,j)}.
定义1.对于任何一个暗含时限的实时周期任务τ(e,p),都可以唯一对应一个p维向量,该向量中从第一个元素开始连续e个元素的值都为1,剩余p-e个连续的元素都为0。例如τ(3,5)可以对应于一个5维的向量为[1,1,1,0,0]。把该向量称为任务τ的原始向量,记为i(τ).
定义2.给定一个大于n的整数值m>n,可以通过循环重复i(τ)中的全部元素,使其扩展为m维向量,这里m应为n的整数倍,记为原始矩阵的扩展向量em(τ)。
定理1.如果有两个暗含时限的实时周期任务τ1(e1,p1)和τ2(e2,p2)被调度到同一个处理器上,且已知τ1优先于τ2,那么
证明:因为τ1和τ2同时被调度在同一处理器上且τ1优先保证执行相应的时间单元,那么τ2必须在τ1的空闲时间单元里面才能执行,而τ2的i个job中总共需要的执行时间单元个数为i×e2个。τ1中每个周期内空闲的时间单元个数为p1-e1个,那么τ2的i个job执行完毕就需要
相应的
由tardiness(τ2,i)=max{0,lateness(τ2,i)}得证。
定义3.对于一个实时周期任务τ1(e1,p1),如果τ1的执行时间单元并不连续,即e1执行的时间单元分散在p1周期内,则称τ1为离散型实时周期任务。记为
例如:
定理2.如果τ1为离散型实时周期任务
lateness(τ2,i)=end(τ2,i)-p2×i
其中
如果j=0则q0=0;
当i=1时,
如果i>1时,如果lateness(x2,i-1)≥0,那么
如果第i个job之前的所有job都存在lateness(τ2,i-1)≥0那么
如果存在lateness(x2,i-1)<0,那么从第i个job之后,
证明:因为qj为第j个位置的空闲时间单元也是τ2可以执行的时间单元。τ2的j个job总共需要个e2×i个时间执行单元,这些时间单元都需要运行在τ1的非离散点的位置上,那么就存在如下公式:
e2×i=j×(p1-e1)+j
第1个job的最后结束时间为从发布时刻0开始起到第e2个空闲时间单元,则
如果lateness(τ2,i-1)≥0,说明第i个job的前一个任务的最后结束时间单元end(τ2,i-1)≥(i-1)×p2,则在第i个任务发布时间之前不可能存在空闲位,即
如果对于所有i-1个job的lateness(x2,i-1)<0,也就是对于所有的
如果存在lateness(x2,i-1)<0,则说明第i个job的前一个任务的最后结束时间单元end(τ2,i-1)<(i-1)×p2,则在[end(τ2,i-1),(i-1)×p2]时间段内,有可能存在第i个job发布时间(i-1)×p2+1之前的空闲时间单元,而该空闲时间单元是不可能被第i个job利用来执行的空闲时间单元,该时间单元必定也是
如果
lateness(τ2,i)=end(τ2,i)-p2×i
得证。
由定理2可以计算tardiness(τ2,i)=max{0,lateness(τ2,i)}.
第三部分:测试用例
测试用例1:假设暗含时限的两个实时周期任务τ1(1,2)和τ2(3,5)被分配到同一处理上后,τ1的优先级比τ2高,根据定理1计算τ2的延迟:
计算τ2(3,5)第一个job的延迟:
lateness(τ2,1)=end(τ2,1)-5×1=1
tardiness(τ2,1)=max{0,lateness(τ2,1)}=1
计算τ2(3,5)第二个job的延迟:
lateness(τ2,2)=end(τ2,2)-5×2=2
tardiness(τ2,2)=max{0,lateness(τ2,2)}=2
计算τ2(3,5)第三个job的延迟:
lateness(τ2,3)=end(τ2,3)-5×3=3
tardiness(τ2,3)=max{0,lateness(τ2,3)}=3
测试用例2:假设离散型周期任务
计算第一个job的延迟
lateness(τ2,1)=2-1×3=-1
tardiness(τ2,1)=max{0,lateness(τ2,1)}=0
计算第二个job的延迟因为lateness(τ2,1)<0因此,在(2,(1×3)]之间存在时间单元3不在
lateness(τ2,2)=5-2×3=-1
tardiness(τ2,2)=max{0,lateness(τ2,2)}=0
计算第三个job的延迟
因为lateness(τ2,2)<0,因此在(5,(2×3)]之间存在1个时间单元6在
lateness(τ2,3)=8-3×3=-1
tardiness(τ2,3)=max{0,lateness(τ2,3)}=0
计算第四个job的延迟:
因为lateness(τ2,3)<0,因此在(end(x2,3),(3×3)]之间存在1个时间单元9不在
lateness(τ2,4)=13-4×3=1
tardiness(τ2,4)=max{0,lateness(τ2,4)}=1
计算第五个job的延迟:
因为lateness(τ2,4)>0所以
lateness(τ2,5)=16-5×3=1
tardiness(τ2,5)=max{0,lateness(τ2,5)}=1
计算第六个job的延迟:
因为lateness(τ2,5)>0所以
tardiness(τ2,6)=18-6×3=0
tardiness(τ2,6)=max{0,lateness(τ2,6)}=0
计算第七个job的延迟:
因为lateness(τ2,6)≥0所以
lateness(τ2,7)=20-7×3=-1
tardiness(τ2,7)=max{0,lateness(τ2,7)}=0
计算第八个job的延迟:
因为lateness(τ2,7)<0因此在(end(τ2,7),(7×3)]之间存在1个时间单元21不在
lateness(τ2,8)=25-8×3=1
tardiness(τ2,8)=max{0,lateness(τ2,8)}=1
第五部分:edf-os算法中各任务延迟分析
edf-os算法jamesh.anderson提出的软实时任务的典型算法,其基本思路是:将任务分配分为两个阶段:第一阶段为离线分配阶段和第二阶段是在线执行阶段。在离线分配阶段,将所有任务按照利用率降序排列,然后按照处理器数量进行顺序分配。
首先,分配在处理器上的第一个任务必定是固定任务,其分配在该处理器上的份额一定是该任务的利用率因子。
其次,其他任务作为预迁移任务又按照顺序依次在每个处理器上进行分配。分配时先计算该处理器上的剩余份额,如果处理器剩余份额大于该预迁移任务的利用率因子则将该预迁移任务作为固定任务全部分配在该处理器上,否则将该处理器上剩余份额全部分配给该任务,然后对任务剩余的利用率因子部分进行下一个处理器上的分配,则该任务为迁移任务。重复执行剩余任务的分配直到所有任务都分配完毕。
按照表1示例,利用edf-os算法可以获得如图1所示的离线分配结果和图2所示的在线执行结果。表1中的si,j表示离线阶段第i个任务被分配到第j个处理器上分配的份额,fi,j=si,j/ui表示执行阶段第i个任务在第j个处理器上运行的job数量的占比。
根据本发明中的定理1和定理2可以计算出所有任务的完成时间和延迟时间统计如表2-5所示。
表1edf-os算法任务属性表示例
表2edf-os算法任务τ1(5,6)的job完成时间和延迟时间统计
表3edf-os算法任务τ2(4,6)的job完成时间和延迟时间统计
表4edf-os算法任务τ3(2,3)的job完成时间和延迟时间统计
表5edf-os算法任务τ4(2,3)的job完成时间和延迟时间统计
下面来分析edf-os算法中处理器上job的延迟时间计算方法:
p1处理器:由图1和图2可以看出,p1处理器上分配τ5(2,3)和τ1(5,6)两个任务,其中τ1为固定任务,优先级低于τ5,且p1上分配τ5的份额为
p2处理器:由图1和图2可以看出,p2处理器上分配τ5(2,3)和τ2(4,6)两个任务,其中τ2为固定任务,优先级低于τ5,且p1上分配τ5的份额为
p3处理器:由图1和图2可以看出,p3处理器上分配τ5(2,3)、τ6(1,2)和τ3(2,3三个任务,其中τ3为固定任务,优先级低于τ5和τ6,τ5优先级最高,且p3上分配τ5的份额为
p4处理器:由图1和图2可以看出,p4处理器上分配τ6(1,2)和τ4(2,3)两个任务,其中τ4为固定任务,优先级低于τ6,且p4上分配τ6的份额为
以上就是针对edf-os算法的job延迟计算思路,其他半划分算法也可以使用本方法进行计算。只要是按照比例固定分配到处理器上的暗含时限的软实时任务,都可以根据本发明中的定理1和定理2准确计算低优先级任务执行的完成时间和延迟时间的理论值。
以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。任何熟悉该技术的人在本发明所揭露的技术范围内的局部修改或替换,都应涵盖在本发明的包含范围之内。