The invention relates generally to selecting a processing entity from among plural processing entities to assign work according to load level indications that are non-linear representations of loadings of the plural processing entities.
In a network system, various processing entities may be present that are capable of performing work to be assigned by one or more controllers. A “processing entity” refers to any physical or logical device in the network system that is capable of performing work associated with one or more particular applications.
Load balancing algorithms may be used to balance workload among multiple processing entities. Various types of conventional load balancing algorithms exist. One example type of a conventional load balancing algorithm is a round robin algorithm in which processing entities are selected in sequential order for work assignment, with the selection re-starting from the beginning once an end of a group of processing entities has been reached. Round robin load balancing can include either simple round robin load balancing or weighted round robin load balancing. In weighted round robin load balancing, each processing entity is assigned a weight, with some processing entities assigned larger weights than others to increase the chances that such processing entities will be assigned work. Simple round robin load balancing is just a special case of weighted round robin load balancing, where the weight of each processing entity is assigned the value one.
Another type of conventional load balancing algorithm is a weighted load balancing algorithm in which new work is assigned to the least loaded processing entity.
An issue associated with conventional load balancing algorithms is that they are unable to efficiently handle sudden bursts of workload, such as bursts associated with re-assigning work to other processing entities when one or more processing entities become unavailable (e.g., due to failure, being reset, etc.). The unavailability of even just one processing entity may lead to an increased burst of work that was previously handled by the processing entity. The sudden burst of work that has to be re-assigned can lead to large variations in workload at the processing entities and/or increased processing delay by some processing entities when conventional load balancing algorithms are used. Also, with conventional load balancing algorithms, bursts of work resulting from processing entity(ies) becoming unavailable can stress the overall system and increase the length of time for the overall system to reach a stable state.
In general, according to an embodiment, a method of performing load balancing across plural processing entities includes receiving load level indications from the plural processing entities, where the load level indications are representations based on applying a concave function on loadings of the plural processing entities. A processing entity is selected from among the plural processing entities to assign work according to the load level indications.
Other or alternative features will become apparent from the following description, from the drawings, and from the claims.
In the following description, numerous details are set forth to provide an understanding of some embodiments. However, it will be understood by those skilled in the art that some embodiments may be practiced without these details and that numerous variations or modifications from the described embodiments may be possible.
In accordance with some embodiments, a network system includes an arrangement of controllers and processing entities, where the controllers are able to assign work to the processing entities. Assigning “work” to a processing entity refers to assigning a task (or set of tasks) to be performed by the processing entity, where each task can be any of the following: communication of data traffic (e.g., voice data, packet data, video data, etc); communication of control traffic (e.g., control messaging), or any other processing task.
At least some of the controllers are able to use a companding weighted load balancing algorithm according to some embodiments to assign work to the processing entities. The companding weighted load balancing algorithm uses weights associated with the processing entities to decide which processing entities are to be selected for work assignment. In some embodiments, the weights associated with the processing entities are in the form of load level indications (or “load levels”) that are logarithmic representations of loadings of the processing entities. A “loading” of a processing entity can refer to any of the following: a number of sessions being handled by the processing entity; an amount of total workload being handled by the processing entity; a percentage of total processing capacity of the processing entity that is consumed; the speed at which data is processed; and so forth. A load level that is a logarithmic representation of a loading of a processing entity is calculated by using a logarithmic formula that is applied to the current loading of the processing entity.
Alternatively, instead of being a logarithmic representation of a loading of a processing entity, a load level can be based on a concave function of the loading of the processing entity. A concave function is a function in which a straight line joining any two points on the graph of the function lies on or below the graph of the function. A logarithmic formula applied to a loading is an example of a concave function applied to the loading. A concave function, like a logarithmic function, is a non-linear function.
In the ensuing discussion, reference is made to logarithmic representations of loadings; however, techniques according to some embodiments are applicable to other types of representations based on concave functions.
In addition to using load levels that are logarithmic representations of loadings of processing entities, the load balancing algorithm according to some embodiments can also use a window flow control procedure to limit the number of service requests (for assigning work) that can be submitted by controllers to any processing entity. Also, processing entities that have the same load level form a target set of processing entities. The load balancing algorithm can then use a round robin or random selection algorithm to select a processing entity from the target set. The window flow control procedure and round robin/random selection algorithms are discussed further below.
Using logarithmic values for defining the load levels of a processing entity allows for load levels corresponding to lower loadings of the processing entity to be closer (in terms of values of the loadings) to each other than load levels corresponding to larger loadings of the processing entity. In other words, lower load levels are associated with narrower variations of loadings of the processing entity, whereas higher load levels are associated with wider variations of loadings of the processing entity. Note that the characteristic of narrower variations for lower load levels and wider variations for higher load levels is also true of representations based on concave functions. Generally, the weights (in the form of the load levels) assigned to a processing entity are non-linear, and more specifically, are based on concave functions (logarithmic functions in some embodiments).
In the lower part 102 of the scale 100, the loading levels 101 are closer together than in the upper part 104 of the scale 100. In other words, the range of loadings between two successive load levels 101 in the lower part 102 of the scale 100 is smaller than the range of loadings between two successive load levels 101 in the upper part 104 of the scale 100, as indicated by the difference in the distances between load levels 101 in the lower part 102 and in the upper part 104 of the scale 100.
Details of an example controller 202 are depicted in
The processing entities 204 may periodically or intermittently provide load information to the controllers 202. The communication of load information can occur frequently in some implementations. The load information that is provided to the controllers 202 by the processing entities 204 can be the logarithmic load levels (calculated by the corresponding individual processing entities 204 based on their respective loadings), or alternatively, the load information provided can be loadings of the corresponding processing entities (from which the controllers can calculate the logarithmic load levels).
The load balancer 212 in each of at least some of the controllers 202 is able to use a weighted load balancing algorithm in which weights (load levels) assigned to processing entities are based on a logarithmic scale. In some embodiments, such a load balancing algorithm is referred to as a companding weighted load balancing algorithm.
In the example of
Note that other nodes in the mobile communications network system can similarly include control planes and data planes partitioned into corresponding control entities and processing entities.
The logarithmic load levels (either communicated by the processing entities or calculated by the controller) are stored (at 408) in the storage (216 in
Processing entity(ies) with full transmission windows are removed from consideration (at 412) in selecting a target set of one or more processing entities. Next, the controller determines (at 414) whether the number of remaining processing entities (with non-full transmission windows) is greater than zero. If not, which means that the transmission windows of all processing entities are full, the new service request received at 410 is stored (at 416) into a buffer of the controller if the buffer is not full. If the buffer is full, then the new service request is discarded by the controller.
On the other hand, if the number of remaining processing entities is greater than zero, as determined at 414, then the scheduler 210 (
A round robin selection algorithm selects processing entities in sequential order for work assignment, with the selection re-starting from the beginning once an end of the target set of processing entities has been reached. A random selection algorithm uses a pseudo-random number generator to generate a random number which is then used to select a processing entity from the target set.
Assuming that PE2 is the selected processing entity, the service request is sent (at 422) to PE2. The procedure of
As noted above, the loading of a processing entity can be any one of the following: the number of sessions being handled by the processing entity; the amount of total workload handled by the processing entity; the percentage of total capacity of the processing entity consumed; the speed at which data is being processed by the processing entity; and so forth. In the ensuing discussion, it is assumed that processing entity loading is a number of sessions.
A load level VL(Λ) according to one example embodiment is defined as follows:
where x represents the number of data bits that make up the load level VL (Λ), Λ represents the current loading of the processing entity (which in one example is the number of sessions), and Λmax represents the maximum supported loading of the processing entity (e.g., maximum number of sessions that can be handled by a processing entity at any one time).
Note that the load level VL(Λ) is calculated by taking a logarithm (to base 2) of a value that is computed based on the loading Λ. More specifically, the logarithm (to base 2) is taken of the following value: the ratio of Λ to Λmax multiplied by (2x−1), plus the value 1. The base 2 logarithm of this value is taken as the numerator to be divided by the denominator log2 (2x) , which then is multiplied by (2x−1) to produce a computed value. The computed value is then rounded up to the nearest integer greater than or equal to the computed value, according to Eq. 1, to produce VL(Λ).
In other implementations, other equations can be used for calculating VL (Λ) that is based on taking the logarithm of a value that includes current loading Λ. In Eq. 1, (2x−1), log2 (2x), and Λmax are constants, such that the only variable for calculating VL(Λ) is the current loading Λ. More generally, Eq. 1 can be expressed as:
V
L(Λ)=c·logb(f(Λ)), (Eq. 2)
where c is a constant, logb represents a logarithm to base b (b≧2), and f(Λ) represents a function that is based at least in part on Λ. Eqs. 1 and 2 are example logarithmic formulas that can be applied to processing entity loadings to produce load levels (weights) according to some embodiments.
As noted above, when processing entities within a target set are at the same load level, a controller selects the processing entities using either a round robin selection algorithm or a random selection algorithm, which helps to distribute incoming work units across processing entities at the same load level.
In some cases, the average loading of a particular processing entity may be near a boundary of one of the logarithmic weights. There are two cases to examine: (1) the average loading of the processing entity just above the boundary; and (2) the average loading of the processing entity just below the boundary.
The case where the average loading of all processing entities in the network system is just below the boundary is fairly benign. In this case, a processing entity may momentarily be above the average loading value and can be removed as a candidate for selection for some temporary amount of time (until the loading of the processing entity drops below the boundary). The controller can then spread the workload among the processing entities that remain below the boundary.
However, the case where the average loading of all the processing entities of the network system is above the boundary poses more of a challenge. In this case, when a particular processing entity momentarily falls below the boundary, the controllers will all attempt to select that particular processing entity to receive new workload, excluding the majority of the processing entities that are above the boundary from selection. This can result in a “single target effect,” where workload is targeted to a single processing entity. To address this issue, load level hysteresis can be provided, where the threshold for dropping a processing entity to a lower level is different from the threshold for raising the processing entity to the next level.
In the example of
Instructions of software discussed above (e.g., scheduler 210 in
Data and instructions (of the software) are stored in respective storage devices, which are implemented as one or more computer-readable or computer-usable storage media. The storage media include different forms of memory including semiconductor memory devices such as dynamic or static random access memories (DRAMs or SRAMs), erasable and programmable read-only memories (EPROMs), electrically erasable and programmable read-only memories (EEPROMs) and flash memories; magnetic disks such as fixed, floppy and removable disks; other magnetic media including tape; and optical media such as compact disks (CDs) or digital video disks (DVDs).
In the foregoing description, numerous details are set forth to provide an understanding of the present invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these details. While the invention has been disclosed with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover such modifications and variations as fall within the true spirit and scope of the invention.
Number | Date | Country | |
---|---|---|---|
Parent | 12006132 | Dec 2007 | US |
Child | 13615420 | US |