CN1643874A - 使用定额和差额值进行调度 - Google Patents

使用定额和差额值进行调度 Download PDF

Info

Publication number
CN1643874A
CN1643874A CNA038066181A CN03806618A CN1643874A CN 1643874 A CN1643874 A CN 1643874A CN A038066181 A CNA038066181 A CN A038066181A CN 03806618 A CN03806618 A CN 03806618A CN 1643874 A CN1643874 A CN 1643874A
Authority
CN
China
Prior art keywords
project
difference
group
handle
processing
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
CNA038066181A
Other languages
English (en)
Other versions
CN100593312C (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.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
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 Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN1643874A publication Critical patent/CN1643874A/zh
Application granted granted Critical
Publication of CN100593312C publication Critical patent/CN100593312C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6225Fixed service order, e.g. Round Robin
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • H04L47/527Quantum based scheduling, e.g. credit or deficit based scheduling or token bank

Abstract

本发明公开了用于在系统中调度项目(例如分组、进程等)的方法和装置,所述系统例如是但不局限于计算机或通信系统。在一种实现方式中,维护了需要被处理的多个项目组。识别出所述多个项目组中的一个当前组。处理当前组中的每个项目。在一种实现方式中,此处理包括识别出当前组中的一个特定项目,将一个定额添加到该特定项目的差额上,处理对应于所述特定项目的实体,将所述特定项目的差额减少一个值,确定差额是否允许进一步处理所述特定项目,并且在所述确定差额是否允许进一步处理所述特定项目的步骤之后,将所述特定项目从当前组移动到所述多个项目组中的另一个组。

Description

使用定额和差额值进行调度
技术领域
本发明特别涉及对信息和/或过程的调度,例如用在通信和计算机系统中的所述调度;更具体而言,本发明涉及使用定额(quantum)和差额(deficit)值来调度实体和项目,这包括但不局限于对分组交换系统中分组的发送进行调度。
背景技术
通信工业正在迅速发生变化,以适应新兴的技术和不断增长的顾客需求。顾客对新的应用以及现有应用更高性能的这种需求正推动着通信网络和系统提供商们采用速度更快、容量更大(例如带宽更大)的网络和系统。在尝试达到这些目标时,许多通信提供商所共同采取的一种方法是使用分组交换技术。人们正越来越多地使用诸如互联网协议(IP)之类的各种分组技术,来构建和扩展公众通信网络和私有通信网络。
网络设备,例如交换机或路由器,一般对分组进行接收、处理,以及转发或丢弃。这样的设备中的入列(enqueue)组件接收到各种大小的分组所组成的流,这些分组被积存在输入缓冲区中。对每个分组进行分析,并分配适当的存储器空间量用于存储分组。分组被存储在存储器中,而某些属性(例如,一般从分组的头部或其他源中得到的目的地信息和其他信息)则被维护在不同的存储器中。一旦将整个分组写入存储器中,该分组就适合被处理,并且一般根据某种调度方法,将该分组的指示符放入适当的目的地队列中以用于接受服务。
当存在对资源的竞争时,根据某种公平性策略来分配或调度资源是很重要的,所述资源例如是分组交换系统的输出链路,或者接口,或者甚至是计算设备中的计算周期。而且,对分组或其他被调度的项目进行调度以及入列和出列所需的工作量也很重要,特别是当系统的操作速度提高时。
普通的轮转法(round-robin,RR)是一种经常用于在若干客户端之间共享公共资源的算法。以循环的顺序来服务于所有客户端。每一轮每个客户端如果适合的话都会被服务。服务时,允许每个客户发送一个分组。队列服务容易实现并且可以定时完成,但是由于分组的大小不同,因此该方法不能公平地分配带宽。
在某些情形下,高优先级(例如低延迟)、受保证的带宽、“尽力而为”(best effort)流量(例如备用带宽)和其他等级的流量竞争公共资源。设计了多种公知的调度算法,用于向竞争公共资源的流量提供隔离、优先级排序和公平的带宽分配。这些算法被称为公平排队算法。一些例子是加权公平排队(WFQ)、自时钟公平排队(SCFQ),以及差额轮转法/余额轮转法(称为DRR)。
WFQ和SCFQ取决于到达时间和先前的链路利用率,以计算下一个最佳发送分组。公认的“理想”行为是逐比特的轮转法,该方法规定,下一个要发送的分组应该是如果当前位于系统中的所有分组每次轮转都发送一个比特,则将会完成的那个分组(这在基于分组的系统中一般是不可行的)。为了计算理论上的理想出发时间,在调度算法中包括了到达时间,这一般需要向一个已排序的列表中进行插入,众所周知这在最坏情况下是O(log N)的问题,其中N是已经入列的分组数量。
DRR是一种用于在彼此之间具有不同比例的若干客户端(即,允许某些客户端比其他客户端使用更多的资源)之间共享公共资源的算法。客户间的比例一般由一个叫做定额的参数来定义。
DRR使用轮转法对队列进行服务,其中给每个队列指定了定额。和传统的轮转法不同,可以发送多至所指定的定额的多个分组,这导致每个队列至少发送相当于一个定额的多个字节。如果每个队列的定额相等,则每个队列将会发送等量的带宽。
这种方法按轮来工作,其中一轮是对有项目要发送的队列的一次轮转重复。典型情况是,当队列被调度时,就允许其进行发送直到其差额变为负数为止,然后对下一队列进行服务。在不同的流中进入的分组被存储在不同的队列中。每一轮,给每个分组分配相当于一个定额的多个比特,这些比特被添加到每个队列的差额上。在一个DRR轮次中,允许每个队列发出一个或多个分组,所受到的约束是其不能发送多于与该队列相对应的差额所指示的数量的比特。如果在对一个队列进行服务以后该队列中不再有分组,则将对应于该队列的差额设置为零。否则,保持余量(即余额减去所发送的比特数)用于下一轮。
DRR是一种不取决于实际到达时间的算法,其所具有的复杂度是O(1)——即所需的工作量是恒定的,与入列的分组数量无关。为了节省工作量,每次一个队列被调度时都应该发送分组。这样,DRR中所使用的定额应该至少是一个最大分组大小(MTU),以保证当将该定额添加到任何差额上时,所得到的值都至少为零。DDR提供了公平的带宽分配,并且容易实现。它节省了工作量,并且由于其O(1)特性,它对于更高的链路速度和更多的队列都能很好地扩展。然而,其调度行为与逐比特轮转法的“理想”情况相比相差很大。具体而言,具有N个队列的系统的延迟是Q*N,其中Q是平均定额,其一定至少是一个最大传输单位(MTU)。
在一种叫做修正的差额轮转法(MDRR)的实现方式中,除了映射到每个资源的非高优先级(NHP)客户端之外,还可选地存在另一个映射到该资源的高优先级(HP)客户端。在此实现方式中,存在两种可能的操作模式:低延迟模式和公平模式。在低延迟模式中,不断地服务于HP客户端,直到其不再适合(即,其具有的队列为空或者其已超过所分配的带宽)。只有当无法服务于HP客户端时,才服务于NHP客户端。低延迟模式减少了HP客户端的延迟(这有利于语音/视频应用),但会造成NHP客户端的饥饿。在公平模式中,只要HP客户端未到达其最大分配带宽,就按交替顺序,从HP客户端发送一个分组,从另一NHP客户端发送一个分组。公平模式是不让NHP客户端饥饿这一需求和HP客户端的低延迟这一需求二者之间的一个折衷点。
需要的是用于在分组交换系统中调度分组的方法和装置,特别是可以在保持O(1)工作特性的同时提供良好的延迟性能,和/或具有其他有利特征的方法和装置。
发明内容
本发明公开了用于在系统中调度多个项目的方法和装置,所述系统包括但不局限于计算机或通信系统。在一个实施例中,维护了需要被处理的多个项目组。识别出所述多个项目组中的一个当前组。处理当前组中的每个项目。在一个实施例中,此处理包括识别出当前组中的一个特定项目,将一个定额添加到该特定项目的差额上,处理对应于所述特定项目的实体,将所述特定项目的差额减少一个值,确定差额是否允许进一步处理所述特定项目,并且在所述确定差额是否允许进一步处理所述特定项目的步骤之后,将所述特定项目从当前组移动到所述多个项目组中的另一个组。
附图说明
所附的权利要求书具体阐述了本发明的特征。结合附图,从以下具体实施方式部分中可以最好地理解本发明及其优点,在附图中:
图1是使用定额和差额值来调度实体和项目的一个实施例的方框图;
图2是使用定额和差额值来调度实体和项目的一个实施例的方框图;
图3A-3D是在一个实施例中使用的数据结构的方框图;
图4是在一个实施例中用于确保调度器知道具有要被调度的实体的项目的入列过程的方框图;
图5是在一个实施例中用于调度对一个或多个项目组中的实体和项目的处理的过程的流程图;
图6是在一个实施例中用于调度对一个或多个项目组中的实体和项目的处理的过程的流程图;以及
图7是在一个实施例中用于调度对一个或多个项目组中的实体和项目的处理的过程的流程图。
具体实施方式
本发明公开了(特别是在通信和计算机系统中)使用定额和差额值来调度实体和项目的方法和装置。这里所描述的实施例包括多个元素和限制,其中没有一个元素或限制是决定性的元素或限制。每个权利要求都作为整体而单独叙述了本发明的一个方面。而且,所描述的某些实施例可能包括但不局限于系统、网络、集成电路芯片、嵌入式处理器、ASIC、方法和包含指令的计算机可读介质,等等。在下文中描述的实施例包含了处于本发明范围和精神之内的多个方面和多种配置,附图图示的是示例性而非限制性的配置。
这里所使用的术语“分组”指的是所有类型的分组或者其他任何信息或数据单位,其包括但不局限于固定长度信元(cell)和可变长度分组,其中每一个都可以或不可以被分成更小的分组或信元。这里所使用的术语“分组”还指分组本身或分组指示,所述分组指示例如是但不局限于是分组或分组头部的全部或部分、数据结构值、指针或索引,或者分组的其他任何部分或标识。而且,这些分组可以包含一种或多种的信息,所述信息包括但不局限于语音、数据、视频和音频信息。这里所使用的术语“项目”指的是分组或者其他任何信息或数据的单元或片段。
这里所使用的术语“系统”一般地用于描述任意数量的组件、元素、子系统、设备、分组交换元件、分组交换机、路由器、网络、计算机和/或通信设备或机构,或者其组件的组合。这里所使用的术语“计算机”一般地用于描述任意数量的计算机,其包括但不局限于个人计算机、嵌入式处理器和系统、控制逻辑、ASIC、芯片、工作站、大型机等等。这里所使用的术语“设备”一般地用于描述任意类型的机构,包括计算机或者其系统或组件。这里所使用的术语“任务”和“过程”一般地用于描述任意类型的运行程序,其包括但不局限于计算机进程、任务、线程、执行应用、操作系统、用户进程、设备驱动程序、本地代码、机器语言或其他语言等等,并且可以是交互式的和/或非交互式的,在本地和/或远程执行,在前台和/或后台执行,在用户和/或操作系统地址空间中执行,是库和/或独立应用的例程,并且不局限于任何特定的存储器分区技术。附图中图示的步骤、连接以及对信号和信息的处理包括但不局限于这些方框图和流程图,其在多个实施例中一般是以不同的串行或并行顺序来执行,和/或由不同的组件来执行,和/或通过不同的连接来执行,而仍保持在本发明的范围和精神之内。
而且,这里所使用的术语“网络”和“通信机构”一般地用于描述一个或多个网络、通信介质或通信系统,其包括但不局限于因特网,私有或公众电话,蜂窝网络、无线网络、卫星网络、有线网络、局域网、城域网和/或广域网,电缆,电连接,总线等等,以及内部通信机构,例如消息传递、进程间通信、共享存储器,等等。
术语“存储介质”包括任何类型的存储器、存储设备或用于保持任意格式的指令或数据的其他机构。“计算机可读介质”是一个可扩展的术语,其包括任何存储器、存储设备、存储机构以及其他存储和发信号的机构,其中包括诸如网络接口卡和缓冲区之类的接口和设备,以及任何通信设备和所接收和发送的信号,和计算机化系统可以解释、接收和/或发送的其他当前和将要发展出的技术。术语“存储器”包括任何随机访问存储器(RAM)、只读存储器(ROM)、闪存、集成电路和/或其他存储器组件或元件。术语“存储设备”包括任何固态存储介质、磁盘驱动器、软盘、联网服务、磁带驱动器和其他存储设备。存储器和存储设备可以存储用于由处理器和/或控制逻辑执行的计算机可执行指令,以及存储由处理器和/或控制逻辑操纵的数据。术语“数据结构”是一个可扩展的术语,其指的是任何数据元素、变量、数据结构、数据库,和/或一个或多个组织方案,其可应用于数据,以辅助解释数据或对数据执行操作,其包括但不局限于存储器位置或设备、集合、队列、树、堆、列表、链表、数组、表、指针等等。数据结构一般被维护在存储机构中。
这里所使用的术语“第一”、“第二”等等一般用于指示不同的单元(例如第一元素、第二元素)。这里使用这些术语不一定是意味着一种排序,例如一个单元或事件在另一个之前发生或到来,而是提供一种在多个具体单元之间进行区分的机制。而且,语句“基于x”用于指示一个最小项目组x,从该项目组中得到了某个事物,其中“x”是可扩展的,并且不一定描述了该操作所基于的完整项目列表。另外,语句“耦合到”用于指示两个元件或设备之间某种程度的直接或间接连接,其中耦合的一个或多个设备修改或不修改所耦合的信号或所传送的信息。术语“子集”用于指示一个集合中的元素中的全部或少于全部的元素构成的组,或不包含任何元素的组。而且,这里用术语“或”来表示对有关的项目中一个或多个(包括全部)的择一性选择。
本发明公开了用于在系统中调度多个项目(例如分组、进程等)的方法和装置,所述系统例如是但不局限于计算机或通信系统(例如路由器、交换机等)。在一种实现方式中,维护了需要被处理的多个项目组。识别出所述多个项目组中的一个当前组。处理当前组中的每个项目。在一种实现方式中,此处理包括识别出当前组中的一个特定项目,将一个定额添加到该特定项目的差额上,处理对应于所述特定项目的实体,将所述特定项目的差额减少一个值,确定差额是否允许进一步处理所述特定项目,并且在所述确定差额是否允许进一步处理所述特定项目的步骤之后,将所述特定项目从当前组移动到所述多个项目组中的另一个组。
在一个实施例中,维护了需要被处理的多个项目组,其中按照某种确定性的顺序来处理这些项目组。选择一个当前组并进行处理,直到该当前组为空。从当前组中选择一个项目,并将一个定额添加到该特定项目的差额上。在该项目的差额不为负(或非正)期间,处理来自项目的实体(例如执行某种相应的动作,从队列中发送分组,允许利用某个数量的CPU周期来处理进程,等等),并将该项目的差额减去某个相应的值。在该项目的差额变为负数之后,一般基于该项目的当前差额、定额、当前组和确定性的顺序,将该项目从当前列表移动到多个列表中的另一列表,使得当下次引用该项目时,其定额将会大到足以至少执行一个动作(例如发送一个分组)。在一个实施例中,定额的大小大约是最大分组大小除以项目组的数量。如果一个项目变空,则既不对其做进一步处理,也不将其放入另一活动组中,直到其具有需要处理的实体,这时再将其放入适当的组中。
在一个实施例中,维护了多个需要被处理的项目组,其中按照某种确定性的顺序来处理这些项目组。选择一个当前组并进行处理,直到该当前组为空。对当前组进行整体排序,并且在第一次进行这种整体排序期间,将定额添加到每个项目的差额上。在此排序期间,允许项目的一个实体被处理(例如执行某种相应的动作,从队列中发送分组,允许利用某个数量的CPU周期来处理进程,等等)。在一个实施例中,此处理对应于一个实体(例如分组、CPU周期数等等)。在一个实施例中,对项目执行相当于“微定额”(mini-quantum)的处理,这可以允许处理多个实体。将项目的差额减去某个相应的值,并处理下一项目。然而,如果项目变空,则从所述组中将其去除,或者如果项目的差额变负(或非正),则将该项目放入另一组中。在一个实施例中,使用了两个组:一个当前活动组和一个当前非活动组,从而所述项目将会被放入当前非活动组中。如果当前活动组变空,则它就变成了当前非活动组,而另一个组变成当前活动组,并且过程重复。在一个实施例中,使用了多于两个的组,在此情况下,一般基于项目的当前差额、定额、当前组和确定性的顺序,将该项目从当前列表移动到多个列表中的另一列表,使得当下次引用该项目时,其定额将会大到足以至少执行一个动作(例如发送一个分组)。在一个实施例中,允许每次对一个单元进行相当于微定额的处理,这可以增加分组的交织(interleaving),并可以减小抖动,特别是当各个实体所需的处理不同,例如分组长度差异很大的时候。
在一个实施例中,每个项目都具有一个差额值。在每次调度时从客户端发送一个分组,从差额中减去该分组的长度。每轮调度只允许客户端发送一个分组,并且如果该客户端的差额仍不为负,则允许其参与下一轮调度。一旦差额变负,该客户端就不被允许参与到调度轮次中。在一个实施例中,这是通过将客户端从活动列表(例如当前正被服务的列表)中取出并将其置于非活动列表(例如当前未被服务的列表,但该列表用于包含要被调度的客户端)中来完成的。一旦如由活动列表为空而识别出的那样,所有客户端需求都已经被服务,则下一列表变为活动列表,而前述的活动列表变为非活动列表。在一个实施例中,仅使用两个列表,而在一个实施例中,使用了多于两个的列表。在一个实施例中,所使用的定额至少是一个MTU,以确保每次处理一个客户端时发送一个分组。
在一个实施例中,一个源在轮到它并且其差额和微差额以及漏桶(leaky bucket)不为负的情况下被服务(例如发送分组)。每一轮(当轮到时),源都被给予一个新的微定额,并且源在被从活动列表传递到非活动列表时获得一个定额。活动列表是未完成其带宽份额(即其差额不为负)的源的列表。非活动列表是已完成其带宽份额(即其差额变负)的源的列表。随着从活动列表中的源发送分组,活动列表变得越来越短,直到其变空。当活动列表变空时,交换活动列表和非活动列表。
在一个实施例中,维护了两个链表:由具有正差额值的客户端(即,这些客户端适合在此DRR轮次中发送分组)组成的活动链表;和由具有非正差额值的客户端(即,这些客户端不适合在此DRR轮次中发送分组)组成的非活动链表。将每个客户的可编程微定额参数与微差额一起使用,以确定每个客户端每轮将会发送的字节数。在一个实施例中,仅使用一个微差额变量,而在一个实施例中,对每个项目使用一个微差额变量,这使得在一个实施例中,可以在轮次内和/或跨越多个轮次地对每个项目维护负的微差额量。
对活动链表进行扫描,并且允许每个客户端发送微定额(或者因为发送整个分组而比微定额稍多一点)的字节。当相应的微定额变为非正的(或者负的,取决于实施例)时,就服务于活动链表上的下一客户端。在从客户端发送每个分组之后,都从微差额中减去适当的字节数。通常,当微差额变为非正时,不会将客户端从活动链表中出列。只有当差额变为非正时,才将客户端从活动链表中出列,然后或者将该客户端入列到非活动客户端列表中,或者将该客户端入列回到自由链表中(当客户端由于最大带宽分配的原因而变得不适合发送分组,或客户端没有分组可发送的时候)。随着客户端完成对其定额的发送,活动链表变得越来越短。当客户端完成对其定额的发送时,假定它有分组要发送并且仍适合发送分组,它将会被从活动链表中出列,并入列到非活动列表中。在一个实施例中,将会设置一个状态比特,表明此客户端并未获得用于此轮的微定额。此状态比特可以是用于同一列表上所有客户端的全局比特,或者可以是专用于一个客户端的。当活动链表变空时,该链表就变为非活动的,而先前的非活动客户端链表变为活动的。在第一轮中,所有客户端都获得其微定额。在一个实施例中,使用了两个链表,因为要将完成其定额的客户端与未完成其定额但完成了其微定额的客户端区别开来。
图1示出了一个系统的一个实施例,所述系统例如是但不局限于是计算机或通信系统,其根据本发明来调度实体和/或项目。从一个或多个接口、进程、线程、信息流或其他源100接收到要调度的分组或其他实体或者其指示101-109。这些分组或其他实体101-109一般存储在由调度器120调度的项目/队列111-119中。在一个实施例,例如对分组或通信流进行处理的实施例中,调度器120处理一个或多个由分组或其他实体101-109构成的流,以产生一个或多个输出流121-129。例如,在一个实施例中,分组流101-109存储在队列111-119中。调度器120对来自队列111-119的分组进行调度,以产生一个或多个分组流121-129。
图2示出了系统200的一个实施例,系统200例如是但不局限于是计算机或通信系统,其根据本发明来调度实体和/或系统。在一个实施例中,系统200对内部生成的实体进行调度,所述实体例如是但不局限于是进程、线程、信息流、分组或其他实体。在一个实施例中,系统200接收外部生成的实体和/或内部生成的实体,并由系统200或由另一系统来调度对这些实体的处理和/或发送。例如,在一个实施例中,系统200调度内部进程、线程等等。在一个实施例中,系统200接收分组(或其他信息单元)流,调度属于这些流的分组,并生成所调度的分组的一个或多个外部流。
在一个实施例中,系统200包括处理器201、存储器202、存储设备203,还可选地包括一个或多个进入和/或外出实体接口204,它们一般经由一个或多个通信机构209(为图示目的而示为总线)耦合起来。系统200的多个实施例可以包括更多或更少的元件。一般来说,处理器201使用存储器202和存储设备203来执行一个或多个调度任务或进程,从而控制系统200的操作。存储器202是一种计算机可读介质,其一般包括随机访问存储器(RAM)、只读存储器(ROM)、闪存、集成电路和/或其他存储器组件。存储器202一般存储要由处理器201执行的计算机可执行指令,和/或由处理器201操纵的数据,以用于实现根据本发明的功能。存储设备203是另一种计算机可读介质,其一般包括固态存储介质、磁盘驱动器、软盘、联网服务、磁带驱动器和其他存储设备。存储设备203一般存储要由处理器201执行的计算机可执行指令,和/或由处理器201操纵的数据,以用于实现根据本发明的功能。
图3A-3D示出了在本发明的数量不限的实施例中的一个或多个实施例中使用的示例性数据结构。图3A示出了用于识别项目以及维护该项目的差额的数据结构。一个实施例使用数据结构300中的所有字段301-305。一个实施例使用数据结构300中少于所有字段301-305的字段。
如图所示,数据结构300包括用于指示特定项目(例如一个队列或其他项目组)的项目标识符字段301,用于维护项目的差额值的项目差额字段302,用于指示项目的定额的项目定额字段303,以及在例如图3B所示那样的项目链表中使用的项目指针字段304,在一个实施例中,因为项目之间的定额值可以不同,以便为各个项目提供不同量的带宽、处理时间等,所以使用项目定额字段303(如果这些量是相同的,则一般不使用或不包括项目定额字段303)。在一个实施例中,在数据结构300中包括了一个另外的字段,用于存储微定额值,这在各个项目使用不同的微定额值的情况下特别有用。
图3B示出了多个组360、370和380,其分别具有需要被处理的项目362-364、372-374和382-384。在一个实施例中,项目362-364、372-374和382-384对应于包含要被处理的分组或其他实体的队列。在一个实施例中,项目362-364、372-374和382-384对应于需要CPU时间的进程或线程。如图所示,360、370和380中的每个组的形式都是链表(在其他实施例中使用了多种其他数据结构)。链表对于维护项目的有序组(例如列表)来说是很方便的。在图示的实施例中,360、370和380中的每个列表或组都具有头指针361、371和381,以及尾指针365、375和385。在一个实施例中,使用特定项目指针350来指示项目362-364、372-374和382-384中当前正被处理的一个。
图3C还示出了微差额数据结构或计数机构310,其在一个实施例中用于维护正被处理的项目的微差额值,如在下文中进一步描述的图7的流程图中所描述的那样。
图3D示出了在一个实施例中使用的包括项目390的数据结构。如图所示,项目390包括多个实体391-399。在一个实施例中,项目390对应于一个队列,并且实体391-399对应于要被调度和发送的分组。在一个实施例中,实体对应于对项目执行的工作的单位。
图4示出了在一个实施例中用于确保调度需要处理的项目的过程。处理开始于过程框400,并进行到过程框402,在这里接收到需要处理的实体(或其指示),并在过程框404中将该实体放入适当的项目中。接着,在过程框406中进行确定,如果该项目已在调度系统中,则处理返回到过程框402。否则,在过程框408中,将该项目的差额设置为其定额值,并在过程框410中,将所述项目的指示提供给调度器,或者也可能将所述项目添加到调度数据结构中的多个调度组之一。在一个实施例中,定额对于所有项目都是相同的。在一个实施例中,定额并非对于所有项目都相同,这例如是因为可能给一个项目(例如队列)分配了比另一个项目更多的带宽用于发送分组。在一个实施例中,对项目差额的初始化是在另一过程(例如图4、5或6所示的过程)中执行的,但在过程框408中的初始化可以节省一次或多次存储器访问,这在某些实施例中可能是很重要的。然后,处理返回到过程框402。
图5示出了在一个实施例中使用的调度过程。处理开始于过程框500,并进行到过程框502,在这里选择第一个组。接着,在过程框504中进行确定,如果在所选择的组中没有项目,则在过程框506中,选择下一个组并且处理返回到过程框504。
否则,在过程框508中,从所述的组中选择一个项目,例如如果使用的是有序组则选择第一个项目,或者也可以选择另一个项目。在过程框510中,获取对应于该项目的信息。接着,在过程框512中,对实体(一般是第一个实体)进行处理。在一个实施例中,发送分组。接着,在过程框514中,将所述项目的差额减去某个常量或变量值,例如所发送的分组的大小或者与所执行的处理相应的其他值。注意,在一个实施例中,所使用的定额可能小于一个最大传输单位(MTU)。在一个实施例中,所使用的定额至少是(1MTU/(S-1)),其中S是组的数量并且S>1。
接着,在过程框516中进行确定,如果在所述项目中再没有实体,则在过程框518中,将该项目从所述组中去除(因为再没有要执行的处理了),并且处理返回到过程框504。否则,在过程框520中进行确定,如果差额不允许所述项目被进一步处理(例如差额小于例如零的预定常量值,或者经由另一比较来确定),则在过程框522中,一般基于该项目的差额的值、其定额和当前组,将所述项目放入另一项目组中,使得该项目不会被进一步操纵,直到其实际上扩展出足以处理其实体之一的定额为止。另外,将该项目的差额增加一个与该项目被服务或处理的下一次相对应的适当的额外定额。在一个实施例中,将项目的差额增加n个定额,其中n与(所述项目放在其中的)组在对各个组进行服务的相对顺序当中的位置相对应,其中n的值一般是大于或等于1的整数。例如,如果所述项目被放在下一个要被服务的组中,则其差额将会被增加1个定额,并且如果被放在下面第二个要被服务的组中,则其差额将会被增加2个定额,等等。然后,处理返回到过程框504。否则,处理返回到过程框512以处理另一实体。
图6示出了在一个实施例中使用的调度过程。处理开始于过程框600,并进行到过程框602,在这里选择第一个组。接着,在过程框604进行确定,如果在所选择的组中没有项目,则在过程框606中,选择下一个组并且处理返回到过程框604。在一个实施例中,使用了两个项目组。
否则,在过程框608中,从所述的组中选择一个项目,例如如果使用的是有序组则选择第一个项目,或者也可以选择另一个项目。在过程框610中,获取对应于该项目的信息。在过程框612中,对实体(一般是第一个实体)进行处理。在一个实施例中,发送分组。接着,在过程框614中,将所述项目的差额减去某个常量或变量值,例如所发送的分组的大小或者与所执行的处理相应的其他值。接着,在过程框616中进行确定,如果在所述项目中再没有实体,则在过程框618中,将该项目从所述组中去除(因为再没有要执行的处理了),并且处理返回到过程框604。否则,在过程框620中进行确定,如果差额不允许所述项目被进一步处理(例如差额小于例如零的预定常量值,或者经由另一比较来确定),则在过程框622中,一般基于该项目的差额的值、其定额和当前组,将所述项目从当前组中去除并放入另一项目组中,使得该项目不会被进一步操纵,直到其实际上扩展出足以处理其实体之一的定额为止。另外,将该项目的差额增加一个与该项目被服务或处理的下一次相对应的适当的额外定额。然后,处理返回到过程框604。否则,处理返回到过程框608以选择和处理所述组中的下一项目(或者如果该项目是所述组中唯一的项目,则选择和处理同一项目)。
图7示出了在一个实施例中使用的调度过程。处理开始于过程框700,并进行到过程框702,在这里选择第一个组。接着,在过程框704进行确定,如果在所选择的组中没有项目,则在过程框706中,选择下一个组并且处理返回到过程框704。
否则,在过程框708中,从所述的组中选择一个项目,例如如果使用的是有序组则选择第一个项目,或者也可以选择另一个项目。在过程框710中,获取对应于该项目的信息,并将微差额值初始化为微定额值。在一个实施例中,对所有项目使用同一微定额值,而在一个实施例中,并未对所有项目使用同一微定额值。注意,如果微定额值被设置为小于尺寸上最小的分组,则在一个实施例中,实现了图6所示的处理(带有某些附加的步骤)。
接着,在过程框712中,对实体(一般是第一个实体)进行处理。在一个实施例中,发送分组。接着,在过程框714中,将所述项目的差额和微差额都减去某个常量或变量值,例如所发送的分组的大小或者与所执行的处理相应的其他值。接着,在过程框720中进行确定,如果在所述项目中再没有实体,则在过程框722中,将该项目从所述组中去除(因为再没有要执行的处理了),并且处理返回到过程框704。
否则,在过程框724中进行确定,如果差额不允许所述项目被进一步处理(例如差额小于例如零的预定常量值,或者经由另一比较来确定),则在过程框728中,一般基于该项目的差额的值、其定额和当前组,将所述项目从当前组中去除并放入另一项目组中,使得该项目不会被进一步操纵,直到其实际上扩展出足以处理其实体之一的定额为止。另外,将该项目的差额增加一个与该项目被服务或处理的下一次相对应的适当的额外定额。然后,处理返回到过程框704。
否则,如果在过程框726中确定出微差额不允许所述项目被进一步处理(例如微差额小于例如零的预定常量值,或者经由另一比较来确定),则处理返回到过程框704。否则,处理返回到过程框712以处理另一实体,因为先前并未完全使用所分配的差额和微差额。
考虑到本发明的原理可能应用于许多可能的实施例,应该意识到,针对附图所描述的实施例及其各个方面仅仅是说明性的,而不应理解为对本发明范围的限制。例如,对本领域技术人员来说将会很清楚,许多过程框操作都可以被重新排序,或者在执行其它操作之前、之后或同时执行。而且,在多个实施例中可以使用多种不同形式的数据结构。这里所描述的本发明覆盖了所有落入所附权利要求及其等同物范围之内的所有这种实施例。

Claims (37)

1.一种方法,包括:
维护要被处理的多个项目组;
识别所述多个项目组中的当前组;以及
处理所述当前组中的项目,所述处理项目包括:
识别所述当前组中的一个特定项目;
将一个定额添加到所述特定项目的差额上;
处理对应于所述特定项目的实体;
将所述特定项目的差额减少一个值;
确定所述差额是否允许进一步处理所述特定项目;以及
在所述确定差额是否允许进一步处理所述特定项目的步骤之后,将所述特定项目从所述当前组移动到所述多个项目组中的另一个组。
2.如权利要求1所述的方法,其中所述多个项目组中的每个项目都代表队列。
3.如权利要求2所述的方法,其中所述实体代表分组。
4.如权利要求3所述的方法,其中所述的值对应于所述分组的大小。
5.如权利要求3所述的方法,其中所述的值对应于恒定值。
6.如权利要求1所述的方法,其中所述实体代表进程、线程或信息流。
7.如权利要求1所述的方法,其中所述的值对应于与所述对实体的处理有关的变量,或者对应于恒定值。
8.如权利要求1所述的方法,其中所述确定差额是否允许进一步处理所述特定项目的步骤包括将所述差额的值与恒定值或零相比较。
9.如权利要求1所述的方法,其中所述处理项目的步骤还包括基于所述特定项目的差额和定额,选择所述多个项目组中的所述另一个组。
10.如权利要求1所述的方法,其中所述处理项目的步骤还包括当所述特定项目不再具有任何剩余的相应实体时,将所述特定项目从所有所述多个组中去除。
11.如权利要求1所述的方法,其中所述处理项目的步骤还包括当所述确定步骤确定出所述差额允许进一步处理所述特定分组时,将所述特定分组留在所述当前组中。
12.如权利要求11所述的方法,其中仅当所述确定步骤确定出所述差额不允许进一步处理所述特定分组时,才执行将所述特定项目从所述当前组移动到所述多个项目组中的所述另一个组的步骤。
13.如权利要求11所述的方法,其中对所述特定项目重复地执行包括所述处理实体步骤、所述减少差额步骤和所述确定步骤在内的群组,直到所述确定步骤确定出所述差额不允许进一步处理所述特定分组。
14.如权利要求1所述的方法,其中所述处理项目的步骤还包括将所述特定项目设置为所述当前组中一个不同的项目。
15.如权利要求14所述的方法,其中重复地执行包括所述处理实体步骤、所述减少差额步骤、所述确定步骤和所述设置步骤在内的群组,直到所述当前组变空。
16.如权利要求1所述的方法,其中所述处理项目步骤还包括:
初始化与所述特定项目相关联的微差额;
将所述特定项目的微差额减去第二值;
确定所述微差额是否允许进一步处理所述特定项目;以及
在所述确定微差额是否允许进一步处理所述特定项目的步骤之后,将所述特定项目设置为所述当前组中一个不同的项目。
17.如权利要求16所述的方法,其中对所述特定项目重复地执行包括所述处理实体步骤、所述减少差额步骤、所述减少微差额步骤和所述确定微差额是否允许的步骤和所述确定差额是否允许的步骤在内的群组,直到所述确定差额是否允许的步骤确定出所述差额不允许进一步处理所述特定项目,或者直到所述确定微差额是否允许的步骤确定出所述微差额不允许进一步处理所述特定项目的步骤为止。
18.如权利要求16所述的方法,其中所述的值和所述第二值相等。
19.如权利要求1所述的方法,还包括从所述多个项目组中选择并处理下一个特定组。
20.如权利要求19所述的方法,其中响应于确定出所述当前组为空,执行所述选择并处理下一个特定组的步骤。
21.一种计算机可读介质,包含用于执行权利要求1的方法的计算机可执行指令。
22.一种装置,包括:
用于缓冲多个分组的多个队列;以及
用于对所述多个分组中的分组发送进行调度的调度器,该调度器包括:
控制逻辑;和
一个和多个存储器设备,其被配置用来维护需要被处理的所述多个队列的多个队列指示组;
其中所述调度包括:
识别所述多个指示组中的当前组;以及
处理与所述当前组中的一个或多个队列指示相对应的队列,所述处理包括:
识别所述当前组中的多个队列中的一个特定队列的特定指示;
将一个定额添加到所述特定指示的差额上;
从与所述特定指示相对应的特定队列中发送分组;
将所述差额减少一个值;
确定所述差额是否允许进一步处理所述特定队列;以及
在所述确定差额是否允许进一步处理所述特定队列的步骤之后,将所述特定指示从所述当前组移动到所述多个队列指示组中的另一个组。
23.如权利要求22所述的装置,其中所述的值对应于分组的大小。
24.如权利要求22所述的装置,其中所述处理队列还包括基于所述差额和所述定额,选择所述多个指示组中所述的另一个组。
25.如权利要求22所述的装置,其中所述处理队列的步骤还包括当所述确定步骤确定出所述差额允许进一步处理所述特定队列时,将所述特定指示留在所述当前组中。
26.如权利要求25所述的装置,其中基于所述特定指示,重复地执行包括所述发送分组步骤、所述减少差额步骤和所述确定步骤在内的群组,直到所述确定步骤确定出所述差额不允许进一步处理所述特定队列。
27.如权利要求22所述的装置,其中仅当所述确定步骤确定出所述差额不允许进一步处理所述特定队列时,才执行将所述特定指示从所述当前组移动到所述多个指示组中另一个组的步骤。
28.如权利要求22所述的装置,其中所述处理队列的步骤还包括将所述特定指示设置为所述多个指示的当前组中一个不同的特定指示。
29.如权利要求28所述的装置,其中重复地执行包括所述发送分组步骤、所述减少差额步骤、所述确定步骤和所述设置步骤在内的群组,直到所述当前组变空。
30.如权利要求22所述的装置,其中所述处理队列的步骤还包括:
初始化与所述特定指示相关联的微差额;
将所述微差额减去第二值;
确定所述微差额是否允许进一步处理所述特定队列;以及
在所述确定微差额是否允许进一步处理所述特定队列的步骤之后,将所述特定指示设置为所述当前组中一个不同的指示。
31.如权利要求30所述的装置,其中基于所述特定指示,重复地执行包括所述发送分组步骤、所述减少差额步骤、所述减少微差额步骤、所述确定微差额是否允许的步骤和所述确定差额是否允许的步骤在内的群组,直到所述确定差额是否允许的步骤确定出所述差额不允许进一步处理所述特定队列,或者直到所述确定微差额是否允许的步骤确定出所述微差额不允许进一步处理所述特定队列的步骤为止。
32.如权利要求22所述的装置,还包括从所述多个指示组中选择并处理下一个特定组。
33.如权利要求32所述的装置,其中响应于确定出所述当前组为空,执行所述选择并处理下一个特定组的步骤。
34.一种装置,包括:
用于维护需要被处理的多个项目组的装置;
用于识别所述多个项目组中的当前组的装置;以及
用于处理所述当前组中每个项目的装置,所述用于处理每个项目的装置包括:
用于识别所述当前组中一个特定项目的装置;
用于将一个定额添加到所述特定项目的差额上的装置;
用于处理对应于所述特定项目的实体的装置;
用于将所述特定项目的差额减少一个值的装置;
用于确定所述差额是否允许进一步处理所述特定项目的装置;以及
用于在确定所述差额是否允许进一步处理所述特定项目之后,将所述特定项目从所述当前组移动到所述多个项目组中的另一个组的装置。
35.如权利要求34所述的装置,其中所述处理项目还包括将所述特定项目设置为所述当前组中一个不同的项目。
36.如权利要求34所述的装置,还包括:
用于初始化与所述特定项目相关联的微差额的装置;
用于将所述特定项目的微差额减去第二值的装置;
用于确定所述微差额是否允许进一步处理所述特定项目的装置;以及
用于在确定所述微差额是否允许进一步处理所述特定项目之后,将所述特定项目设置为所述当前组中一个不同项目的装置。
37.如权利要求34所述的装置,还包括用于从所述多个项目组中选择下一个特定组的装置。
CN03806618A 2002-03-21 2003-03-14 使用定额和差额值进行调度 Expired - Fee Related CN100593312C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/104,759 2002-03-21
US10/104,759 US7065091B2 (en) 2002-03-21 2002-03-21 Method and apparatus for scheduling and interleaving items using quantum and deficit values including but not limited to systems using multiple active sets of items or mini-quantum values

Publications (2)

Publication Number Publication Date
CN1643874A true CN1643874A (zh) 2005-07-20
CN100593312C CN100593312C (zh) 2010-03-03

Family

ID=28452387

Family Applications (1)

Application Number Title Priority Date Filing Date
CN03806618A Expired - Fee Related CN100593312C (zh) 2002-03-21 2003-03-14 使用定额和差额值进行调度

Country Status (8)

Country Link
US (2) US7065091B2 (zh)
EP (2) EP1638273B1 (zh)
CN (1) CN100593312C (zh)
AT (2) ATE508563T1 (zh)
AU (1) AU2003221996B2 (zh)
CA (1) CA2484427C (zh)
DE (1) DE60303444T2 (zh)
WO (1) WO2003081874A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106254272A (zh) * 2016-09-05 2016-12-21 盛科网络(苏州)有限公司 基于硬件实现的弹性的加权公平调度方法及调度系统

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7523218B1 (en) * 2002-04-30 2009-04-21 University Of Florida Research Foundation, Inc. O(log n) dynamic router tables for prefixes and ranges
US7342936B2 (en) * 2002-06-17 2008-03-11 Integrated Device Technology, Inc. Method of performing deficit round-robin scheduling and structure for implementing same
US7350208B1 (en) 2002-12-31 2008-03-25 Cisco Technology, Inc. Method and apparatus for scheduling using a resource variable decreased by amounts corresponding to the efficiency of the resource
US7580355B2 (en) 2003-08-25 2009-08-25 Integrated Device Technology, Inc. Method of performing weighted round-robin queue scheduling using a dynamic link list and structure for implementing same
GB2411492B (en) * 2004-02-25 2006-06-07 Patsystems Electronic trading system
US7599381B2 (en) * 2004-12-23 2009-10-06 Cisco Technology, Inc. Scheduling eligible entries using an approximated finish delay identified for an entry based on an associated speed group
US7843940B2 (en) * 2005-06-01 2010-11-30 Cisco Technology, Inc. Filling token buckets of schedule entries
US7809009B2 (en) * 2006-02-21 2010-10-05 Cisco Technology, Inc. Pipelined packet switching and queuing architecture
US8339949B2 (en) * 2007-10-24 2012-12-25 Cortina Systems Inc. Priority-aware hierarchical communication traffic scheduling
CN101621478A (zh) * 2009-08-07 2010-01-06 中兴通讯股份有限公司 队列调度的方法及装置
US8335160B2 (en) * 2010-03-30 2012-12-18 Telefonaktiebolaget L M Ericsson (Publ) Flow sampling with top talkers
EP2672461A1 (de) 2012-06-05 2013-12-11 a.tron3d GmbH Verfahren zum Fortsetzen von Aufnahmen zum Erfassen von dreidimensionalen Geometrien von Objekten
CN105429897A (zh) * 2014-09-19 2016-03-23 深圳市中兴微电子技术有限公司 一种服务质量调度方法和装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6247061B1 (en) * 1998-06-09 2001-06-12 Microsoft Corporation Method and computer program product for scheduling network communication packets originating from different flows having unique service requirements
US6377579B1 (en) * 1998-06-11 2002-04-23 Synchrodyne Networks, Inc. Interconnecting a synchronous switching network that utilizes a common time reference with an asynchronous switching network
US6480511B1 (en) * 1998-09-15 2002-11-12 Avaya Technology Corp. Arrangement for synchronization of a stream of synchronous traffic delivered by an asynchronous medium
US6172579B1 (en) * 1999-02-02 2001-01-09 Cleveland Medical Devices Inc. Three point modulated phase locked loop frequency synthesis system and method
US7075934B2 (en) * 2001-01-10 2006-07-11 Lucent Technologies Inc. Method and apparatus for hierarchical bandwidth distribution in a packet network
KR100431191B1 (ko) * 2001-12-03 2004-05-12 주식회사 케이티 크레딧 기반 라운드 로빈을 이용한 패킷 스케쥴링장치 및방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106254272A (zh) * 2016-09-05 2016-12-21 盛科网络(苏州)有限公司 基于硬件实现的弹性的加权公平调度方法及调度系统

Also Published As

Publication number Publication date
EP1488600A1 (en) 2004-12-22
DE60303444T2 (de) 2006-09-21
CN100593312C (zh) 2010-03-03
US20060176883A1 (en) 2006-08-10
CA2484427A1 (en) 2003-10-02
EP1488600B1 (en) 2006-02-01
US7065091B2 (en) 2006-06-20
WO2003081874A1 (en) 2003-10-02
EP1638273B1 (en) 2011-05-04
CA2484427C (en) 2012-03-13
ATE317196T1 (de) 2006-02-15
US20030214964A1 (en) 2003-11-20
EP1638273A3 (en) 2009-04-01
AU2003221996A1 (en) 2003-10-08
US7212535B2 (en) 2007-05-01
EP1638273A2 (en) 2006-03-22
DE60303444D1 (de) 2006-04-13
ATE508563T1 (de) 2011-05-15
AU2003221996B2 (en) 2008-10-09

Similar Documents

Publication Publication Date Title
CN1981484B (zh) 具有多条调度巷道的流水线调度器及用在其中的调度方法
CN100593312C (zh) 使用定额和差额值进行调度
US7606250B2 (en) Assigning resources to items such as processing contexts for processing packets
CN106533982B (zh) 基于带宽借用的动态队列调度装置及方法
CN1593044A (zh) 在包交换装置中用于避免拥堵的方法和系统
JP2006500830A5 (zh)
CN1819523A (zh) 并行交换开关设计方法
US7843940B2 (en) Filling token buckets of schedule entries
CN109639596A (zh) 一种用于车载can-canfd混合网络的网关调度方法
CN1499742A (zh) 无线通信系统及使用这种系统的方法
CN1165184C (zh) 一种适合实现路由器服务质量的综合业务中的调度方法
US7565496B2 (en) Sharing memory among multiple information channels
CN1192563C (zh) 服务于多输出队列的调度方法、程序调度装置及数据交换节点
CN100477630C (zh) 一种数据网络中的队列调度方法及装置
CN101557346B (zh) 轮询式分组排队输出调度方法及分组交换节点
CN1518296A (zh) 一种支持多业务的综合队列调度的实现方法
CN1728698B (zh) 并行结构保序流量平衡系统及基于流分类的报文调度方法
US7350208B1 (en) Method and apparatus for scheduling using a resource variable decreased by amounts corresponding to the efficiency of the resource
US7460544B2 (en) Flexible mesh structure for hierarchical scheduling
US8467401B1 (en) Scheduling variable length packets
US7599381B2 (en) Scheduling eligible entries using an approximated finish delay identified for an entry based on an associated speed group
CN102594670A (zh) 多端口多流的调度方法、装置及设备
US7583678B1 (en) Methods and apparatus for scheduling entities using a primary scheduling mechanism such as calendar scheduling filled in with entities from a secondary scheduling mechanism
CN1914605B (zh) 在调度中特别有用的速率计算
CN1383654A (zh) 低时延低丢失的分组交换

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100303

Termination date: 20180314