Method to optimize the load balancing of parallel coprocessors
First Claim
1. A method for selecting a coprocessor from a plurality of coprocessors to process a packet, the method comprising steps of:
- determining a size of the packet;
determining a cost associated with the packet in response to the size of the packet, the cost representing a load associated with processing the packet;
determining, by a processor, an anticipated load for each coprocessor in the plurality of coprocessors using the cost; and
selecting, by the processor, the coprocessor from the plurality of coprocessors based on the anticipated load.
1 Assignment
0 Petitions
Accused Products
Abstract
A technique for optimally balancing the load between a series of coprocessors that takes into consideration the load associated with each coprocessor. A cost associated with a packet is determined. This cost along with the coprocessor'"'"'s current load is used to determine an anticipated load. The anticipated load is used to select a coprocessor that is to process the packet. In one embodiment, the coprocessor with the minimal anticipated load is selected. In another embodiment, an output port associated with the packet is checked to determine if it is congested. If so, a coprocessor other than the coprocessor with the minimum load is selected.
-
Citations
35 Claims
-
1. A method for selecting a coprocessor from a plurality of coprocessors to process a packet, the method comprising steps of:
-
determining a size of the packet; determining a cost associated with the packet in response to the size of the packet, the cost representing a load associated with processing the packet; determining, by a processor, an anticipated load for each coprocessor in the plurality of coprocessors using the cost; and selecting, by the processor, the coprocessor from the plurality of coprocessors based on the anticipated load. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. An apparatus for selecting a coprocessor from a plurality of coprocessors to process a packet, the apparatus comprising:
-
a memory containing one or more software routines, including a software routine configured to determine a size of the packet, and to determine a cost associated with the packet in response to the size of the packet, the cost representing a load associated with processing the packet; and a processor configured to execute the software routines to determine an anticipated load for each coprocessor in the plurality of coprocessors using the cost and to select the coprocessor from the plurality of coprocessors based on the anticipated load. - View Dependent Claims (18, 19, 20)
-
-
21. An intermediate device configured to select a coprocessor from a plurality of coprocessors to process a packet, the intermediate device comprising:
-
means for determining a size of the packet, and for determining a cost associated with the packet in response to the size of the packet, the cost representing a load associated with processing the packet; means for determining an anticipated load for each coprocessor in the plurality of coprocessors using the cost; and means for selecting the coprocessor based on the anticipated load.
-
-
22. A non-transitory computer readable media comprising computer executable instructions for execution in a processor for selecting a coprocessor from a plurality of coprocessors to process a packet, the instructions for:
-
determining a size of the packet, and determining a cost associated with the packet in response to the size of the packet, the cost representing a load associated with processing the packet; determining an anticipated load for each coprocessor in the plurality of coprocessors using the cost; and selecting the coprocessor from the plurality of coprocessors based on the anticipated load.
-
-
23. A method for selecting a processor for processing a packet, the method comprising steps of:
-
determining a size of the packet; determining a cost associated with the packet of that size, the cost representing a load associated with processing the packet; determining, by a module of an intermediate node, an anticipated load for the processor using the cost of the packet if processed by the processor; and selecting, by the module of the intermediate node, the processor based on the anticipated load. - View Dependent Claims (24, 25)
-
-
26. A method for selecting a coprocessor from a plurality of coprocessors to perform a processing operation on a received packet, the method comprising steps of:
-
determining a cumulative load for each coprocessor, the cumulative load representing load due to packets currently awaiting processing at that coprocessor; determining a size of the received packet; determining a cost for processing the received packet at each coprocessor, the cost determined, at least in part, in response to the size of the received packet and a processing rate of that coprocessor; combining the cumulative load and the cost at each coprocessor, to create an anticipated load for each coprocessor; comparing, by a processor, the anticipated loads of all the coprocessors; and selecting, by the processor, in response to the comparing, a particular coprocessor of the plurality of coprocessors to perform the processing operation on the received packet. - View Dependent Claims (27, 28, 29, 30)
-
-
31. An apparatus to select a coprocessor from a plurality of coprocessors to perform a processing operation on a received packet, the apparatus comprising:
-
a plurality of queues configured to store packets currently awaiting processing, each queue associated with one of the coprocessors, each queue associated with a cumulative load that represents a load to process packets in that queue; a data structure configured to store processing rates, each processing rate associated with one of the coprocessors; and a processor configured to determine a size of the received packet, and in response to the size of the received packet, and the processing rate of each coprocessor, determine a cost to perform a processing operation on the received packet at each coprocessor, the processor further configured to combine the cost at each coprocessor with the cumulative load at that coprocessor to create an anticipated load at each coprocessor, and to select a particular coprocessor to perform the processing operation on the received packet in response to comparison of the anticipated load at each coprocessor. - View Dependent Claims (32, 33, 34, 35)
-
Specification