-
摘要:
数据名查找是信息中心网络、内容分发网络、5G核心网中基础功能组件的关键操作,需要面向大规模规则表进行最长前缀匹配,在查找速度、更新开销和存储开销等方面面临严峻挑战. 首先设计了混合计数布隆过滤器(HyCBF),将数据名前缀和前缀标记维护在同一个计数布隆过滤器中同时保持二者的逻辑独立性.这样可在不增加额外存储开销和时间开销的情况下提供更丰富的指示信息. 基于此,提出HyCBF辅助的二分数据名查找(HyBS)方法以实现高效查找. 进一步,为缓解二分查找过程中因回溯导致的性能损失,为HyCBF中每个条目关联一个特征比特位图以降低其假阳性率. 实验表明,HyBS相比现有方法在查找性能和更新速度方面具有明显优势,存储效率也有一定提升. 此外,将HyBS集成到向量化数据包处理(VPP)框架中进行系统性能评估,结果表明HyBS可用于构建高通量可扩展的数据名查找引擎.
Abstract:Name lookup is a key operation in fundamental building blocks of information-centric networking, content delivery network, as well as the user plane function of 5G core network. It is required to deal with the longest prefix matching with a large-scale rule table, and thus confronts with serious challenges on lookup speed, update overhead and memory cost. In this paper, we design the hybrid counting Bloom filter (HyCBF) that maintains name prefixes and prefix markers within a single counting Bloom filter, while keeping them logically separated. This offers more guidance information without additional memory cost and time overhead. On this basis, we propose a HyCBF-assisted binary search (HyBS) scheme for efficient name lookup. Further, to mitigate the performance loss caused by backtracking operation during the binary search, we associate each unit of the HyCBF with a feature bitmap so as to reduce its false positive rate. Our extensive evaluations show that HyBS outperforms the state-of-the-art approaches in terms of lookup performance, update speed, as well as memory efficiency. In addition, we integrate HyBS into the vector packet processing (VPP) platform to evaluate its performance in terms of system implementation. The experimental results clearly demonstrate their potential to build a high throughput and scalable name lookup engine.
-
随着嵌入式技术的发展,云计算、边缘计算等复杂计算场景对芯片的性能要求越来越高. 为了满足该应用需求,异构多核在现代计算机系统得到迅速发展. 然而,向大规模异构平台迁移非常困难. 软件层面的原因主要是大规模的、必要的程序并行导致软件调度的复杂度,即使在同构平台下这依然是大量学者致力研究的一个热点问题.
本文首次针对有向无环图(directed acyclic graph, DAG)并行任务模型在异构平台上进行全局固定优先级限制性可抢占的可调度性分析,所提到的异构平台由多个不同类型的处理器组成(每个类别的处理器个数大于等于1). 由于异构融合的体系结构,多种不同类型的处理器集成在同一硬件,且并行软件中某些程序片段只能在特定的处理器执行. 因此,DAG任务的某些结点可以绑定到特定的一类处理器上执行. 而绑定处理器的操作,在一些主流的并行处理程序和操作系统都有对应的指令,例如:在OpenMP中可以通过proc_bind实现线程的绑定[1];在OpenCL中,通过clCreatCommand可以针对特定设备创建一组命令[2];在CUDA中,可以通过cudaSetDevise实现指令到目标设备的绑定[3]. 而对任务的如此处理可以避免任务在不同速率的处理器上迁移,减少实现难度和不必要的迁移开销. 下文中,我们称绑定处理器的DAG任务为分类DAG任务.
在经典的调度策略中,一般忽略了任务抢占和迁移的开销. 然而,可抢占调度中频繁发生的抢占所造成的开销往往比不可抢占调度高很多,需要高度重视. 尤其在异构多核体系结构中,GPU中执行的任务片段是不可抢占的,因此一些实时系统的任务存在不可抢占域(即任务执行的某个片段不允许被抢占). 因此,限制性可抢占的研究对于实时系统的任务执行是至关重要的.
关于分类DAG任务集的调度问题,难点主要存在2方面:1)DAG任务内部不同结点的互相影响;2)不同DAG任务结点间的互相影响. 尤其是限制性可抢占导致优先级翻转,即低优先级任务会对高优先级任务结点的执行造成阻塞. 因此,分类DAG的某个结点的执行会受到自身其他结点的干涉、高优先级任务的干涉以及低优先级任务的阻塞. 其中,自身结点的干涉已经在早期工作[4]中解决. 本文重点解决高优先级任务的干涉、低优先级任务的阻塞的分析问题以及分类DAG的最差响应时间(worst case response time,WCRT)分析,主要创新点包括3个层面:
1)由于分类导致DAG任务的关键路径(得到WCRT的路径)不确定[4],从而增加高优先级任务干涉分析的难度. 结合经典的同构DAG理论和分类DAG的特点,本文提出了分类DAG高优先级分析方法.
2)解决了分类DAG限制性可抢占导致的优先级翻转问题. 本文将同构DAG的低优先级任务分析方法和分类DAG相结合,提出了分类DAG的低优先级任务阻塞的分析方法.
3)采用文献[4]的路径抽象方法并结合高、低优先级任务的分析,提出了分类DAG任务集的WCRT分析方法. 由于高、低优先级任务干涉计算的引入,本文对文献[4]路径抽象规则进行了创新.
1. 相关工作
在嵌入式实时系统中,某些任务的执行只能在规定的地方被抢占. 考虑到完全可抢占和完全不可抢占的优缺点,限制性可抢占的研究非常重要. 近年来关于这方面的研究也较突出. 如:文献[5]的工作针对多核全局最早截止期优先限制性可抢占任务做出了分析;文献[6-7]对非并行任务在全局调度策略下进行了响应时间分析;文献[8]针对多核并行任务的限制性可抢占问题进行了分析,并根据抢占策略的不同提出了对应的分析方法并进行了比较;文献[9]针对DAG的限制性可抢占问题进行了研究,特别是针对低优先级任务的阻塞在效率和精确度的不同上提出了不同的分析策略. 然而,限制性可抢占的研究工作还未考虑到资源的限制性. 随着异构体系结构的发展,资源限制性是必须要考虑和解决的问题.
资源限制性问题的研究曾经非常热门,也取得了一些研究成果,基于当时的条件这些成果考虑的任务模型相对简单. 例如文献[10-13]考虑的问题是2种处理器集合分配给2个任务,并且一个处理器集合是另一个集合的子集等,相关研究总结在综述类文献[14-15]. 可以发现,现有研究的问题和本文提出的分类DAG任务的可调度性问题存在差异. 针对分类DAG任务的可调度性研究,可查阅的文献较少,Han等人在文献[4]中提出单个分类DAG的响应时间分析,该文分析了单DAG分类任务可调度性,并提出了基于路径抽象的方法进行可调度性分析. 基于此研究以及并行任务分析和响应时间分析的经典理论[16-18],Han等人提出了基于联合策略的可调度性分析[19]和全局固定优先级可调度性分析[20]. 文献[21]提出的工作和本文的任务模型接近,该工作是基于分解策略提出的点到点(即计算路径中每个点的WCRT)的调度分析方法,然而该方法并未考虑资源限制的问题. 就单个分类DAG任务而言,文献[4]进行了算法对比,对比实验结果显示文献[21]算法比文献[4]算法明显消极.
本文的主要工作是基于文献[4]的理论基础,提出基于全局固定优先级的限制性可抢占调度策略的分类DAG任务的可调度性分析方法. 分类导致DAG任务的关键路径不确定,从而增加高、低优先级任务的分析难度. 本文将DAG分析的理论(基于路径的分析)和分类DAG任务相结合,成功解决了该难题. 最后,基于文献[4]的路径抽象算法,更新路径抽象规则,进行任务集的可调度性判定.
2. 任务模型
2.1 任务集模型的建立
本文对由N个分类DAG任务组成的任务集
G={G1,G2,…,GN} 进行可调度性分析,该任务集执行的系统由不同种类的核组成.S 是核类别的集合,对于每种类型s∈S 具有Ms (Ms≥1 )个核用于调度. 分类DAG任务Gi=(Vi,Ei,C,γi,Ti,Di) ,该元组中各个符号的定义为:1)
Vi 表示Gi 所有结点的集合,结点vji∈Vi,1≤j≤ni ,ni 为Gi 的结点数;2)
Ei 表示Gi 所有边的集合,结点(u,v)∈Ei,v,u∈Vi ;3)C表示
Gi 每个结点最差执行时间 (worst case execution time, WCET)的函数,C(vji) 表示结点vji 的WCET;4)
γi 表示Gi 每个结点类型的集合,γji 表示结点vji 的类型;5)
Ti 表示Gi 相邻2个实例的最小释放时间间隔;6)
Di 表示Gi 的相对截止期,即Gi 在时间点ri 释放一个任务实例,必须在ri+Di 内完成该任务实例的执行.如果存在边
(u,v)∈Ei ,u 是v 的直接前继结点,而v 是u 的直接后继结点;如果存在从u 到v 的路径,u 是v 的祖先结点,而v 是u 的子孙结点. 本文用pre(vji),suc(vji),ans(vji) 和des(vji) 分别表示结点vji 的前继结点集合、后继结点集合、祖先结点集合以及子孙结点集合. 对于每个DAG任务,都假设其只有1个源结点和1个结束结点. 如果任务Gi 具有多个源结点和多个结束结点,可以通过给Gi 增加虚拟源结点(结点的WCET为0)和虚拟结点到Gi 的原源结点的有向边,使其变成单源结点. 用相同的方法使Gi 变成单结束结点的任务.πi={v1i,v2i,…,vki} 是Gi 的一条路径,如果路径πi 的v1i 是源结点且vki 是结束结点,则πi 是一条完整的路径. 由于任务是按照类别进行执行的,需要对每个任务的WCET之和进行标记,具体为:1)
vol(Gi)=∑1≤j≤niC(vji) ,表示任务Gi 所有结点的WCET之和;2)
vols(Gi)=∑1≤j≤ni∧γji=sC(vji) ,表示任务Gi 所有类别为s的结点的WCET之和;3)
len(πi)=∑vji∈πiC(vji) 表示路径πi 上的所有结点的WCET之和,即路径πi 的长度;4)
len(Gi)=maxπi∈Gilen(πi) 表示任务Gi 的最长路径.例1. 异构DAG并行任务模型如图1所示,任务执行在具有2种类别的处理器平台,白色圈表示类别1,灰色圈表示类别2,结点旁的数值表示任务的WCET.
2.2 任务调度策略
本文中任务采用全局固定优先级限制性可抢占策略进行调度. 任务按照优先级顺序排列,即如果
i<j ,则Gi 的优先级比Gj 高. 限制性可抢占是指任务的结点一旦开始执行,其执行不会被高优先级任务抢占.本文将提出一种过量估计方法分析每个任务的WCRT上界,从而保证任务执行的安全性. 其中,任务
Gi 的WCRT上界表示为Ri .3. 调度算法分析
本节将针对任务集
G={G1,G2,…,GN} 进行可调度性分析,并假设Gk 是被分析任务,k=1,2,…,N .3.1 整体分析
DAG任务WCRT上界分析方法多基于关键路径. 同构平台下,最长路径即为关键路径[18]. 然而,这一结论已经不适用于分类DAG[4],最长路径分析方法得到的WCRT上界并不安全,增大了分类DAG的分析难度. 分类DAG任务进行可调度性分析需要解决2个问题:1)如何确定关键路径;2)已知关键路径,如何进行响应时间分析. 为了确保分析方法的安全可靠,解决问题1)最简单的方法是枚举所有路径,后面会介绍如何解决枚举问题. 针对问题2),本文基于路径进行解决. 首先,假设
Gk 的关键路径是πk ,πk={v1k,v2k,…,vkk} .路径
πk 的执行受到3种不同类型的干扰:第1种,任务内干涉Intra(πk) ;第2种,其他高优先级任务的干涉;第3种,低优先级任务的阻塞.由文献[4]的结论可知,路径
πk 受到的任务内干涉定义为与πk 结点并行且实际干涉πk 上结点执行的同类结点工作量之和与对应的处理器个数的比值,即Intra(πk)=∑s∈γk∑vjk∈ivs(πk,s)C(vjk)Ms, (1) 其中
ivs(πk,s) 在文献[4]中定义为路径πk 实际受到的任务内干涉.根据文献[9]可知,路径
πk 受到的任务间干涉为路径上所有类别的高优先级任务的工作量加上低优先级任务的阻塞量之和与处理器个数总和的比值,即Inter(πk)=∑s∈γk⌊Ws(πk)+Bs(πk)Ms⌋, (2) 其中,
Ws(πk) 表示高优先级任务产生的工作量之和的上界,Bs(πk) 表示低优先级任务产生的工作量之和的上界. 根据式(1)(2),可以得到如下结论:引理1. 路径
πk={v1k,v2k,…,vkk} 是Gk 的一条完整路径,其WCRT上界R(πk)=len(πk)+Intra(πk)+Inter(πk). (3) 关键问题是如何计算
Inter(πk).Inter(πk) 包括2个部分,即高优先级任务的干涉和低优先级任务的阻塞,下面将对这2个部分产生的工作量上界进行分析.3.2 高优先级干涉量分析
对于高优先级任务的干涉量计算,首先要确定在某个时间窗口里高优先级任务能够产生的每个类别的工作量上界. 在时间长度为
x 的窗口内,高优先级任务Gi 产生的工作量上界表示为Wi(x) ,产生类别为s 的工作量上界表示为Wsi(x),Wsi(x) 计算过程详见引理2.引理2. 在长度为
x 的时间窗口内,高优先级任务Gi 能够产生的类别为s 的工作量上界为Wsi(x)=(⌊x−vols(Gi)/MsTi⌋+1)×vols(Gi)+α, (4) 其中
α=min(vols(Gi),max(0,Ms×((x−vols(Gi)Ms)modTi− (Ti−Ri)))) .证明. 引理2能够得到证明基于2个层面的假设:
1) 当carry-in实例(该实例在窗口之前释放,在窗口内完成)和carry-out实例(该实例在窗口内释放,截止期在窗口外)的
s 类别的工作量平均分布在所有s 类核上时(如图2所示),可以得到s 类别的工作量上界.2) 假设carry-out实例全部带入,可以得到高优先级任务的工作量上界,该假设基于假设1).
首先,证明假设1)的正确性. 该假设忽略任务的内部结构,单纯考虑长度为
x 的时间窗口内能够产生的工作量的最大情况. 采用反证法,如果vols(Gi) 的工作量分布在M′s 个核且M′s<Ms ,根据式(4),该设想显然不能增加窗口内的工作量,因此假设1)成立.假设2)的证明依然采用反证法,假设carry-out带入的减少即窗口向左滑动
ε=δ×vols(Gi)/Ms 的长度,0<δ<1 . 窗口向左滑动,会导致左边carry-in实例长度的增加,即carry-in实例在窗口内增加ε 的长度. 而carry-in和carry-out实例s类的工作量是均匀分布在所有核上,所以最终的工作量总和不会发生改变,即假设2)成立. 接下来证明式(4)计算的正确性.图2中,
x 的时间窗口的组成包括:长度为vols(Gi)/Ms 的carry-out实例、body实例(释放和截止期都在窗口内的实例)个数的周期长度以及carry-in实例长度. 而body实例数量的上界为⌊x−vols(Gi)/MsTi⌋. x窗口还有carry-in的组成部分. 而carry-in的长度可由
α 计算. 根据图2,carry-in长度不大于vols(Gi)/Ms .综上,引理2得证.证毕.
根据引理2,在长度为
x 的时间窗口内,所有高优先级任务Gi 产生的s 类别的工作量上界为Ws(x)=∑i<kWsi(x). (5) 3.3 低优先级阻塞分析
限制性可抢占导致优先级翻转的问题,即低优先级任务会阻塞高优先级任务的执行. 当路径
πk 上的某个结点vik 可以执行时,即所有前继结点完成执行,而处理器被低优先级任务占用,从而造成对该结点的阻塞. 被低优先级任务占用的处理器个数为1~Ms (少于Ms 个是因为处理器被高优先级任务或者前继结点占用),最坏情况要结合vik 的情况进行讨论.如果
i=1 即该结点是源结点,最多有Ms 个低优先级任务的结点阻塞其执行. 如果1<i≤ni ,分成2种情况进行讨论:1)
γi−1k=s ,则最多有Ms−1 个低先级任务的结点阻塞其执行. 因为只有Ms−1 个低优先级任务的结点和vi−1k 结点并行执行且未执行完造成对vik 的阻塞,如图3所示.2)
γi−1k≠s ,则最多有Ms 个低优先级任务的结点阻塞其执行. 因为前继结点的执行不占用s类别的核,因此vik 可以执行时最多有Ms 个低优先级任务的结点未完成执行,如图4所示.ΔMsk 和ΔMs−1k 分别表示最大的Ms 个和Ms−1 个不可抢占低优先级结点的工作量之和,即ΔMsk=∑MsmaxGi>k(Msmax1≤j≤njC(vji)), (6) ΔMs−1k=∑Ms−1maxGi>k(Ms−1max1≤j≤njC(vji)). (7) 其中:
Gi>k 表示所有的低优先级任务;MsmaxGi>k 和Ms−1maxGi>k 分别表示所有的低优先级任务中的Ms 个和Ms−1 个最大的不可抢占结点的工作量之和;而Msmax1≤j≤nj 和Ms−1max1≤j≤nj 分别表示Gi 的Ms 个和Ms−1 个最大的不可抢占结点的工作量之和. 式(6)(7)分别计算了所有低优先级任务中最大的Ms 个和Ms−1 个最大的不可抢占结点的工作量之和,如此定义是因为最大的结点来自于不同的任务.综上,被分析路径上的某个结点阻塞量的计算总结见引理3.
引理3. 结点
vik 是路径πk={v1k,v2k,…,vkk} 上的第i个结点,其类别为γik=s ,则它的阻塞量上界为Θs(πk,vik)={ΔMsk,i=1或i≠1∧γi−1k≠s.ΔMs−1k,i≠1∧γi−1k=s. (8) 证明. 根据式(6)(7),引理3得证.
证毕.
路径
πk={v1k,v2k,…,vkk} 的s类的阻塞量之和Bs(πk)=∑vik∈πk∧γik=sΘs(πk,vik). (9) 4. 分析过程
基于文献[4]提出的路径抽象算法,进行响应时间分析.
算法基本思路:对于结点
vik ,每条经过它的路径均可用一个元组表示⟨vik,Δ(πk,vik),R(πk,vik)⟩ ,其中Δ(πk,vik) 用来记录路径上计算过的并行结点(任务内干涉),R(πk,vik) 表示该路径上的结点vik 的响应时间. 经过vik 的每条路径都有一个元组与之对应,同样的元组可以被合并成为一个,不同的2个元组如果符合一定的条件可以被其中一个元组替换. 替换的基本原则是被替换掉的元组不会导致比替换它的元组更大的WCRT上界. 经过元组的合并和替换操作过滤掉不必要的元组,达到减少路径的目的. 对DAG任务中的每个结点进行相同操作,直至最终结点. 最终结点上所有元组中最大的R(πk,vik) 即为任务Gk 的WCRT上界.接下来,对
Δ(πk,vik) ,R(πk,vik) 和替换规则进行定义.定义1[4]. 对于
Gk 的一条路径πk={v1k,v2k,…,vkk} ,Δ(πk,vik) 定义为距离路径上结点vik 最近的所有类别结点的集合,即Δ(πk,vik)={δ(πk,vik,s)|s∈γk}, (10) 其中
δ(πk,vik,s)={c(vi),s=γik,⊥,s≠γik∧i=1,δ(πk,vik,s),s≠γik∧1<i≤k. 定义2. 路径
πk={v1k,v2k,…,vkk} 中从源结点开始到vik 的所有类型的集合,定义为γ(πk,vik)=∪1≤j≤iγjk. (11) 显然,
vik 为结束结点时γ(πk,vik) 表示整条路径的类型集合. 本文采用len(πk,vik) 表示从源结点到vik 的路径长度,即len(πk,vik)=∑1≤j≤iC(vjk). (12) 从源结点到
vik 的所有s类别阻塞量之和为Bs(πk,vik)=∑1≤j≤i∧γjk=sΘs(πk,vjk). (13) 定义3. 对于
Gk 的一条路径πk={v1k,v2k,…,vkk} ,R(πk,vik) 定义为R(πk,vik)=L(πk,vik)+∑s∈γ(πk,vik)⌊Ws(len(πk,vik))+Bs(πk,vik)Ms⌋, (14) 其中
L(πk,vik) 定义为L(πk,vik)={C(v1k),i=1,L(πk,vi−1k)+C(vik)+∑v∈ϕ(πk,vik)C(v)Ms,2≤i≤k. (15) ∑v∈ϕ(πk,vik)C(v)Ms 是文献[4]中关于任务内关涉的计算,与元组的抽象息息相关. 其中,重要计算参数定义为ϕ(πk,vik)=par(vik)∖par(δ(πk,vi−1k,γ(vik))), par(vik)={v|v∈Vk∧v∉ans(vik)∪v∉des(vik)}. 由于其他任务干涉的增加,导致文献[4]算法中元组替换的规则不再适用,需要增加新的替换规则满足增加的其他任务干涉的分析,具体见引理4.
引理4. 当任务
Gk 的2个路径π1k 和路径π2k 汇聚在vik 结点时,2条路径分别由元组⟨vik,Δ(π1k,vik),R(π1k,vik)⟩ 和⟨vik,Δ(π2k,vik),R(π2k,vik)⟩ 表示,前者为元组1,后者为元组2. 当元组1和元组2满足条件1)~3)时,元组2可以被元组1替换.1)
γ(π1k,vik)=γ(π2k,vik) ;2)
R(π1k,vik)≥R(π2k,vik) ;3) 对于任意类型s,条件①②必须成立:
①
δ(π1k,vik,s)=⊥ ;②
(δ(π1k,vik,s)≠⊥)∧(δ(π2k,vik,s)≠⊥)∧ (par(δ(π1k,vik,s)))∩(des(δ(π2k,vik,s)))=∅ ;证明. 替换规则2)和3)已经在文献[4]中证明. 本文只需证明规则1)的必要性. 采用反证法,如果规则1)不成立,则以下2种情况之一成立:
1)
γ(π1k,vik)⊂γ(π2k,vik) . 设路径1和路径2经过结点vik ,γ(π1k,vik)={s1,s2} ,γ(π2k,vik)={s1,s2,s3} . 在vik 到结束结点的搜索过程中,2条路径都不会再增加新的类别. 路径长度在增大,而高优先级任务干涉的计算是非递减的,从而造成s3 类别的高优先级任务造成的干涉逐渐增大. 因此路径2不能被替换.2)
γ(π1k,vik)⊃γ(π2k,vik) . 设路径1和路径2经过结点vik ,到达后继结点vi+1k.γi+1k=s 且s∈γ(π1k,vik)−γ(π2k,vik) ,即到达结点vi+1k 路径2会增加1个新的类别s ,从而导致在结点vi+1k 路径2增加的高优先级任务干涉比路径1增加得多,因此路径2不能被替换.证毕.
最终,本文提出的分析方法综合为算法1,来判定任务集的可调度性.
算法1. 任务集可调度性分析算法.
输入:任务集G,处理器池
M={Ms|s∈S} ;输出:是否可以被调度.
① LimitedPreScheduling(G,M);
② for each task
Gk in G③
TS={⟨v1k,{v1k},C(v1k)⟩} ;/* 从任务
Gk 的源结点开始更新元组集合*/④ while
(∃⟨v,Δ,R⟩∈TS;v≠vsnk) do/*针对元组中的每个元组进行下面的计算*/
⑤ for each
v′∈suc(v) do/* 从结点v搜索至结点
v′ */⑥ 基于
⟨v,Δ,R⟩ 和式(14)计算⟨v′,Δ′,R′⟩ ;⑦ if (
∄⟨v′,Δ′,R′⟩∈TS or⟨v∗,Δ∗,R∗⟩ 根据代替规则可代替
⟨v′,Δ′,R′⟩ )⑧
TS=TS∪{⟨v′,Δ′,R′⟩} ;⑨ end if
⑩ end for
⑪
TS=TS∖{⟨v,Δ,R⟩} ;⑫ end while
⑬ for each
⟨v,Δ,R⟩∈TS do/* 结束结点
vsnk 所有元组中具有最大R的即为任务
Gk 的WCRT上界*/⑭
Rtmp=∪{R∈⟨v,Δ,R⟩} ;⑮
Rk=max(Rtmp) ;⑯ end for
⑰ if
Rk>Dk ⑱ return不可调度的;
⑲ end if
⑳ end for
㉑ return可调度的.
算法1针对任务集中的每个任务进行路径抽象,计算其WCRT上界. 算法1的行③~⑫是针对每个任务
Gk ,从源结点开始搜索至结束结点,针对每个结点基于其前继结点的元组进行该结点的元组计算,计算出新的元组进行元组合并和替换操作,直至结束结点. 结束结点所有元组中最大的R 即为Gk 的WCRT上界(行⑬~⑯). 如果Rk>Dk 说明该任务不可调度,直接结束计算返回整个任务集不可被调度;否则,继续分析下一个任务. 如果最后1个任务被分析完,且满足截止期的要求则整个任务集可被调度(行⑰~㉑).基于文献[4],算法1对DAG任务每个结点的响应时间分析时增加了其他任务的干涉计算. 在算法1过程中增加了新的合并和替换规则以保证最终计算的安全性.
定理1. 任务集G是否可以被调度,可以由算法1来判定.
证明. 综合理论和算法1的伪代码分析,定理1得证.证毕.
5. 实 验
本文采用仿真实验,分别从算法的准确性和效率层面进行算法的验证. 对任务集的可调度性产生影响的参数包括:任务集利用率、处理器个数、任务集内任务个数、结点个数、类别数以及每个任务的并行度. 首先,对这些参数设置一组默认参数,然后基于该默认参数进行对应参数实验变化的验证实验. 异构平台相关的实验数据基于OpenAMP[22]项目支持的硬件平台作为基础数据,对类别数和每种类别核数量的范围进行适当地增大,观察这2组参数对算法性能的影响. 而任务集的默认参数则结合实际情况和其他DAG任务集的相关参数进行设置. 默认参数设置为:
1)异构平台上核类别的数量在[2,15]随机生成,每个类别核的数量
Ms 在[2,10]随机生成;每个类别s的利用率在[1,Ms/3] 的范围内随机生成;3)用UUnifast方法[23]为每个任务的s类别分配利用率;
4)对于每一个任务,周期在[100,1000]之内随机生成,默认每个任务的相对截止期等于周期;
5)每次随机选取1000个任务集分析平均性能.
对单个任务的参数进行设置,主要依据文献[4],具体参数设置为:
1)每个DAG任务的任务结构采用文献[24]提出的方法生成. 任务的结点数在[15,30]的范围内随机生成;任意2个结点之间是否生成边,需要随机选定;假设选定为增加该边,需进一步判定,即增加该边后并行度Pr的值满足要求,则增加边,否则不增加;Pr值在[0,1]之间随机选择,注意Pr值越大说明并行度越低,Pr值为1则所有结点为串行.
2)采用UUnifast方法将已分配的利用率分配给每个结点,注意利用率是按类别分配的,结点的WCET值等于分配的利用率与周期的乘积.
算法的正确性采用接受率进行验证,接受率定义为可以被调度的任务集占所有被测试的任务集的比率. 图5(a)~(f)展示的是各个参数下的接受率. 其中,图5(a) ~ (d)是整个任务集参数对接受率的影响,图5(e) ~ (f)是单个任务中重要参数对接受率的影响. 图5(a)中,因为利用率增大,而每个类别的处理器个数不变,使得接受率逐渐下降;图5(b)中,由于利用率固定,每个类别的处理器个数增加,从而导致接受率逐渐提升;图5(c)表明,其他参数不变的情况下,任务集中任务个数越多任务越难以调度;图5(d)表明,类别越多,相同利用率下分给每个类别的利用率就会减少,而类别的增加也会导致处理器个数增加,从而使得接受率提升;图5(e)表明,单个任务内部结点个数对接受率的影响不显著;图5(f)表明,单个任务内部并行度越高(Pr值越低)接受率越高,这是因为并行度大则并行执行的可能性增大,从而提高接受率. 综上分析,实验数据符合各参数的性质和对实际任务可调度性的影响.
图6(a) ~ (f)是对应接受率实验的各个参数下的效率实验. 其中,效率趋势中的每个点是所有1000个参加测试的任务集的平均分析时间. 注意,该时间随着分析设备硬件性能的不同会有所不同,其变化趋势可以表明与相关参数的关联性. 同样地,图6(a) ~ (d)为与任务集相关的参数,而图6(e)(f)是和单个任务相关的参数. 图6(a)(b)(d)中时间效率的变化趋势分别和图5(a)(b)(d)类似,这是因为接受率低,说明不可调度的任务集增多,在第1次出现不可调度任务时停止对任务集的分析从而出现平均分析时间下降的现象. 图6(c)的实验结果为时间效率先升高后降低. 图6(c)升高趋势的原因是当任务集接受率差不多时,任务集中任务个数增多,导致平均分析时间变长;图6(c)降低趋势的原因是由于接受率降低太多. 图6(e)中曲线变化表明,时间效率对任务内的结点个数是敏感的,当任务内的结点数增多时,时间效率呈增长趋势,且增长速度非常大. 图6(f)中时间效率变化趋势类似于图6(c),即先增后降,当任务集都可调度时任务分析时间随并行度下降而升高,当并行度降低到一定程度时接受率下降过多,导致任务集大量开始不可调度,从而导致平均分析时间下降.
实验结果表明,本文提出的算法具有很好的接受率且任务的平均分析时间在嵌入式实时系统离线分析时间的可接受范围内,各个参数实验数据均符合实验预期.
6. 结 论
本文针对异构平台上任务执行进行资源限制即规定任务只能执行在某一类处理器上这一特殊模型,进行了基于全局固定优先级限制性可抢占调度策略的可调度性分析. 首先,提出了整体的分析思路;然后,针对高优先级任务的干涉和低优先级任务的阻塞进行了分析;最后,结合最新的异构模型提出了一个整体的分析方法. 实验结果表明,本文提出的算法性能良好,能够在有效时间内完成任务的分析,且任务的可调度性和各个参数的关系符合实验预期.
作者贡献声明:韩美灵提出了算法思路并撰写论文;孙施宁负责实现算法并设计了相关实验方案;邓庆绪提出研究思路并指导修改论文.
-
表 1 不同规则集中的规则数量
Table 1 Number of Rules of Different Rule Sets
规则集编号 规则数量 0 50万 1 100万 2 150万 3 200万 4 250万 5 300万 表 2 服务器的配置
Table 2 Configuration of Servers
配置项 ServerIntel ServerAMD CPU型号 Xeon® Platinum 8160 EPYC 7F52 物理核数量 48核 32核 主频/MHz 2100 3500 缓存大小/KB 一级:64 一级:64 二级: 1024 二级:512 三级: 33792 三级: 16384 被隔离核心编号 24~47 16~31 内存大小/GB 128 256 -
[1] Yang Tong, Xie Gaogang, Li Yanbiao, et al. Guarantee IP lookup performance with FIB explosion[C]//Proc of the 38th ACM Conf on SIGCOMM. New York: ACM, 2014: 39−50
[2] Asai H, Ohara Y. Poptrie: A compressed trie with population count for fast and scalable software IP routing table lookup[J]. ACM SIGCOMM Computer Communication Review, 2015, 45(4): 57−70 doi: 10.1145/2829988.2787474
[3] Huang Jhihyu, Wang Pichung. TCAM-based IP address lookup using longest suffix split[J]. IEEE/ACM Transactions on Networking, 2018, 26(2): 976−989 doi: 10.1109/TNET.2018.2815999
[4] Zec M, Rizzo L, Mikuc M. DXR: Towards a billion routing lookups per second in software[J]. ACM SIGCOMM Computer Communication Review, 2012, 42(5): 29−36 doi: 10.1145/2378956.2378961
[5] Eatherton W, Varghese G, Dittia Z. Tree bitmap: Hardware/software IP lookups with incremental updates[J]. ACM SIGCOMM Computer Communication Review, 2004, 34(2): 97−122 doi: 10.1145/997150.997160
[6] Degermark M, Brodnik A, Carlsson S, et al. Small forwarding tables for fast routing lookups[J]. ACM SIGCOMM Computer Communication Review, 1997, 27(4): 3−14 doi: 10.1145/263109.263133
[7] Waldvogel M, Varghese G, Turner J, et al. Scalable high speed IP routing lookups[C]//Proc of the 21st ACM Conf on SIGCOMM. New York: ACM, 1997: 25−36
[8] Serhane O, Yahyaoui K, Nour B, et al. A survey of ICN content naming and in-network caching in 5G and beyond networks[J]. IEEE Internet of Things Journal, 2020, 8(6): 4081−4104
[9] Li Jiawei, Luo Hongbin, Jin Mingshuang, et al. Solving selfish routing in route-by-name information-centric network architectures[C]//Proc of the 19th IEEE Global Communications Conf. Piscataway, NJ: IEEE, 2018: 386−392
[10] Guan Yu, Huang Lemei, Zhang Xinggong, et al. Name-based routing with on-path name lookup in information-centric network[C]//Proc of the 24th IEEE Int Conf on Communications. Piscataway, NJ: IEEE, 2018: 1495−1500
[11] Dilley J, Maggs B, Parikh J, et al. Globally distributed content delivery[J]. IEEE Internet Computing, 2002, 6(5): 50−58 doi: 10.1109/MIC.2002.1036038
[12] Harahap E, Wijekoon J, Tennekoon R, et al. Router-based request redirection management for a next-generation content distribution network[C/OL]//Proc of the 3rd IEEE Globecom Workshops. Piscataway, NJ: IEEE, 2013[2021-11-10]. https://ieeexplore.ieee.org/abstract/document/6825123
[13] Dong Lijun, Zhang Dan, Zhang Yanyong, et al. Performance evaluation of content based routing with in-network caching[C]//Proc of the 20th Annual Wireless and Optical Communications Conf. Piscataway, NJ: IEEE, 2011: 43−48
[14] Abdallah H B H, Louati W. Ftree-CDN: Hybrid CDN and P2P architecture for efficient content distribution[C]//Proc of the 27th Euromicro Int Conf on Parallel, Distributed and Network-Based Processing. Piscataway, NJ: IEEE, 2019: 438−445
[15] Wang Yi, Zu Yuan, Zhang Ting, et al. Wire speed name lookup: A GPU-based approach[C]//Proc of the 10th USENIX Symp on Networked Systems Design and Implementation. Berkeley, CA: USENIX Association, 2013: 199−212
[16] Li Dagang, Li Junmao, Zheng Du. An improved trie-based name lookup scheme for named data networking[C]//Proc of the 21st IEEE Symp on Computers and Communication. Piscataway, NJ: IEEE, 2016: 1294−1296
[17] Wang Yi, Dai Huichen, Zhang Ting, et al. GPU-accelerated name lookup with component encoding[J]. Computer Networks, 2013, 57(16): 3165−3177 doi: 10.1016/j.comnet.2013.07.006
[18] Song Tian, Yuan Haowei, Crowley P, et al. Scalable name-based packet forwarding: From millions to billions[C]//Proc of the 2nd ACM Conf on Information-Centric Networking. New York: ACM, 2015: 19−28
[19] Ghasemi C, Yousefi H, Shin K G, et al. A fast and memory-efficient trie structure for name-based packet forwarding[C]//Proc of the 26th IEEE Int Conf on Network Protocols. Piscataway, NJ: IEEE, 2018: 302−312
[20] Ghasemi C, Yousefi H, Shin K G, et al. On the granularity of TRIE-based data structures for name lookups and updates[J]. IEEE/ACM Transactions on Networking, 2019, 27(2): 777−789 doi: 10.1109/TNET.2019.2901487
[21] Byun S H, Lee J, Sul D M, et al. Multi-worker NFD: An NFD-compatible high-speed NDN forwarder[C]//Proc of the 7th ACM Conf on Information-Centric Networking. New York: ACM, 2020: 166−168
[22] Yuan Haowei, Crowley P. Reliably scalable name prefix lookup [C]//Proc of the 11th ACM/IEEE Symp on Architectures for Networking and Communications Systems. Piscataway, NJ: IEEE, 2015: 111−121
[23] Wang Yi, Xu Boyang, Tai Dongzhe, et al. Fast name lookup for named data networking[C]//Proc of the 22nd IEEE Int Symp of Quality of Service. Piscataway, NJ: IEEE, 2014: 198−207
[24] Yuan Haowei, Crowley P. Scalable pending interest table design: From principles to practice[C]//Proc of the 33rd IEEE Conf on Computer Communications. Piscataway, NJ: IEEE, 2014: 2049−2057
[25] Dai Huichen, Lu Jianyuan, Wang Yi, et al. BFAST: High-speed and memory-efficient approach for NDN forwarding engine[J]. IEEE/ACM Transactions on Networking, 2016, 25(2): 1235−1248
[26] Perino D, Varvello M, Linguaglossa L, et al. Caesar: A content router for high-speed forwarding on content names[C]//Proc of the 10th ACM/IEEE Symp on Architectures for Networking and Communications Systems. New York: ACM, 2014: 137−148
[27] Wang Yi, Pan Tian, Mi Zhian, et al. Namefilter: Achieving fast name lookup with low memory cost via applying two-stage Bloom filters[C]//Proc of the 32nd IEEE Conf on Computer Communications. Piscataway, NJ: IEEE, 2013: 95−99
[28] Quan Wei, Xu Changqiao, Vasilakos A V, et al. TB2F: Tree-bitmap and Bloom-filter for a scalable and efficient name lookup in content-centric networking[C]//Proc of the 14th IFIP Networking Conf. Piscataway, NJ: IEEE, 2014: 395−403
[29] Huang Kun, Wang Zhaohua, Xie Gaogang. Scalable high-speed NDN name lookup[C]//Proc of the 14th Symp on Architectures for Networking and Communications Systems. New York: ACM, 2018: 55−65
[30] He Dacheng, Zhang Dafang, Xu Ke, et al. A fast and memory-efficient approach to NDN name lookup[J]. China Communications, 2017, 14(10): 61−69 doi: 10.1109/CC.2017.8107632
[31] Xu Ke, Zhang Dafang, Li Yanbiao. Longest name prefix match on multi-core processor[C]//Proc of the 21st IEEE Int Conf on High Performance Computing and Communications. Piscataway, NJ: IEEE, 2019: 1035−1042
[32] Kirsch A, Mitzenmacher M. Less hashing, same performance: Building a better Bloom filter[C]//Proc of the 14th European Symp on Algorithms. Berlin: Springer, 2006: 456−467
[33] Lu Jianyuan, Yang Tong, Wang Yi, et al. One-hashing Bloom filter[C]//Proc of the 23rd IEEE Int Symp on Quality of Service. Piscataway, NJ: IEEE, 2015: 289−298
[34] Lu Jianyuan, Wan Ying, Li Yang, et al. Ultra-fast Bloom filters using SIMD techniques[J]. IEEE Transactions on Parallel and Distributed Systems, 2018, 30(4): 953−964
[35] Bender M A, Farach-Colton M, Johnson R, et al. Don't thrash: How to cache your Hash on flash[J]. arXiv preprint, arXiv: 1208.0290, 2012
[36] Dai Haipeng, Zhong Yuankun, Alex L, et al. Noisy Bloom filters for multi-set membership testing[C]//Proc of the 39th ACM Int Conf on Measurement and Modeling of Computer Science. New York: ACM, 2016: 139−151
[37] Yang Tong, Alex L, Shahzad M, et al. A shifting framework for set queries[J]. IEEE/ACM Transactions on Networking, 2017, 25(5): 3116−3131 doi: 10.1109/TNET.2017.2730227
[38] Pfaff B, Pettit J, Koponen T, et al. The design and implementation of open vSwitch[C]//Proc of the 12th Symp on Networked Systems Design and Implementation. Berkeley, CA: USENIX Association, 2015: 117−130
[39] Barach D, Linguaglossa L, Marion D, et al. High-speed software data plane via vectorized packet processing[J]. IEEE Communications Magazine, 2018, 56(12): 97−103 doi: 10.1109/MCOM.2018.1800069
[40] 马潇潇,杨帆,王展,等. 智能网卡综述[J]. 计算机研究与发展,2022,59(1):1−21 doi: 10.7544/issn1000-1239.20200629 Ma Xiaoxiao, Yang Fan, Wang Zhan, et al. Survey on smart network interface card[J]. Journal of Computer Research and Development, 2022, 59(1): 1−21 (in Chinese) doi: 10.7544/issn1000-1239.20200629
[41] Zhu Wenjun, Li Peng, Luo Baozhou, et al. Research and implementation of high performance traffic processing based on Intel DPDK[C]//Proc of the 9th Int Symp on Parallel Architectures, Algorithms and Programming. Piscataway, NJ: IEEE, 2018: 62−68
[42] Reddit. Dataset of reddit posts and comments[EB/OL]. (2021-09-08)[2021-11-10]. https://www.reddit.com/r/datasets/comments/la0w4n/dataset_of_reddit_posts_and_comments/
[43] Appleby A. MurmurHash[CP/OL]. (2011-03-01)[2021-11-10]. https://sites.google.com/site/murmurhash/
[44] Lameter C. NUMA (non-uniform memory access) an overview: NUMA becomes more common because memory controllers get close to execution units on microprocessors[J]. Queue, 2013, 11(7): 40−51 doi: 10.1145/2508834.2513149