Method and apparatus for improved queuing
First Claim
Patent Images
1. An apparatus comprising:
- a plurality of users;
resources that are partitioned according to a ranking of bandwidth associated with users, wherein the resources are partitioned according to a highest bandwidth supported by a node and an amount of bandwidth provided to each of the plurality of users is ranked from highest to lowest; and
a queue scheduler that a) schedules one or more packets within the node during scheduling cycles, wherein each scheduling cycle is partitioned into regions that are coextensive with the highest bandwidth supported by the node and each schedule cycle is coextensive with a highest counting modulo partitions, and b) services users associated with the highest bandwidth in at least one partition during each scheduling cycle and services consecutive bandwidth partitions of user associated with lower bandwidths across several cycles, wherein a number of scheduling cycles between servicing of consecutive bandwidth partitions increases as the bandwidth associated with the user decreases and the partition spacing for servicing a lower bandwidth user is determined by multiplying a number of lower bandwidth users that can be serviced by the next highest bandwidth by a partition modulo of the next highest bandwidth.
4 Assignments
0 Petitions
Accused Products
Abstract
A queue scheduler that distributes a partition worth of bandwidth to a plurality of queues according to a weight assigned to each of the queues. The plurality of queues are arranged from a highest priority to a lowest priority. The queues are serviced by the scheduler until each of the corresponding weights is consumed for each queue. The higher priority queues are serviced before the lower priority queues.
-
Citations
42 Claims
-
1. An apparatus comprising:
-
a plurality of users;
resources that are partitioned according to a ranking of bandwidth associated with users, wherein the resources are partitioned according to a highest bandwidth supported by a node and an amount of bandwidth provided to each of the plurality of users is ranked from highest to lowest; and
a queue scheduler that a) schedules one or more packets within the node during scheduling cycles, wherein each scheduling cycle is partitioned into regions that are coextensive with the highest bandwidth supported by the node and each schedule cycle is coextensive with a highest counting modulo partitions, and b) services users associated with the highest bandwidth in at least one partition during each scheduling cycle and services consecutive bandwidth partitions of user associated with lower bandwidths across several cycles, wherein a number of scheduling cycles between servicing of consecutive bandwidth partitions increases as the bandwidth associated with the user decreases and the partition spacing for servicing a lower bandwidth user is determined by multiplying a number of lower bandwidth users that can be serviced by the next highest bandwidth by a partition modulo of the next highest bandwidth. - View Dependent Claims (16, 17)
-
-
2. A method comprising:
-
a) dividing a total amount of data, based upon an individual weight assigned to each of a plurality of queues, into an amount of data that each of said queues may service;
b) scheduling packets in the plurality of queues during scheduling cycles, wherein each scheduling cycle is partitioned into regions that are coextensive with a highest bandwidth being managed by a node and each schedule cycle is coextensive with a highest counting modulo partitions;
c) servicing queues associated with the highest bandwidth in at least one partition during each scheduling cycle and servicing consecutive bandwidth partitions of queues associated with lower bandwidths across several cycles, wherein a number of scheduling cycles between servicing of consecutive bandwidth partitions increases as the bandwidth associated with the queue decreases and partition spacing for servicing a lower bandwidth queue is determined by multiplying a number of lower bandwidth users that can be serviced by the next highest bandwidth by a partition modulo of the next highest bandwidth;
d) servicing one or more populated queues, each of said servicing of a populated queue continuing until said populated queue is no longer populated or said amount of data determined for said populated queue has been released; and
e) servicing one or more of said queues that remain populated, if any, until said total amount of data has been released from all of said queues in combination including said servicing of said populated queues.
-
-
3. A method, comprising
a) distributing a partition worth of data across a plurality of queues according to a weight assigned to each of said queues so that each of said queues has its own sub-partition worth of data, each of said queues capable of holding one or more packet identifiers, each of said one or more packet identifiers pointing to its own packet, said plurality of queues ranging from a highest priority queue to a lowest priority queue; - and
b) scheduling packets in the plurality of queues during scheduling cycles, wherein each scheduling cycle is partitioned into regions that are coextensive with a highest bandwidth beina managed by a node and each schedule cycle is coextensive with a highest counting modulo partitions, and c) servicing queues associated with the highest bandwidth in at least one partition durin each scheduling cycle and servicing consecutive bandwidth partitions of queues associated with lower bandwidths across several cycles, wherein a number of scheduling cycles between servicing of consecutive bandwidth partitions increases as the bandwidth associated with the queue decreases and partition spacing for servicing a lower bandwidth queue is determined by multiplying a number of lower bandwidth users that can be serviced by the next highest bandwidth by a partition modulo of the next highest bandwidth; and
d) flowing a flow of one or more packet identifiers from an active populated queue, until;
1) its unpopulated if less than its sub-partition worth of data has flowed, or until 2) its sub-partition worth of data has flowed, or until 3) the combination of flows from those of said queues that have been active results in said partition worth of data having flowed from said those of said queues that have been active, as a whole. - View Dependent Claims (4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40)
- and
-
41. A method, comprising
a) distributing a partition worth of data across a plurality of queues according to a weight assigned to each of said queues so that each of said queues has its own sub-partition worth of data, each of said queues capable of holding one or more packet identifiers, each of said one or more packet identifiers pointing to its own packet, said plurality of queues ranging from a highest priority queue to a lowest priority queue; -
b) scheduling packets in the plurality of queues during scheduling cycles, wherein each scheduling cycle is partitioned into regions that are coextensive with a highest bandwidth being managed by a node and each schedule cycle is coextensive with a highest counting modulo partitions; and
c) servicing queues associated with the highest bandwidth in at least one partition during each scheduling cycle and servicing consecutive bandwidth partitions of queues associated with lower bandwidths across several cycles, wherein a number of scheduling cycles between servicing of consecutive bandwidth partitions increases as the bandwidth associated with the queue decreases and partition spacing for servicing a lower bandwidth queue is determined by multiplying a number of lower bandwidth users that can be serviced by the next highest bandwidth by a partition modulo of the next highest bandwidth;
d) flowing a flow of one or more packet identifiers from an active populated queue, until;
1) its unpopulated if less than its sub-partition worth of data has flowed, or until 2) its sub-partition worth of data has flowed, or until 3) the combination of flows from those of said queues that have been active results in said partifion worth of data having flowed from said those of said queues that have been active, as a whole, wherein a populated queue is deemed active if it is the highest priority populated queue out of those of said populated queues that have not yet been deemed active, such that populated queues are deemed active in succession until the lowest priority populated queue has been deemed active or until the combination of flows from those of said queues that have been active results in said partition worth of data having flowed from said those of said queues that have been active, as a whole.
-
-
42. An apparatus, comprising:
-
a scheduler that a) schedules packets in the plurality of queues during scheduling cycles, wherein each scheduling cycle is partitioned into regions that are coextensive with a highest bandwidth being managed by a node and each schedule cycle is coextensive with a highest counting modulo partitions, and b) services queues associated with the highest bandwidth in at least one partition during each scheduling cycle and servicing consecutive bandwidth partitions of queues associated with lower bandwidths across several cycles, wherein a number of scheduling cycles between servicing of consecutive bandwidth partitions increases as the bandwidth associated with the queue decreases and partition spacing for servicing a lower bandwidth queue is determined by multiplying a number of lower bandwidth users that can be serviced by the next highest bandwidth by a partition modulo of the next highest bandwidth; and
c) schedules controls a flow of one or more packet identifiers from an active populated queue, until;
1) its unpopulated if less than its sub-partition worth of data has flowed, or until 2) its sub-partition worth of data has flowed, or until 3) the combination of flows from those of said queues that have been active results in said partition worth of data having flowed from said those of said queues that have been active, as a whole, wherein a populated queue is deemed active if it is the highest priority populated queue out of those of said populated queues that have not yet been deemed active, such that populated queues are deemed active in succession until the lowest priority populated queue has been deemed active or until the combination of flows from those of said queues that have been active results in said partition worth of data having flowed from said those of said queues that have been active, as a whole.
-
Specification