一种基于时延的CDN动态优先级调度算法的制作方法

文档序号:17429408发布日期:2019-04-17 03:17阅读:131来源:国知局
一种基于时延的CDN动态优先级调度算法的制作方法
本发明涉及互联网
技术领域
,具体涉及一种基于时延的cdn动态优先级调度算法。
背景技术
:在cdn业务平台中,当cdn节点在处理网络流量的时候,经常会遇到多个任务需要同时占用资源的情况,而总的网络资源是有限的。在这种情况下需要决定优先处理哪些任务,哪些任务可以延迟处理。在目前情况下,调度是解决多个业务竞争共享资源问题的有效手段。现有的调度算法根据调度规则可分为以下几类:基于区分业务优先级服务、基于动态双向优先级、比例区分算法和基于离散粒子群等。现今的队列调度算法都是调整队列中存放的分组,计算出触发次序,并以此为基准进行调度的控制。然而,现有的调度技术,能在一定程度上解决网络资源分配的问题,但是也存在一定的缺陷,这主要表现在如下方面,每项任务在队列中的触发次序计算以后,按照一定的顺序存放,而这些顺序一旦排列好以后将不在变化,而在实际业务中,有些任务的优先基本是动态变化的,有些任务在刚开始时任务处理的优先级别较高,排在靠前位置,而随着时间的变化,这些任务的优先级可能会降低,需要将其排在靠后的位置。而现有的技术缺乏自动调节能力,不能根据任务的优先级别的变化做出相应的调整,因而在技术上缺乏相应的灵活性及精准性。技术实现要素:针对现有技术的不足,本发明公开了一种基于时延的cdn动态优先级调度算法,每个队列中的分组都有服务时间的限制,当分组接近其限定时间时对其分配一个较高的优先级,即越接近限定时间优先级越高。本发明通过以下技术方案予以实现:一种基于时延的cdn动态优先级调度算法,每个队列中的分组都有服务时间的限制,当分组接近其限定时间时对其分配一个较高的优先级,即越接近限定时间优先级越高,同时,为避免系统的处理时限变大,使分组有断续现象发生,本算法将时间片与优先级相结合,采用轮转调度算法来确定时间片,具体为:将所有的就绪进程按fcfs即先来先服务的策略排成一个就绪队列。系统可设置每隔一定时间便产生一次中断,去激活进程调度程序进行调度,把资源分配给队首进程,并令其执行一个时间片;当它运行完毕后,又把处理机分配给就绪队列中新的队首进程,也让其执行一个时间片,以此保证就绪队列中的所有进程在确定的时间段内,都能获得一个时间片的处理机时间。在上述技术方案中,应在何时进行进程的切换,分成两种:1、若一个时间片尚未用完,正在运行的进程便已经完成,就立即激活调度程序,将它从就绪队列中删除,在调度就绪队列中队首的进程运行,并启动一个新的时间片;2、当一个时间片用完时,计时器中断处理程序被激活。如果进程尚未运行完毕,调度程序将把它送往就绪队列的末尾。在上述技术方案中,一个较为可取的时间片大小是略大于一次典型的交互所需要的时间,使大多数交互式进程能在一个时间片内完成,从而可以获得很小的响应时间。在上述技术方案中,优先级的制定具体为:在ip数据报头中,将一个缓冲区等分为若干队列。因为缓冲区中的子队列来自优先级不同的数据包,所以在分组进入队列时记录相应的优先级状态,原本优先级低的子队列随着时间的推移提高本身得到服务的优先级,即队列的优先级不是始终不变而是随着时延动态变化的;为了实现动态优先级算法,分别设置计数器用以记录进入缓冲区的队列,以其所属数据包的优先级作为计数器的初始值;每经过一个时间片,计数器值增加1;选取计数器最高的子队列队头分组进行转发。在上述技术方案中,为解决当新的分组到来时,在对新分组进行读写时如何避免与已有分组冲突的问题,优选的,本算法使用双端口存储器,包含两组并行独立操作的相互独立的读写控制线路,当新分组到来时只存储入空白区,与已有分组在缓冲区中的地址不相同,所以在这两个端口上进行读写操作,一定不会发生冲突。一个时间片内,新分组的到来与已有分组的转发可以并行处理。在上述技术方案中,为了解决计数器值对时间片过于敏感的问题,本发明采用设置阈值进行区分的方法,各子队列中存在的分组个数,也即子队列长度,子队列队头分组的阈值大小根据子队列分组的优先级高低以及各优先级分组的实际流量进行设置,在一个时间片后只有超过阈值的队列计数器才增加1。本发明的有益效果为:本发明涉及到的一种基于时延的cdn动态优先级调度算法,每个队列中的分组都有服务时间的限制,当分组接近其限定时间时对其分配一个较高的优先级,即越接近限定时间优先级越高,同时,为了避免系统的处理时限变大,使分组有断续现象发生,将时间片与优先级相结合,随着时间片的增加,低优先级的不停提高也可能抢占高优先级分组的服务时间,本发明通过对进程切换时机与时间片大小的确定进行把控,使大多数交互式进程能在一个时间片内完成,从而可以获得很小的响应时间;同时本发明还解决了当新的分组到来时,在对新分组进行读写时如何避免与已有分组冲突的问题。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例的一种基于时延的cdn动态优先级调度算法的流程步骤示意图;图2是本发明实施例的一种基于时延的cdn动态优先级调度算法的采用设置阈值进行区分法的缓冲区内各子队列计数器变化情况示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。如图1-2所示,为提高cdn网络服务质量,本发明提出了一种基于时延的cdn动态优先级调度算法。该算法中每个队列中的分组都有服务时间的限制,当分组接近其限定时间时对其分配一个较高的优先级,即越接近限定时间优先级越高。但该算法容易导致系统的处理时限变大,使分组有断续现象发生。本发明在基于时延的调度算法的基础上将时间片与优先级相结合,提出了一种新的基于时延的动态优先级调度算法。首先是时间片的确定,本发明专利采用了轮转调度算法来确定时间片。在轮转调度算法中,系统将所有的就绪进程按fcfs(先来先服务)的策略排成一个就绪队列。系统可设置每隔一定时间(如30ms)便产生一次中断,去激活进程调度程序进行调度,把资源分配给队首进程,并令其执行一个时间片。当它运行完毕后,又把处理机分配给就绪队列中新的队首进程,也让其执行一个时间片。这样,就可以保证就绪队列中的所有进程在确定的时间段内,都能获得一个时间片的处理机时间。在轮转调度算法中,有两个关键因素:进程切换时机与时间片大小的确定。轮转调度算法进程切换时机:在轮转调度算法中,应在何时进行进程的切换,可分成两种情况:1、若一个时间片尚未用完,正在运行的进程便已经完成,就立即激活调度程序,将它从就绪队列中删除,在调度就绪队列中队首的进程运行,并启动一个新的时间片。2、在一个时间片用完时,计时器中断处理程序被激活。如果进程尚未运行完毕,调度程序将把它送往就绪队列的末尾。轮转调度算法时间片大小的确定:在轮转调度算法中,时间片的大小对系统性能有着很大的影响。若选择很小的时间内片,将有利于短作业,因为它能在该时间片内完成。但时间片小,意味着会频繁地执行进程调度和进程上下文的切换,这无疑会增加系统的开销。反之,若事件片选择的太长,且为使每个进程都能在一个时间片内完成,无法满足短作业和交互式用户的需求。一个较为可取的时间片大小是略大于一次典型的交互所需要的时间,使大多数交互式进程能在一个时间片内完成,从而可以获得很小的响应时间本发明接下来讨论优先级的制定。在ip数据报头中,通常用tos(服务类型)作为服务优先级的标记,tos为3个bit,范围0-7,表示8种优先级别触发类型,设定最低的触发次序为0,依次增加,7为最高的触发次序,并设定计数器最大增大到8时表示子队列为空。因此将一个缓冲区等分为8个队列。因为缓冲区中的子队列来自优先级不同的数据包,所以在分组进入队列时记录相应的优先级状态。原本优先级低的子队列随着时间的推移提高本身得到服务的优先级,即队列的优先级不是始终不变而是随着时延动态变化的。为了实现动态优先级算法,分别设置计数器用以记录进入缓冲区的队列,以其所属数据包的优先级作为计数器的初始值;每经过一个时间片,计数器值增加1(若计数器值大于7,说明队列为空,不增加);选取计数器最高的子队列队头分组进行转发。假定优先级位ⅰ(ⅰ=0,1,…7)中。例如一个缓冲区中有5个队列等待服务,各队列的计数器值依次为6,4,3,2,0,经过一个时间片,转发计数器值为6的分组,而剩余队列的计数器值增加为5,4,3,1.若此时队列5中有新的分组到达,即队列5与队列4的优先级相同时,如何转发,这是就引入了堆的实现问题。本发明接下来讨论优先级与堆的关系。由于本发明使用的调度算法总是从cdn缓存区中选出并清除优先级最大值的队列,即将分组转发。本发明选用“堆”作为优先级队列存储和实现的数据结构。插入节点和删除堆顶元素的平均时间代价和最差时间代价都为0。首先,堆中的各个节点保存动态调整的优先级值,即各队列的计数器值。另外,由于在选出优先级最大的节点后,需要从其所在的缓冲区将此优先级对应的队列转发,所以每个堆节点还需要保存优先级分组所进入的子队列号。在这里我们为每个堆加入一个标记位,成为带标记的堆。为编程方便,将标志位放在后面。在堆中每个节点由两部分组成:前部分内容为优先级的值;后部分为标记位,记录该优先级所对应的子队列号。本发明还要处理一个技术问题,即当新的分组到来时,在对新分组进行读写时如何避免与已有分组冲突的问题。本发明提供的缓冲区使用双端口存储器,可以有效地避免这个问题。双端口存储器的方法是同一个存储器里包含两组并行独立操作的相互独立的读写控制线路,当新分组到来时只存储入空白区,与已有分组在缓冲区中的地址不相同,所以在这两个端口上进行读写操作,一定不会发生冲突。一个时间片内,新分组的到来与已有分组的转发可以并行处理,基于时延的动态优先级调度算法的流程如图1所示。本发明还对基于时延的动态优先级调度算法进行了优化。在基于优先级的调度算法中,大量高优先级队列先后到来可能会造成其他低优先级队列长时间等待而得不到正常服务;而在基于时延的动态优先级算法中,随着时间片的增加,低优先级的不停提高也可能抢占高优先级分组的服务时间。为保障不同优先级分组都能得到正常服务,提高算法公平性,本发明对基于时延的动态优先级算法进行了优化,方法如下:为了解决计数器值对时间片过于敏感的问题,本发明采用设置阈值进行区分的方法。子队列队头分组的阈值大小根据子队列分组的优先级高低以及各优先级分组的实际流量(各子队列中存在的分组个数,也即子队列长度)进行设置。通过这种方法,结合了缓冲区中队列的实际使用情况,在一个时间片后只有超过阈值的队列计数器才增加1。设定优先级0、1、2为低优先级,阈值设为30;优先级3、4、5,为中优先级,阈值为20;优先级6、7为高优先级,阈值为10。阈值、子队列优先级以及对应的分组数如下表的阈值与各自队列中分组数所示:子队列优先级阈值子队列中分组数00303211302822302933202144201955201766101177109分组根据优先级进入对应的子队列ⅰ(ⅰ=0,1,….7)中,其中分组数超过预设阈值的子队列只有1、3、6,则经过一个时间片,子队列7中的队列头分组由于计数器值最大而被转发,子队列1、子队列3、子队列6的队头分组技术器值增加1,其余子队列中存在的分组个数没有超过阈值,因而其队头分组的计数器值保持不变。此过程缓冲区内各子队列计数器变化情况如图2所示,当各子队列队头分组的优先级经过一段时间的变化都改变为最高优先级(计数器值为7)时,从高序号队列,即高优先级分组,开始调度,以保障高优先级分组的服务质量。以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1