Patent Document ID: 9424088
Application ID: 13662323
Patent Flag: 1

Claim One:
1. A method of scheduling that uses a multi-level scheduler comprising a plurality of sub schedulers arranged in a hierarchy, the method comprising: creating subgroups from a group of entities desiring access to a shared resource; assigning each subgroup of entities from the group of entities to a sub scheduler of the plurality of sub schedulers at a first level of the multi-level scheduler, wherein each first level sub scheduler from the plurality of sub schedulers determines a first level result entity from among its assigned subgroup to access the shared resource; and sending outputs of the first level sub schedulers as inputs to a second level sub scheduler, the second level sub scheduler selecting from among the inputs it receives from the first level sub schedulers to determine a second level result entity to access the shared resource, wherein selecting among the inputs includes: monitoring a volume of traffic associated with each of the entities from the group of entities assigned to the plurality of sub schedulers at the first level of the multi-level scheduler; calculating weights to assign to each input of the second level sub scheduler based at least in part on the monitored traffic load associated with each entity from the group of entities assigned to the plurality of sub schedulers at the first level of the multi-level scheduler; selecting the input to the second level scheduler to be provided access to the shared resource based on the weights assigned to each input of the second level sub scheduler; providing an indication to a First-In First-Out (FIFO) associated with one of the first level sub schedulers to provide a first packet to be provided to the second level sub scheduler; providing the first packet to the shared resource; providing an indication of a capacity of the FIFO to the first level sub scheduler associated with the FIFO following the providing of the first packet to the second level sub scheduler; and storing a second packet received from the first level sub scheduler associated with the FIFO in the FIFO based on the indication of the capacity of the FIFO.