US9223630B2 - Method and apparatus for energy efficient distributed and elastic load balancing - Google Patents

Method and apparatus for energy efficient distributed and elastic load balancing Download PDF

Info

Publication number
US9223630B2
US9223630B2 US13/334,141 US201113334141A US9223630B2 US 9223630 B2 US9223630 B2 US 9223630B2 US 201113334141 A US201113334141 A US 201113334141A US 9223630 B2 US9223630 B2 US 9223630B2
Authority
US
United States
Prior art keywords
parent
server
load
service
service request
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.)
Expired - Fee Related, expires
Application number
US13/334,141
Other versions
US20130166943A1 (en
Inventor
Haoyu Song
Fang Hao
Tirunell V. Lakshman
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.)
WSOU Investments LLC
Original Assignee
Alcatel Lucent SAS
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 Alcatel Lucent SAS filed Critical Alcatel Lucent SAS
Assigned to ALCATEL-LUCENT USA INC. reassignment ALCATEL-LUCENT USA INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HAO, FANG, LAKSHMAN, TIRUNELL V., SONG, HAOYU
Priority to US13/334,141 priority Critical patent/US9223630B2/en
Priority to KR1020147017088A priority patent/KR20140093733A/en
Priority to EP12795692.8A priority patent/EP2795468A1/en
Priority to CN201280063285.2A priority patent/CN104011686A/en
Priority to PCT/US2012/065753 priority patent/WO2013095833A1/en
Priority to JP2014549058A priority patent/JP5978313B2/en
Assigned to ALCATEL LUCENT reassignment ALCATEL LUCENT ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ALCATEL-LUCENT USA INC.
Assigned to CREDIT SUISSE AG reassignment CREDIT SUISSE AG SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ALCATEL-LUCENT USA INC.
Publication of US20130166943A1 publication Critical patent/US20130166943A1/en
Assigned to ALCATEL-LUCENT USA INC. reassignment ALCATEL-LUCENT USA INC. RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: CREDIT SUISSE AG
Publication of US9223630B2 publication Critical patent/US9223630B2/en
Application granted granted Critical
Assigned to OMEGA CREDIT OPPORTUNITIES MASTER FUND, LP reassignment OMEGA CREDIT OPPORTUNITIES MASTER FUND, LP SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: WSOU INVESTMENTS, LLC
Assigned to WSOU INVESTMENTS, LLC reassignment WSOU INVESTMENTS, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ALCATEL LUCENT
Assigned to BP FUNDING TRUST, SERIES SPL-VI reassignment BP FUNDING TRUST, SERIES SPL-VI SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: WSOU INVESTMENTS, LLC
Assigned to WSOU INVESTMENTS, LLC reassignment WSOU INVESTMENTS, LLC RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: OCO OPPORTUNITIES MASTER FUND, L.P. (F/K/A OMEGA CREDIT OPPORTUNITIES MASTER FUND LP
Assigned to OT WSOU TERRIER HOLDINGS, LLC reassignment OT WSOU TERRIER HOLDINGS, LLC SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: WSOU INVESTMENTS, LLC
Assigned to WSOU INVESTMENTS, LLC reassignment WSOU INVESTMENTS, LLC RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: TERRIER SSC, LLC
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • Y02B60/142
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the invention relates generally to methods and apparatus for providing server load balancing.
  • a service may be hosted on a number of servers in order to provide higher quality of service such as high throughput and low response time.
  • a typical architecture may include a front-end load balancer and a fixed number of back-end servers.
  • the front-end load balancer may be a dedicated hardware box which distributes the incoming requests to different servers using a conventional distribution policy such as: random, round robin, or load-based distribution. In this model, all of the server nodes are active and ready to serve the service requests.
  • a front-end load balancer sends new requests to the most loaded server as long as the server can satisfy the performance constraints in order to create more opportunity for servers to stay in low energy states.
  • this solution is not scalable as tracking the load of a large number of heterogeneous servers requires a sophisticated and expensive front-end load balancer.
  • the energy efficient distributed and elastic load balancing architecture includes a collection of multi-tiered servers organized as a tree structure. The handling of incoming service requests is distributed amongst a number of the servers. Each server in the virtual load distribution tree accepts incoming service requests based on its own load. Once a predetermined loading on the receiving server has been reached, the receiving server passes the incoming requests to one or more of its children servers.
  • a method for providing energy efficient and elastic load balancing at a parent server.
  • the method includes: receiving a plurality of service requests instantiated by one or more clients, determining a plurality of service handling decisions based on the service requests, the plurality of service handling decisions corresponding to at least a portion of the plurality of service requests, selecting a child server based on a first of the service handling decisions and transmitting a first propagated service request based on a first service request, the first service request corresponding to the first service handling decision, and selecting the parent server based on a second of the service handling decisions and handling a second service request, the second service request corresponding to the second service handling decision.
  • the act of handling the second service request includes responding directly to the instantiating client of the second service request.
  • the method also includes: determining a parent load based on at least one of the plurality of service requests, the parent load indicating a loading of the parent server and waking at least one child server of the parent server based on the parent load and a server load threshold.
  • the method further includes: determining a parent load based on at least one of the plurality of service requests, the parent load indicating a loading of the parent server, receiving a parent-parent load, the parent-parent load indicating a loading of a parent-parent server, wherein the parent-parent server is parent to the parent server, and switching operation of the parent server to a sleep mode based on the parent load, the parent-parent load and a parent-parent load threshold.
  • the method further includes: registering the child server and at least one associated selection parameter, the at least one associated selection parameter being based on the first service request, selecting the child server based on a third service request of the plurality of service requests and the at least one registered associated selection parameters, and transmitting a third propagated service request based on a third service request.
  • an apparatus for providing energy efficient and elastic load balancing at a parent server.
  • the apparatus includes a data storage and a processor communicatively coupled to the data storage.
  • the processor is configured to: receive a plurality of service requests instantiated by one or more clients, determine a plurality of service handling decisions based on the service requests, the plurality of service handling decisions corresponding to at least a portion of the plurality of service requests, select a child server based on a first of the service handling decisions and transmit a first propagated service request based on a first service request, the first service request corresponding to the first service handling decision, and select the parent server based on a second of the service handling decisions and handle a second service request, the second service request corresponding to the second service handling decision.
  • handling of the second service request comprises further configuring the processor to: respond directly to the instantiating client of the second service request.
  • the processor is further configured to: determine a parent load based on at least one of the plurality of service requests, the parent load indicating a loading of the parent server and wake at least one child server of the parent server based on the parent load and a server load threshold.
  • the processor is further configured to: determine a parent load based on at least one of the plurality of service requests, the parent load indicating a loading of the parent server, receive a parent-parent load, the parent-parent load indicating a loading of a parent-parent server, wherein the parent-parent server is parent to the parent server, and switch operation of the parent server to a sleep mode based on the parent load, the parent-parent load and a parent-parent load threshold.
  • the processor is further configured to: register the child server and at least one associated selection parameter, the at least one associated selection parameter being based on the first service request, select the child server based on a third service request of the plurality of service requests and the at least one registered associated selection parameters, and transmit a third propagated service request based on a third service request.
  • the selection of the child server is based on a proportion of a child server load of the child server and at least one other child server load corresponding to at least one other child server of the parent server.
  • a system if provided for providing energy efficient and elastic load balancing.
  • the system includes a plurality of servers communicatively coupled through a network, the plurality of servers being logically arranged in a virtual load distribution tree, and a service request handler communicatively coupled to the plurality of servers.
  • the service request handler configured to: receive a plurality of service requests instantiated by one or more clients, determine a plurality of service handling decisions based on the service requests, the plurality of service handling decisions corresponding to at least a portion of the plurality of service requests, select a child server based on a first of the service handling decisions and transmit a first propagated service request based on a first service request, the first service request corresponding to the first service handling decision, and select the parent server based on a second of the service handling decisions and handle a second service request, the second service request corresponding to the second service handling decision.
  • the virtual load distribution tree comprises a root server and at least two levels of servers.
  • the virtual load distribution tree is based on values of initial delay and energy saving potential for at least a portion of the plurality of servers.
  • the virtual load distribution tree is based on a predicted system load.
  • one or more of the plurality of servers are virtual machines.
  • the system also includes: a service request manager communicatively coupled to the plurality of servers.
  • the service request manager is configured to dynamically scale the virtual load distribution tree.
  • the service request manager is further configured to: recover a failed server; wherein the plurality of servers include the failed server; and wherein the recovery of the failed server includes at least one of: select a selected server to assume the role of the failed server, wherein the plurality of servers include the selected server; instantiate a new server to assume the role of the of the failed server, wherein the plurality of servers include the new server; and distribute the load of the failed server to one of more recovery servers, wherein the plurality of servers include the recovery servers.
  • the system also includes a shared resource pool communicatively coupled to the service request manager.
  • the service request manager dynamically allocates servers between the shared resource pool and the virtual load distribution tree based on load.
  • FIG. 1 illustrates a load balancing system 100 that includes an embodiment of the energy efficient distributed and elastic load balancing architecture 110 ;
  • FIG. 2 illustrates an embodiment of the energy efficient distributed and elastic load balancing architecture 110 of FIG. 1 ;
  • FIG. 3 depicts a flow chart illustrating an embodiment of a method for providing primary-backup services using the backup-in-the-middle forwarder 120 of FIG. 1 ;
  • FIG. 4 depicts a flow chart illustrating an embodiment of a method for handling a service request using one of the servers 120 of FIG. 1 ;
  • FIG. 5 schematically illustrates blocks of one embodiment of one of the servers 120 of FIG. 1 .
  • the energy efficient distributed and elastic load balancing architecture includes a collection of multi-tiered servers organized as a tree structure. The handling of incoming service requests is distributed amongst a number of the servers. Each server in the virtual load distribution tree accepts incoming service requests based on its own load. Once a predetermined loading on the receiving server has been reached, the receiving server passes the incoming requests to one or more of its children servers.
  • this elastic load balancing architecture allows the system to compensate for fluctuating system loads.
  • Second, this elastic load balancing architecture allows the system to assign children servers from a shared resource pool to servers during high load periods in order to reduce the instances of denial of services due to insufficient server capacity.
  • FIG. 1 illustrates a load balancing system 100 that includes an embodiment of the energy efficient distributed and elastic load balancing architecture 110 .
  • An energy efficient distributed and elastic load balancing architecture 110 includes a collection of multi-tiered servers 120 - a - 120 - g (collectively, servers 120 ).
  • the servers 120 receive and respond to service requests from one or more clients 150 - a - 150 - c (collectively, clients 150 ).
  • Service requests from clients 150 are delivered to servers 120 over a network 140 via a network connection 130 .
  • the servers 120 include the intelligence to route the client service request to the servers 120 that will handle the request as well as the resources and logic to respond to the client server request.
  • the servers 120 are organized in a virtual load distribution tree with at least one parent server (e.g., server 120 - a ) and at least one child server (e.g., servers 120 - b and 120 - c are children servers of server 120 - a ).
  • the architecture may have any number of tree levels and may vary the degree of the tree (i.e., the fan-out of the server) at each tree level.
  • the tree may also be unbalanced. For example, some parent servers may have two children servers while others may have more or less than two children servers and/or some branches of the tree may have larger or smaller tree levels.
  • a root server is the server at the top level of the virtual load distribution tree (e.g., server 120 - a ), a parent server is a server that distributes service requests to at least one child server (e.g., servers 120 - a , 120 - b and 120 - c ), a child server is a server that receives service requests from a parent server (e.g., servers 120 - b - 120 - g ) and a leaf server is a server without any children servers (e.g., servers 120 - d - 120 - g ).
  • a server may be both a parent server and a child server.
  • server 120 - b is a child server to server 120 - a and a parent server to servers 12 - d and 120 - e .
  • a server may be both a leaf server and a child server.
  • the network connection 130 may support retrieving or responding to services requests over one or more communication channels such as: wireless communications (e.g., LTE, GSM, CDMA, bluetooth); femtocell communications (e.g., WiFi); packet network communications (e.g., IP); broadband communications (e.g., DOCSIS and DSL); and the like. It should be appreciated that though depicted as a single connection, network connection 130 may be any number or combinations of communication channels supporting communication between servers 120 and the network 140 .
  • wireless communications e.g., LTE, GSM, CDMA, bluetooth
  • femtocell communications e.g., WiFi
  • packet network communications e.g., IP
  • broadband communications e.g., DOCSIS and DSL
  • the network 140 may be any suitable network for facilitating communication from servers 120 to clients 150 .
  • network 140 may be any combination of: Local Area Network(s) (LAN), Wireless Local Area Network(s) (WLAN), Wide Area Network (WAN), Metropolitan Area Network (MAN), and the like.
  • the clients 150 may be type or number of client machine(s) initiating service request(s) directed to the energy efficient distributed and elastic load balancing architecture 110 .
  • a client may be: a server, a mobile phone, a tablet, a computer, a personal digital assistant (PDA), an e-reader, a network device (e.g., a switch or a router) and/or the like.
  • PDA personal digital assistant
  • e-reader e.g., a network device and/or the like.
  • servers 120 are arranged in the virtual load distribution tree according to parameters such as the initial delay and the energy saving potential.
  • the initial delay and energy saving potential of a particular virtual load distribution tree arrangement of servers 120 may be controlled based on a number of factors such as the arrangement of the virtual load distribution tree and individual server capabilities.
  • a virtual load distribution tree design of a number of servers “n” as the number of levels increase, routing service requests becomes less complex, energy efficiency increases, and the initial delay becomes larger.
  • a flat tree with one root node and (n-1) leaf nodes has the minimum delay due to the request relay, but has the highest complexity and worst energy efficiency.
  • the servers are organized as a chain, (i.e.
  • a virtual load distribution tree with each tree level having a degree of 1), the tree is simple and energy efficient, but has maximum delay.
  • Individual server capabilities may impact tree design if the servers 120 have different resource capabilities.
  • servers may be placed in the virtual load distribution tree based on the capacity of service requests that they are capable of handling.
  • the virtual load distribution tree includes at least two levels below the root server.
  • the degree of servers in a level of the virtual load distribution tree may be designed based on predicted loads. Referring to FIG. 2 , an exemplary plot of the predicted load over the course of a day is shown. As can be seen, the load between 9:00 AM and 8:00 PM is predicted to be up to 120 while the load between 9:00 PM and 8:00 AM is predicted to be below 30.
  • a virtual load distribution tree may be arranged such that the tree has two levels below the root server. The first level may be designed to handle loads under 30 while the second level may be designed to handle loads up to 120. This may be done by choosing individual servers with higher capacities for the second level of the virtual load distribution tree and/or using a higher degree (more servers) for the second level of the virtual load distribution tree.
  • servers 120 may be homogenous and in other embodiments, servers 120 may be heterogeneous. It should be appreciated that by keeping the complexity of the servers low, special hardware may not be required.
  • servers 120 may consist entirely of low-cost commodity servers to create a cost efficient system. It should be appreciated that since the intelligence to route the client service request to the servers 120 is distributed in a plurality of the servers 120 , there is no need for a special hardware box to acting as a central load distributor.
  • two or more servers 120 may be interconnected via a LAN. In some embodiments two or more servers 120 may be connected over a WAN such as the internet. It should be appreciated that each of servers 120 do not have to be connected in the same way or even via the same types of communication channels and/or protocols.
  • two or more servers 120 may be virtual machines. In a further embodiment, a portion of the virtual machine servers may reside on the same physical hardware. In some embodiments, one or more virtual machine servers may include resource distributed over different hardware resources. In a further embodiment, at least a first portion of those hardware resources may be located in a different geographical location than at least a second portion of those hardware resources.
  • the virtual load distribution tree may be scalable to dynamically grow or shrink, (i.e., add and delete servers) and/or modify the arrangement of the virtual load distribution tree based on load.
  • Load determinations may be based on a system loading of the virtual load distribution tree and/or loading of one or more servers in the load distribution tree. For example, the load determination may be based on a branch of the virtual load distribution tree beginning with a parent server or based on loading of a single server in the virtual load distribution tree.
  • At least a portion of the servers dynamically added and deleted from the virtual load distribution tree may be added and deleted from a shared resource pool.
  • a shared resource pool may be a collection of resources and/or servers that are shared amongst a number of applications/services.
  • a separate shared resource pool manager may manage the allocation of resources/servers using conventional resource management methods.
  • the resource pool manager is a hypervisor managing requests for cloud resources. The hypervisor may provide access to a collection of resources (e.g., a virtual machine) in response to a request from one of the servers 120 .
  • servers 120 are arranged in a virtual load distribution tree using an energy efficient distributed and elastic load balancing architecture 110 service request manager (not shown).
  • the service request manager may reside on one or more of the servers 120 , (e.g., the root server 120 - a ), and/or on one or more separate servers outside of servers 120 .
  • the service request manager may propagate virtual load distribution tree parameters to the servers 120 to create the relationships between servers.
  • Virtual load distribution tree parameters may include any suitable parameter such as: parameters to help specify when a server should handle a request, parameters to help specify when a server should transmit the request to one of its children servers, parameters to help specify when to spawn new children servers (e.g., in a scalable virtual load distribution tree), parameters to help specify when a child server in a low energy mode should be woken, and/or the like.
  • the service request manager dynamically manages the virtual dynamic load tree.
  • the service request manager may manage the scaling of the virtual load distribution tree as described herein or manage failure recovery of servers. For example, if one of servers 120 fails, that failed server may be excluded from the network. Furthermore, another server may be elected/instantiated to assume the role of the failed server or the load of the failed server may be distributed to the surviving servers. It should be appreciated that such architecture can avoid the link and node bottleneck and be resilient to network fault. It should also be appreciated that the service request manager may communicate with servers 120 over a conventional network (e.g., network 360 ).
  • a conventional network e.g., network 360
  • FIG. 4 depicts a flow chart illustrating an embodiment of a method for handling a service request using one of the servers 120 .
  • a server receives a service request either from a parent server or directly from one of the clients 150 (e.g., step 410 of method 400 ). If the receiving server determines that a child should handle the request (e.g., step 420 of method 400 ), the receiving server selects a child to handle the request (e.g., step 430 of method 400 ), transmits the request to the selected child (e.g., step 440 of method 400 ) and optionally registers the request in order to facilitate future requests (e.g., step 450 of method 400 ).
  • the receiving server determines it should handle the request itself (e.g., step 420 of method 400 )
  • the receiving server handles the request (e.g., step 460 of method 400 ), optionally registers the request in order to facilitate future requests (e.g., step 470 of method 400 ) and then optionally determines whether to wake up a child server in order to prepare the child server to handle a future service request (steps 480 and 490 of method 400 ).
  • the step 410 includes a receiving server receiving a service request either from a parent server or directly from one of the clients 150 .
  • a service request from one of the clients 150 is initially received by the root server.
  • the root server may then propagate the service request through the virtual load distribution tree based on a propagation determination. It should be appreciated that the root server and each parent server in the virtual load distribution tree receiving the propagated service request behave the same.
  • the step 420 includes determining whether the receiving server should propagate the service request to a child server or to handle the service request itself.
  • the step 430 includes selecting the child server to handle the service request.
  • the child server may be selected using a conventional distribution policy, selected based on a previously registered selection, and/or selected based on a mapping of the requirements of the service request to the capabilities of the children servers.
  • the step 440 includes transmitting the request to the selected child server. It should be appreciated that the request propagated to the selected child server may be identical to the received request or may be modified by the receiving server.
  • Step 450 includes registering the request in order to facilitate future requests.
  • the packet flow of the selected server may be registered. It should be appreciated that in for some types of service requests, a particular server may be preferred or required to handle all the packets belonging to the same service request.
  • the step 460 includes handling the service request.
  • conventional network load balancing may distribute TCP/IP-based service requests, such as Web, terminal services, virtual private networking, and streaming media servers.
  • Step 470 includes registering the request in order to facilitate future requests as described above in step 450 .
  • the method 400 optionally includes steps 480 and 490 .
  • Steps 480 and 490 include determining whether to wake up a child server in order to prepare the child server to handle a future service request. It should be appreciated that servers need to stay in power-off state or some other deep sleep modes in order to consume zero energy. Conventional techniques such as “wake-on-LAN” may be used to wake up a child server when a service request is being transmitted to the selected server (e.g., step 440 ); however, waking a server often takes some extended period of time and during this transition period, service requests may not be deliverable. As such the parent server may include step 480 to proactively wake one or more child servers.
  • a server may determine to proactively wake a child server based on the parent server's load and/or a historical prediction of future load (e.g., FIG. 2 and the accompanying description).
  • proactively waking up one of more child servers may help the parent server avoid overflow conditions.
  • step 420 includes determining that the receiving server has reached its capacity and can no longer handle further requests. In other embodiments, step 420 includes determining that the receiving server has reached some predetermined load or percentage or load.
  • step 430 includes using a distribution policy such as: random, round robin, or load-based distribution.
  • step 430 includes selecting the most loaded child that is capable of satisfying the performance constraints in order to create more opportunity for servers to stay in low energy states.
  • step 430 includes selecting child servers proportional to the load capability of each child.
  • step 430 includes selecting a child server based on a mapping of the capabilities of the child server and the requirements of the service request. For example, a first child server of the parent server may be configured to handle streaming media requests more efficiently than a second child server.
  • step 430 includes selecting a child server based on the client (e.g., clients 150 of FIG. 1 ) instantiating the service request.
  • client e.g., clients 150 of FIG. 1
  • one or more servers e.g., servers 120 of FIG. 1
  • step 450 and/or 470 includes registering the packet flow with the root server so that subsequent packets may be directly delivered to the selected server.
  • registering the packet flow delays and selection errors may be lowered.
  • step 460 includes replying directly to the requesting client (e.g., client 150 - a in FIG. 1 ).
  • the destination address is modified in the response.
  • the requesting client is capable of directing future packets directly to the responding server without following the virtual load distribution tree path.
  • the destination address of the service request is not modified in the response to the requesting client.
  • future service requests will still be directed to the root server.
  • the servers 120 each contain a unique primary address and a secondary virtual address that is shared amongst the servers 120 in the virtual load distribution tree.
  • the method may further include determining to turn the parent server to sleep mode.
  • the parent server may determine to enter sleep mode based on its loading and the loading of the server's parent. In particular, when a server has no scheduled jobs (e.g., service request tasks) and the server's parent server has a load below a threshold level, the server enters in an energy efficient sleep mode. It should be appreciated that parent and children servers may communicate loading parameters via conventional communication protocols and connections over a conventional network (e.g., network 360 of FIG. 3 ).
  • step 410 After steps 450 and 490 , method 400 returns to step 410 to repeat the process of receiving and processing service requests.
  • optional steps 480 and 490 may be performed at any point in the process. Moreover, they may even be performed outside of the process before a service request has been received.
  • one or more of the servers 120 includes a service request handler that performs the steps of method 400 .
  • each of the servers 120 includes a service request handler. It may be appreciated that the service request handler may reside on one or more of the servers 120 , (e.g., each of servers 120 ), and/or on one or more separate servers outside of servers 120
  • steps of various above-described methods can be performed by programmed computers.
  • program storage devices e.g., data storage media, which are machine or computer readable and encode machine-executable or computer-executable programs of instructions, wherein said instructions perform some or all of the steps of said above-described methods.
  • the program storage devices may be, e.g., digital memories, magnetic storage media such as a magnetic disks and magnetic tapes, hard drives, or optically readable data storage media.
  • the embodiments are also intended to cover computers programmed to perform said steps of the above-described methods.
  • FIG. 5 schematically illustrates one embodiment of one of the servers 120 of FIG. 1 .
  • the server 120 may perform the functions described herein, e.g., using the method 400 .
  • the server 120 includes a processor 510 , a data storage 511 , and an I/O interface 530 .
  • the processor 510 controls the operation of the server 120 .
  • the processor 510 cooperates with the data storage 511 .
  • the data storage 511 may store the loading parameters (e.g., steps 420 , 430 , 450 , 470 and 480 in FIG. 4 ) and buffer the received and transmitted service requests and inter server communication (e.g., steps 410 , 440 , 450 , 460 and 470 in FIG. 4 ).
  • the data storage 511 also stores programs 520 executable by the processor 510 .
  • the processor-executable programs 510 may include an I/O interface program 521 , a service request handler program 523 and/or a service request manager program 525 .
  • Processor 510 cooperates with processor-executable programs 520 to implement the functionality described in FIGS. 1-4 and/or perform the steps of method 400 .
  • the I/O interface 530 is configured for supporting any suitable number of channels supporting any suitable number(s) of sessions (e.g., any suitable number of IP flows), which may be directed between the particular server 120 and one or more clients (e.g., client 150 - a - 150 - c in FIG. 1 ) and one or more of the servers (e.g., servers 120 in FIG. 1 ).
  • I/O interface 530 may support any suitable type(s) of communication paths and communication protocols.
  • communication paths may include wireless communications (e.g., GSM and CDMA); wireline communications; packet network communications (e.g., IP); broadband communications (e.g., DSL); and the like, as well as various combinations thereof.
  • the server 120 is a special designed network interface card (NIC).
  • the NIC provides service request handling.
  • the server host can focus on its core functions and dedicate its resource to provide the service. It should be appreciated that the server host may provide indications of load and other suitable parameters to the NIC.
  • the host server may set a busy bit on the NIC to indicate that the host is busy and can no longer accept new requests.
  • the NIC may automatically forward the new service requests to proper servers based on the virtual load distribution tree.
  • this NIC hardware acceleration can further reduce the service delay.
  • processor-executable programs 520 When processor-executable programs 520 are implemented on a processor 510 , the program code segments combine with the processor to provide a unique device that operates analogously to specific logic circuits.
  • processors may be provided through the use of dedicated hardware as well as hardware capable of executing software in association with appropriate software.
  • the functions may be provided by a single dedicated processor, by a single shared processor, or by a plurality of individual processors, some of which may be shared.
  • explicit use of the term “processor” or “controller” should not be construed to refer exclusively to hardware capable of executing software, and may implicitly include, without limitation, digital signal processor (DSP) hardware, network processor, application specific integrated circuit (ASIC), field programmable gate array (FPGA), read only memory (ROM) for storing software, random access memory (RAM), and non volatile storage.
  • DSP digital signal processor
  • ASIC application specific integrated circuit
  • FPGA field programmable gate array
  • ROM read only memory
  • RAM random access memory
  • any switches shown in the FIGS. are conceptual only. Their function may be carried out through the operation of program logic, through dedicated logic, through the interaction of program control and dedicated logic, or even manually, the particular technique being selectable by the implementer as more specifically understood from the context.
  • any block diagrams herein represent conceptual views of illustrative circuitry embodying the principles of the invention.
  • any flow charts, flow diagrams, state transition diagrams, pseudo code, and the like represent various processes which may be substantially represented in computer readable medium and so executed by a computer or processor, whether or not such computer or processor is explicitly shown.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

Various embodiments provide a method and apparatus of providing a load balancing configuration that adapts to the overall load and scales the power consumption with the load to improve energy efficiency and scalability. The energy efficient distributed and elastic load balancing architecture includes a collection of multi-tiered servers organized as a tree structure. The handling of incoming service requests is distributed amongst a number of the servers. Each server in the virtual load distribution tree accepts handles incoming service requests based on its own load. Once a predetermined loading on the receiving server has been reached, the receiving server passes the incoming requests to one or more of its children servers.

Description

TECHNICAL FIELD
The invention relates generally to methods and apparatus for providing server load balancing.
BACKGROUND
This section introduces aspects that may be helpful in facilitating a better understanding of the inventions. Accordingly, the statements of this section are to be read in this light and are not to be understood as admissions about what is in the prior art or what is not in the prior art.
In some known load balancing systems, a service may be hosted on a number of servers in order to provide higher quality of service such as high throughput and low response time. A typical architecture may include a front-end load balancer and a fixed number of back-end servers. The front-end load balancer may be a dedicated hardware box which distributes the incoming requests to different servers using a conventional distribution policy such as: random, round robin, or load-based distribution. In this model, all of the server nodes are active and ready to serve the service requests.
In other known load balancing systems, a front-end load balancer sends new requests to the most loaded server as long as the server can satisfy the performance constraints in order to create more opportunity for servers to stay in low energy states. However, this solution is not scalable as tracking the load of a large number of heterogeneous servers requires a sophisticated and expensive front-end load balancer.
SUMMARY
Various embodiments provide a method and apparatus of providing a load balancing configuration that adapts to the overall load and scales the power consumption with the load to improve energy efficiency and scalability. The energy efficient distributed and elastic load balancing architecture includes a collection of multi-tiered servers organized as a tree structure. The handling of incoming service requests is distributed amongst a number of the servers. Each server in the virtual load distribution tree accepts incoming service requests based on its own load. Once a predetermined loading on the receiving server has been reached, the receiving server passes the incoming requests to one or more of its children servers.
In one embodiment, a method is provided for providing energy efficient and elastic load balancing at a parent server. The method includes: receiving a plurality of service requests instantiated by one or more clients, determining a plurality of service handling decisions based on the service requests, the plurality of service handling decisions corresponding to at least a portion of the plurality of service requests, selecting a child server based on a first of the service handling decisions and transmitting a first propagated service request based on a first service request, the first service request corresponding to the first service handling decision, and selecting the parent server based on a second of the service handling decisions and handling a second service request, the second service request corresponding to the second service handling decision.
In some embodiments, the act of handling the second service request includes responding directly to the instantiating client of the second service request.
In some embodiments, the method also includes: determining a parent load based on at least one of the plurality of service requests, the parent load indicating a loading of the parent server and waking at least one child server of the parent server based on the parent load and a server load threshold.
In some embodiments, the method further includes: determining a parent load based on at least one of the plurality of service requests, the parent load indicating a loading of the parent server, receiving a parent-parent load, the parent-parent load indicating a loading of a parent-parent server, wherein the parent-parent server is parent to the parent server, and switching operation of the parent server to a sleep mode based on the parent load, the parent-parent load and a parent-parent load threshold.
In some embodiments, the method further includes: registering the child server and at least one associated selection parameter, the at least one associated selection parameter being based on the first service request, selecting the child server based on a third service request of the plurality of service requests and the at least one registered associated selection parameters, and transmitting a third propagated service request based on a third service request.
In a second embodiment, an apparatus is provided for providing energy efficient and elastic load balancing at a parent server. The apparatus includes a data storage and a processor communicatively coupled to the data storage. The processor is configured to: receive a plurality of service requests instantiated by one or more clients, determine a plurality of service handling decisions based on the service requests, the plurality of service handling decisions corresponding to at least a portion of the plurality of service requests, select a child server based on a first of the service handling decisions and transmit a first propagated service request based on a first service request, the first service request corresponding to the first service handling decision, and select the parent server based on a second of the service handling decisions and handle a second service request, the second service request corresponding to the second service handling decision.
In some embodiments, handling of the second service request comprises further configuring the processor to: respond directly to the instantiating client of the second service request.
In some embodiments, the processor is further configured to: determine a parent load based on at least one of the plurality of service requests, the parent load indicating a loading of the parent server and wake at least one child server of the parent server based on the parent load and a server load threshold.
In some embodiments, the processor is further configured to: determine a parent load based on at least one of the plurality of service requests, the parent load indicating a loading of the parent server, receive a parent-parent load, the parent-parent load indicating a loading of a parent-parent server, wherein the parent-parent server is parent to the parent server, and switch operation of the parent server to a sleep mode based on the parent load, the parent-parent load and a parent-parent load threshold.
In some embodiments, 10 the processor is further configured to: register the child server and at least one associated selection parameter, the at least one associated selection parameter being based on the first service request, select the child server based on a third service request of the plurality of service requests and the at least one registered associated selection parameters, and transmit a third propagated service request based on a third service request.
In some embodiments, the selection of the child server is based on a proportion of a child server load of the child server and at least one other child server load corresponding to at least one other child server of the parent server.
In a third embodiment, a system if provided for providing energy efficient and elastic load balancing. The system includes a plurality of servers communicatively coupled through a network, the plurality of servers being logically arranged in a virtual load distribution tree, and a service request handler communicatively coupled to the plurality of servers. The service request handler configured to: receive a plurality of service requests instantiated by one or more clients, determine a plurality of service handling decisions based on the service requests, the plurality of service handling decisions corresponding to at least a portion of the plurality of service requests, select a child server based on a first of the service handling decisions and transmit a first propagated service request based on a first service request, the first service request corresponding to the first service handling decision, and select the parent server based on a second of the service handling decisions and handle a second service request, the second service request corresponding to the second service handling decision.
In some embodiments, the virtual load distribution tree comprises a root server and at least two levels of servers.
In some embodiments, the virtual load distribution tree is based on values of initial delay and energy saving potential for at least a portion of the plurality of servers.
In some embodiments, the virtual load distribution tree is based on a predicted system load.
In some embodiments, one or more of the plurality of servers are virtual machines.
In some embodiments, the system also includes: a service request manager communicatively coupled to the plurality of servers. The service request manager is configured to dynamically scale the virtual load distribution tree.
In some embodiments, 18 the service request manager is further configured to: recover a failed server; wherein the plurality of servers include the failed server; and wherein the recovery of the failed server includes at least one of: select a selected server to assume the role of the failed server, wherein the plurality of servers include the selected server; instantiate a new server to assume the role of the of the failed server, wherein the plurality of servers include the new server; and distribute the load of the failed server to one of more recovery servers, wherein the plurality of servers include the recovery servers.
In some embodiments, the system also includes a shared resource pool communicatively coupled to the service request manager.
In some embodiments, the service request manager dynamically allocates servers between the shared resource pool and the virtual load distribution tree based on load.
BRIEF DESCRIPTION OF THE DRAWINGS
Various embodiments are illustrated in the accompanying drawings, in which:
FIG. 1 illustrates a load balancing system 100 that includes an embodiment of the energy efficient distributed and elastic load balancing architecture 110;
FIG. 2 illustrates an embodiment of the energy efficient distributed and elastic load balancing architecture 110 of FIG. 1;
FIG. 3 depicts a flow chart illustrating an embodiment of a method for providing primary-backup services using the backup-in-the-middle forwarder 120 of FIG. 1;
FIG. 4 depicts a flow chart illustrating an embodiment of a method for handling a service request using one of the servers 120 of FIG. 1; and
FIG. 5 schematically illustrates blocks of one embodiment of one of the servers 120 of FIG. 1.
To facilitate understanding, identical reference numerals have been used to designate elements having substantially the same or similar structure and/or substantially the same or similar function.
DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS
Various embodiments provide a method and apparatus of providing a load balancing configuration that adapts to the overall load and scales the power consumption with the load to improve energy efficiency and scalability. The energy efficient distributed and elastic load balancing architecture includes a collection of multi-tiered servers organized as a tree structure. The handling of incoming service requests is distributed amongst a number of the servers. Each server in the virtual load distribution tree accepts incoming service requests based on its own load. Once a predetermined loading on the receiving server has been reached, the receiving server passes the incoming requests to one or more of its children servers.
Advantageously, this elastic load balancing architecture allows the system to compensate for fluctuating system loads. First, since a server does not pass incoming requests to its children servers until the server has reached a predetermined load, the children servers may be put to sleep during periods of low activity to reduce energy usage or reallocated to a shared resource pool. Second, this elastic load balancing architecture allows the system to assign children servers from a shared resource pool to servers during high load periods in order to reduce the instances of denial of services due to insufficient server capacity. Third, distributing the handling of incoming service requests amongst the servers eliminates the need for a sophisticated and expensive front-end load balancer.
FIG. 1 illustrates a load balancing system 100 that includes an embodiment of the energy efficient distributed and elastic load balancing architecture 110. An energy efficient distributed and elastic load balancing architecture 110 includes a collection of multi-tiered servers 120-a-120-g (collectively, servers 120). The servers 120 receive and respond to service requests from one or more clients 150-a-150-c (collectively, clients 150). Service requests from clients 150 are delivered to servers 120 over a network 140 via a network connection 130.
The servers 120 include the intelligence to route the client service request to the servers 120 that will handle the request as well as the resources and logic to respond to the client server request. The servers 120 are organized in a virtual load distribution tree with at least one parent server (e.g., server 120-a) and at least one child server (e.g., servers 120-b and 120-c are children servers of server 120-a). The architecture may have any number of tree levels and may vary the degree of the tree (i.e., the fan-out of the server) at each tree level. The tree may also be unbalanced. For example, some parent servers may have two children servers while others may have more or less than two children servers and/or some branches of the tree may have larger or smaller tree levels.
As defined herein, a root server is the server at the top level of the virtual load distribution tree (e.g., server 120-a), a parent server is a server that distributes service requests to at least one child server (e.g., servers 120-a, 120-b and 120-c), a child server is a server that receives service requests from a parent server (e.g., servers 120-b-120-g) and a leaf server is a server without any children servers (e.g., servers 120-d-120-g).
It should be appreciated that a server may be both a parent server and a child server. For example, server 120-b is a child server to server 120-a and a parent server to servers 12-d and 120-e. Moreover, it should be appreciated that a server may be both a leaf server and a child server.
The network connection 130 may support retrieving or responding to services requests over one or more communication channels such as: wireless communications (e.g., LTE, GSM, CDMA, bluetooth); femtocell communications (e.g., WiFi); packet network communications (e.g., IP); broadband communications (e.g., DOCSIS and DSL); and the like. It should be appreciated that though depicted as a single connection, network connection 130 may be any number or combinations of communication channels supporting communication between servers 120 and the network 140.
The network 140 may be any suitable network for facilitating communication from servers 120 to clients 150. For example, network 140 may be any combination of: Local Area Network(s) (LAN), Wireless Local Area Network(s) (WLAN), Wide Area Network (WAN), Metropolitan Area Network (MAN), and the like.
The clients 150 may be type or number of client machine(s) initiating service request(s) directed to the energy efficient distributed and elastic load balancing architecture 110. For example, a client may be: a server, a mobile phone, a tablet, a computer, a personal digital assistant (PDA), an e-reader, a network device (e.g., a switch or a router) and/or the like.
In some embodiments, servers 120 are arranged in the virtual load distribution tree according to parameters such as the initial delay and the energy saving potential. The initial delay and energy saving potential of a particular virtual load distribution tree arrangement of servers 120 may be controlled based on a number of factors such as the arrangement of the virtual load distribution tree and individual server capabilities. In general for a virtual load distribution tree design of a number of servers “n”, as the number of levels increase, routing service requests becomes less complex, energy efficiency increases, and the initial delay becomes larger. For example, for a number of servers “n”, a flat tree with one root node and (n-1) leaf nodes has the minimum delay due to the request relay, but has the highest complexity and worst energy efficiency. On the other extreme, if the servers are organized as a chain, (i.e. a virtual load distribution tree with each tree level having a degree of 1), the tree is simple and energy efficient, but has maximum delay. Individual server capabilities may impact tree design if the servers 120 have different resource capabilities. In particular, servers may be placed in the virtual load distribution tree based on the capacity of service requests that they are capable of handling.
In some embodiments, the virtual load distribution tree includes at least two levels below the root server. In a further embodiment, the degree of servers in a level of the virtual load distribution tree may be designed based on predicted loads. Referring to FIG. 2, an exemplary plot of the predicted load over the course of a day is shown. As can be seen, the load between 9:00 AM and 8:00 PM is predicted to be up to 120 while the load between 9:00 PM and 8:00 AM is predicted to be below 30. In this example, a virtual load distribution tree may be arranged such that the tree has two levels below the root server. The first level may be designed to handle loads under 30 while the second level may be designed to handle loads up to 120. This may be done by choosing individual servers with higher capacities for the second level of the virtual load distribution tree and/or using a higher degree (more servers) for the second level of the virtual load distribution tree.
In some embodiments, servers 120 may be homogenous and in other embodiments, servers 120 may be heterogeneous. It should be appreciated that by keeping the complexity of the servers low, special hardware may not be required.
In some embodiments, servers 120 may consist entirely of low-cost commodity servers to create a cost efficient system. It should be appreciated that since the intelligence to route the client service request to the servers 120 is distributed in a plurality of the servers 120, there is no need for a special hardware box to acting as a central load distributor.
In some embodiments, two or more servers 120 may be interconnected via a LAN. In some embodiments two or more servers 120 may be connected over a WAN such as the internet. It should be appreciated that each of servers 120 do not have to be connected in the same way or even via the same types of communication channels and/or protocols.
In some embodiments, two or more servers 120 may be virtual machines. In a further embodiment, a portion of the virtual machine servers may reside on the same physical hardware. In some embodiments, one or more virtual machine servers may include resource distributed over different hardware resources. In a further embodiment, at least a first portion of those hardware resources may be located in a different geographical location than at least a second portion of those hardware resources.
In some embodiments, the virtual load distribution tree may be scalable to dynamically grow or shrink, (i.e., add and delete servers) and/or modify the arrangement of the virtual load distribution tree based on load. Load determinations may be based on a system loading of the virtual load distribution tree and/or loading of one or more servers in the load distribution tree. For example, the load determination may be based on a branch of the virtual load distribution tree beginning with a parent server or based on loading of a single server in the virtual load distribution tree.
In a further embodiment, at least a portion of the servers dynamically added and deleted from the virtual load distribution tree may be added and deleted from a shared resource pool. A shared resource pool may be a collection of resources and/or servers that are shared amongst a number of applications/services. A separate shared resource pool manager may manage the allocation of resources/servers using conventional resource management methods. In a further embodiment, the resource pool manager is a hypervisor managing requests for cloud resources. The hypervisor may provide access to a collection of resources (e.g., a virtual machine) in response to a request from one of the servers 120.
In some embodiments, servers 120 are arranged in a virtual load distribution tree using an energy efficient distributed and elastic load balancing architecture 110 service request manager (not shown). The service request manager may reside on one or more of the servers 120, (e.g., the root server 120-a), and/or on one or more separate servers outside of servers 120. The service request manager may propagate virtual load distribution tree parameters to the servers 120 to create the relationships between servers.
Virtual load distribution tree parameters may include any suitable parameter such as: parameters to help specify when a server should handle a request, parameters to help specify when a server should transmit the request to one of its children servers, parameters to help specify when to spawn new children servers (e.g., in a scalable virtual load distribution tree), parameters to help specify when a child server in a low energy mode should be woken, and/or the like.
In some embodiments, the service request manager dynamically manages the virtual dynamic load tree. In particular, the service request manager may manage the scaling of the virtual load distribution tree as described herein or manage failure recovery of servers. For example, if one of servers 120 fails, that failed server may be excluded from the network. Furthermore, another server may be elected/instantiated to assume the role of the failed server or the load of the failed server may be distributed to the surviving servers. It should be appreciated that such architecture can avoid the link and node bottleneck and be resilient to network fault. It should also be appreciated that the service request manager may communicate with servers 120 over a conventional network (e.g., network 360).
FIG. 4 depicts a flow chart illustrating an embodiment of a method for handling a service request using one of the servers 120. Referring to FIG. 1, a server receives a service request either from a parent server or directly from one of the clients 150 (e.g., step 410 of method 400). If the receiving server determines that a child should handle the request (e.g., step 420 of method 400), the receiving server selects a child to handle the request (e.g., step 430 of method 400), transmits the request to the selected child (e.g., step 440 of method 400) and optionally registers the request in order to facilitate future requests (e.g., step 450 of method 400). If the receiving server determines it should handle the request itself (e.g., step 420 of method 400), the receiving server handles the request (e.g., step 460 of method 400), optionally registers the request in order to facilitate future requests (e.g., step 470 of method 400) and then optionally determines whether to wake up a child server in order to prepare the child server to handle a future service request ( steps 480 and 490 of method 400).
In the method 400, the step 410 includes a receiving server receiving a service request either from a parent server or directly from one of the clients 150. Referring to FIG. 1, a service request from one of the clients 150 is initially received by the root server. The root server may then propagate the service request through the virtual load distribution tree based on a propagation determination. It should be appreciated that the root server and each parent server in the virtual load distribution tree receiving the propagated service request behave the same.
In the method 400, the step 420 includes determining whether the receiving server should propagate the service request to a child server or to handle the service request itself.
In the method 400, the step 430 includes selecting the child server to handle the service request. The child server may be selected using a conventional distribution policy, selected based on a previously registered selection, and/or selected based on a mapping of the requirements of the service request to the capabilities of the children servers.
In the method 400, the step 440 includes transmitting the request to the selected child server. It should be appreciated that the request propagated to the selected child server may be identical to the received request or may be modified by the receiving server.
The method 400 optionally includes step 450. Step 450 includes registering the request in order to facilitate future requests. In particular, for a service request that contains multiple consecutive packets, the packet flow of the selected server may be registered. It should be appreciated that in for some types of service requests, a particular server may be preferred or required to handle all the packets belonging to the same service request.
In the method 400, the step 460 includes handling the service request. For example, conventional network load balancing may distribute TCP/IP-based service requests, such as Web, terminal services, virtual private networking, and streaming media servers.
The method 400 optionally includes step 470. Step 470 includes registering the request in order to facilitate future requests as described above in step 450.
The method 400 optionally includes steps 480 and 490. Steps 480 and 490 include determining whether to wake up a child server in order to prepare the child server to handle a future service request. It should be appreciated that servers need to stay in power-off state or some other deep sleep modes in order to consume zero energy. Conventional techniques such as “wake-on-LAN” may be used to wake up a child server when a service request is being transmitted to the selected server (e.g., step 440); however, waking a server often takes some extended period of time and during this transition period, service requests may not be deliverable. As such the parent server may include step 480 to proactively wake one or more child servers. In particular, a server may determine to proactively wake a child server based on the parent server's load and/or a historical prediction of future load (e.g., FIG. 2 and the accompanying description). Advantageously, proactively waking up one of more child servers may help the parent server avoid overflow conditions.
In some embodiments of the method 400, step 420 includes determining that the receiving server has reached its capacity and can no longer handle further requests. In other embodiments, step 420 includes determining that the receiving server has reached some predetermined load or percentage or load.
In some embodiments of the method 400, step 430 includes using a distribution policy such as: random, round robin, or load-based distribution. In some embodiments of the method 400, step 430 includes selecting the most loaded child that is capable of satisfying the performance constraints in order to create more opportunity for servers to stay in low energy states. In some embodiments of the method 400, step 430 includes selecting child servers proportional to the load capability of each child.
In some embodiments of the method 400, step 430 includes selecting a child server based on a mapping of the capabilities of the child server and the requirements of the service request. For example, a first child server of the parent server may be configured to handle streaming media requests more efficiently than a second child server.
In some embodiments of the method 400, step 430 includes selecting a child server based on the client (e.g., clients 150 of FIG. 1) instantiating the service request. For example, in some configurations, one or more servers (e.g., servers 120 of FIG. 1) may be dedicated to one or more of the clients.
In some embodiments of the method 400, step 450 and/or 470 includes registering the packet flow with the root server so that subsequent packets may be directly delivered to the selected server. Advantageously, by registering the packet flow, delays and selection errors may be lowered.
In some response embodiments of the method 400, step 460 includes replying directly to the requesting client (e.g., client 150-a in FIG. 1).
In a first embodiment of these response embodiments, the destination address is modified in the response. Advantageously, by modifying the destination address to that of the responding server, the requesting client is capable of directing future packets directly to the responding server without following the virtual load distribution tree path.
In a second embodiment of these response embodiments, the destination address of the service request is not modified in the response to the requesting client. Advantageously, by responding with the unmodified destination address, future service requests will still be directed to the root server. In a further embodiment, the servers 120 each contain a unique primary address and a secondary virtual address that is shared amongst the servers 120 in the virtual load distribution tree.
In some embodiments of the method 400, the method may further include determining to turn the parent server to sleep mode. In a further embodiment, the parent server may determine to enter sleep mode based on its loading and the loading of the server's parent. In particular, when a server has no scheduled jobs (e.g., service request tasks) and the server's parent server has a load below a threshold level, the server enters in an energy efficient sleep mode. It should be appreciated that parent and children servers may communicate loading parameters via conventional communication protocols and connections over a conventional network (e.g., network 360 of FIG. 3).
After steps 450 and 490, method 400 returns to step 410 to repeat the process of receiving and processing service requests.
Although primarily depicted and described in a particular sequence, it should be appreciated that the steps shown in method 400 may be performed in any suitable sequence. Moreover, the steps identified by one box may also be performed in more than one place in the sequence.
For example, optional steps 480 and 490 may be performed at any point in the process. Moreover, they may even be performed outside of the process before a service request has been received.
In some embodiments the energy efficient distributed and elastic load balancing architecture 110 of FIG. 1, one or more of the servers 120 includes a service request handler that performs the steps of method 400. In a further embodiment, each of the servers 120 includes a service request handler. It may be appreciated that the service request handler may reside on one or more of the servers 120, (e.g., each of servers 120), and/or on one or more separate servers outside of servers 120
It should be appreciated that steps of various above-described methods can be performed by programmed computers. Herein, some embodiments are also intended to cover program storage devices, e.g., data storage media, which are machine or computer readable and encode machine-executable or computer-executable programs of instructions, wherein said instructions perform some or all of the steps of said above-described methods. The program storage devices may be, e.g., digital memories, magnetic storage media such as a magnetic disks and magnetic tapes, hard drives, or optically readable data storage media. The embodiments are also intended to cover computers programmed to perform said steps of the above-described methods.
FIG. 5 schematically illustrates one embodiment of one of the servers 120 of FIG. 1. The server 120 may perform the functions described herein, e.g., using the method 400. The server 120 includes a processor 510, a data storage 511, and an I/O interface 530.
The processor 510 controls the operation of the server 120. The processor 510 cooperates with the data storage 511.
The data storage 511 may store the loading parameters (e.g., steps 420, 430, 450, 470 and 480 in FIG. 4) and buffer the received and transmitted service requests and inter server communication (e.g., steps 410, 440, 450, 460 and 470 in FIG. 4). The data storage 511 also stores programs 520 executable by the processor 510.
The processor-executable programs 510 may include an I/O interface program 521, a service request handler program 523 and/or a service request manager program 525. Processor 510 cooperates with processor-executable programs 520 to implement the functionality described in FIGS. 1-4 and/or perform the steps of method 400.
The I/O interface 530 is configured for supporting any suitable number of channels supporting any suitable number(s) of sessions (e.g., any suitable number of IP flows), which may be directed between the particular server 120 and one or more clients (e.g., client 150-a-150-c in FIG. 1) and one or more of the servers (e.g., servers 120 in FIG. 1). I/O interface 530 may support any suitable type(s) of communication paths and communication protocols. For example, communication paths may include wireless communications (e.g., GSM and CDMA); wireline communications; packet network communications (e.g., IP); broadband communications (e.g., DSL); and the like, as well as various combinations thereof.
In some embodiments, the server 120 is a special designed network interface card (NIC). In a further embodiment, the NIC provides service request handling. Advantageously, since the NIC handles the incoming service requests, the server host can focus on its core functions and dedicate its resource to provide the service. It should be appreciated that the server host may provide indications of load and other suitable parameters to the NIC.
In some embodiments, the host server may set a busy bit on the NIC to indicate that the host is busy and can no longer accept new requests. In this embodiment, the NIC may automatically forward the new service requests to proper servers based on the virtual load distribution tree. Advantageously, this NIC hardware acceleration can further reduce the service delay.
When processor-executable programs 520 are implemented on a processor 510, the program code segments combine with the processor to provide a unique device that operates analogously to specific logic circuits.
Although depicted and described herein with respect to embodiments in which, for example, programs and logic are stored within the data storage and the memory is communicatively connected to the processor, it should be appreciated that such information may be stored in any other suitable manner (e.g., using any suitable number of memories, storages or databases); using any suitable arrangement of memories, storages or databases communicatively coupled to any suitable arrangement of devices; storing information in any suitable combination of memory(s), storage(s) and/or internal or external database(s); or using any suitable number of accessible external memories, storages or databases. As such, the term data storage referred to herein is meant to encompass all suitable combinations of memory(s), storage(s), and database(s).
The description and drawings merely illustrate the principles of the invention. It will thus be appreciated that those skilled in the art will be able to devise various arrangements that, although not explicitly described or shown herein, embody the principles of the invention and are included within its spirit and scope. Furthermore, all examples recited herein are principally intended expressly to be only for pedagogical purposes to aid the reader in understanding the principles of the invention and the concepts contributed by the inventor(s) to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions. Moreover, all statements herein reciting principles, aspects, and embodiments of the invention, as well as specific examples thereof, are intended to encompass equivalents thereof.
The functions of the various elements shown in the FIGS., including any functional blocks labeled as “processors”, may be provided through the use of dedicated hardware as well as hardware capable of executing software in association with appropriate software. When provided by a processor, the functions may be provided by a single dedicated processor, by a single shared processor, or by a plurality of individual processors, some of which may be shared. Moreover, explicit use of the term “processor” or “controller” should not be construed to refer exclusively to hardware capable of executing software, and may implicitly include, without limitation, digital signal processor (DSP) hardware, network processor, application specific integrated circuit (ASIC), field programmable gate array (FPGA), read only memory (ROM) for storing software, random access memory (RAM), and non volatile storage. Other hardware, conventional and/or custom, may also be included. Similarly, any switches shown in the FIGS. are conceptual only. Their function may be carried out through the operation of program logic, through dedicated logic, through the interaction of program control and dedicated logic, or even manually, the particular technique being selectable by the implementer as more specifically understood from the context.
It should be appreciated that any block diagrams herein represent conceptual views of illustrative circuitry embodying the principles of the invention. Similarly, it should be appreciated that any flow charts, flow diagrams, state transition diagrams, pseudo code, and the like represent various processes which may be substantially represented in computer readable medium and so executed by a computer or processor, whether or not such computer or processor is explicitly shown.

Claims (10)

What is claimed is:
1. A method for providing energy efficient and elastic load balancing at a parent server, comprising:
at a processor communicatively coupled to a data storage, receiving a plurality of service requests instantiated by one or more clients;
determining, by the processor in cooperation with the data storage, a plurality of service handling decisions based on the service requests, a plurality of determined delays between the parent server and a plurality of child servers, and a determined energy savings potential of the parent and the plurality of child servers, the plurality of service handling decisions corresponding to at least a portion of the plurality of service requests, wherein the parent server and the plurality of child servers are arranged in a virtual load distribution tree based on a plurality of initial determined delays between the parent server and the plurality of child servers and an initial determined energy savings potential of the parent and the plurality of child servers;
selecting, by the processor in cooperation with the data storage, a child server of the plurality of child servers based on a first of the service handling decisions and transmitting a first propagated service request based on a first service request, the first service request corresponding to the first service handling decision;
selecting, by the processor in cooperation with the data storage, the parent server based on a second of the service handling decisions and handling a second service request, the second service request corresponding to the second service handling decision;
determining, by the processor in cooperation with the data storage, a parent load based on the second service request, the parent load indicating a loading of the parent server; and
proactively waking, by the processor in cooperation with the data storage and associated with processing the second service request, a second child server of the plurality of child servers based on the parent load and a server load threshold, wherein the proactively awakened child server does not need to service the second service request.
2. The method of claim 1, wherein the act of handling the second service request comprises: responding directly to the instantiating client of the second service request.
3. The method of claim 1, further comprising:
determining, by the processor in cooperation with the data storage, parent load based on at least one of the plurality of service requests, the parent load indicating a loading of the parent server;
receiving, by the processor in cooperation with the data storage, a parent-parent load, the parent-parent load indicating a loading of a parent-parent server, wherein the parent-parent server is parent to the parent server; and
switching, by the processor in cooperation with the data storage, operation of the parent server to a sleep mode based on the parent load, the parent-parent load and a parent-parent load threshold.
4. The method of claim 1, further comprising:
registering, by the processor in cooperation with the data storage, the child server and at least one associated selection parameter, the at least one associated selection parameter being based on the first service request;
selecting, by the processor in cooperation with the data storage, the child server based on a third service request of the plurality of service requests and the at least one registered associated selection parameters; and
transmitting a third propagated service request based on a third service request.
5. The method of claim 1, wherein selection of the child server is further based on the child server of the plurality of child servers having the highest load of the plurality of child servers that is capable of satisfying one or more performance constraints.
6. An energy efficient and elastic load balancing apparatus, comprising:
a data storage; and
a processor communicatively coupled to the data storage, the processor configured to:
receive a plurality of service requests instantiated by one or more clients;
determine a plurality of service handling decisions based on the service requests, a plurality of determined delays between the parent server and a plurality of child servers, and a determined energy savings potential of the parent and the plurality of child servers, the plurality of service handling decisions corresponding to at least a portion of the plurality of service requests, wherein the parent server and the plurality of child servers are arranged in a virtual load distribution tree based on a plurality of initial determined delays between the parent server and the plurality of child servers and an initial determined energy savings potential of the parent and the plurality of child servers;
select a child server of the plurality of child servers based on a first of the service handling decisions and transmit a first propagated service request based on a first service request, the first service request corresponding to the first service handling decision;
select the parent server based on a second of the service handling decisions and handle a second service request, the second service request corresponding to the second service handling decision;
determine a parent load based on the second service request, the parent load indicating a loading of the parent server; and
proactively waking a second child server of the plurality of child servers based on the parent load and a server load threshold, wherein the proactively awakened second child server does not need to service the second service request.
7. The apparatus of claim 6, wherein handling of the second service request comprises further configuring the processor to: respond directly to an instantiating client of the second service request.
8. The apparatus of claim 6, wherein the processor is further configured to:
determine the parent load based on at least one of the plurality of service requests, the parent load indicating a loading of the parent server;
receive a parent-parent load, the parent-parent load indicating a loading of a parent-parent server, wherein the parent-parent server is parent to the parent server; and
switch operation of the parent server to a sleep mode based on the parent load, the parent-parent load and a parent-parent load threshold.
9. The apparatus of claim 6, wherein the processor is further configured to:
register the child server and at least one associated selection parameter, the at least one associated selection parameter being based on the first service request;
select the child server based on a third service request of the plurality of service requests and the at least one registered associated selection parameters; and
transmit a third propagated service request based on a third service request.
10. The apparatus of claim 6, wherein the selection of the child server is based on a proportion of a child server load of the child server and at least one other child server load corresponding to at least one other child server of the parent server.
US13/334,141 2011-12-22 2011-12-22 Method and apparatus for energy efficient distributed and elastic load balancing Expired - Fee Related US9223630B2 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
US13/334,141 US9223630B2 (en) 2011-12-22 2011-12-22 Method and apparatus for energy efficient distributed and elastic load balancing
PCT/US2012/065753 WO2013095833A1 (en) 2011-12-22 2012-11-19 Method and apparatus for energy efficient distributed and elastic load balancing
EP12795692.8A EP2795468A1 (en) 2011-12-22 2012-11-19 Method and apparatus for energy efficient distributed and elastic load balancing
CN201280063285.2A CN104011686A (en) 2011-12-22 2012-11-19 Method And Apparatus For Energy Efficient Distributed And Elastic Load Balancing
KR1020147017088A KR20140093733A (en) 2011-12-22 2012-11-19 Method and apparatus for energy efficient distributed and elastic load balancing
JP2014549058A JP5978313B2 (en) 2011-12-22 2012-11-19 Method and apparatus for energy efficient distributed elastic load balancing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/334,141 US9223630B2 (en) 2011-12-22 2011-12-22 Method and apparatus for energy efficient distributed and elastic load balancing

Publications (2)

Publication Number Publication Date
US20130166943A1 US20130166943A1 (en) 2013-06-27
US9223630B2 true US9223630B2 (en) 2015-12-29

Family

ID=47291256

Family Applications (1)

Application Number Title Priority Date Filing Date
US13/334,141 Expired - Fee Related US9223630B2 (en) 2011-12-22 2011-12-22 Method and apparatus for energy efficient distributed and elastic load balancing

Country Status (6)

Country Link
US (1) US9223630B2 (en)
EP (1) EP2795468A1 (en)
JP (1) JP5978313B2 (en)
KR (1) KR20140093733A (en)
CN (1) CN104011686A (en)
WO (1) WO2013095833A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10496432B1 (en) 2019-01-22 2019-12-03 Capital One Services, Llc Methods, mediums, and systems for provisioning application services
US11436058B2 (en) * 2016-11-17 2022-09-06 International Business Machines Corporation Workload balancing to achieve a global workload balance

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9223630B2 (en) 2011-12-22 2015-12-29 Alcatel Lucent Method and apparatus for energy efficient distributed and elastic load balancing
US9319274B1 (en) * 2012-03-29 2016-04-19 Emc Corporation Method and system for dynamic provisioning using server dormant mode for virtual server dormancy
US20140040479A1 (en) * 2012-07-20 2014-02-06 Paul Steven Dunn Method for a self organizing load balance in a cloud file server network
US20150163297A1 (en) * 2012-08-06 2015-06-11 Nec Corporation Load control system, load control server, information processing system, load control method and recording medium
US20140331078A1 (en) * 2013-01-24 2014-11-06 Uri Cohen Elastic Space-Based Architecture application system for a cloud computing environment
US20150081400A1 (en) * 2013-09-19 2015-03-19 Infosys Limited Watching ARM
US10078361B2 (en) 2014-10-08 2018-09-18 Apple Inc. Methods and apparatus for running and booting an inter-processor communication link between independently operable processors
KR101595948B1 (en) 2014-12-11 2016-02-29 충북대학교 산학협력단 Load Balancing Method of P2P Networks by Load Threshold Adjustment and Device Implementing the Same
CN104714759B (en) * 2015-02-15 2018-05-01 四川长虹电器股份有限公司 A kind of method and load-balanced server group of information storage
CN105262990A (en) * 2015-10-10 2016-01-20 浪潮电子信息产业股份有限公司 Cloud computation based kindergarten video real-time monitoring system
US10085214B2 (en) * 2016-01-27 2018-09-25 Apple Inc. Apparatus and methods for wake-limiting with an inter-device communication link
US20170230457A1 (en) * 2016-02-05 2017-08-10 Microsoft Technology Licensing, Llc Idempotent Server Cluster
US20170318121A1 (en) * 2016-04-29 2017-11-02 Hewlett Packard Enterprise Server request handlers
US11054887B2 (en) * 2017-12-28 2021-07-06 Advanced Micro Devices, Inc. System-wide low power management
US10331612B1 (en) 2018-01-09 2019-06-25 Apple Inc. Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors
US10430352B1 (en) 2018-05-18 2019-10-01 Apple Inc. Methods and apparatus for reduced overhead data transfer with a shared ring buffer
CN108848479A (en) * 2018-07-19 2018-11-20 北京车联天下信息技术有限公司 Car networking service load balancing method, device and equipment
CN114546095B (en) * 2022-04-25 2022-07-01 沐曦科技(北京)有限公司 Master selection method based on multiple computing devices

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07168790A (en) 1993-12-15 1995-07-04 Oki Electric Ind Co Ltd Information processor
JP2003030078A (en) 2001-07-12 2003-01-31 Mega Chips Corp Information distribution system, information distributing method and program
US20050022202A1 (en) 2003-07-09 2005-01-27 Sun Microsystems, Inc. Request failover mechanism for a load balancing system
US20050114862A1 (en) * 2003-11-21 2005-05-26 Chatschik Bisdikian Adaptive load distribution in managing dynamic and transient data for distributed applications
US7249179B1 (en) 2000-11-09 2007-07-24 Hewlett-Packard Development Company, L.P. System for automatically activating reserve hardware component based on hierarchical resource deployment scheme or rate of resource consumption
US20080140989A1 (en) 2006-08-13 2008-06-12 Dragos Dudau Multiprocessor Architecture With Hierarchical Processor Organization
US20100235654A1 (en) * 2008-03-07 2010-09-16 Malik Naim R Methods of achieving cognizant power management
US20100262975A1 (en) * 2009-04-13 2010-10-14 International Business Machines Corporation Automated workload selection
US20110047555A1 (en) * 2009-08-18 2011-02-24 International Business Machines Corporation Decentralized load distribution in an event-driven system
US20110047554A1 (en) * 2009-08-18 2011-02-24 International Business Machines Corporation Decentralized load distribution to reduce power and/or cooling costs in an event-driven system
US20110126206A1 (en) * 2008-10-30 2011-05-26 Hitachi, Ltd. Operations management apparatus of information-processing system
JP2011118525A (en) 2009-12-01 2011-06-16 Hitachi Ltd Server management apparatus, server management method, and server management program
WO2011107163A1 (en) 2010-03-05 2011-09-09 Telefonaktiebolaget L M Ericsson (Publ) A processing system with processing load control
US20110321041A1 (en) * 2010-06-29 2011-12-29 Bhat Santhosh R Method and system for migrating a virtual machine
US20130125097A1 (en) * 2011-11-15 2013-05-16 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
WO2013095833A1 (en) 2011-12-22 2013-06-27 Alcatel Lucent Method and apparatus for energy efficient distributed and elastic load balancing

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07168790A (en) 1993-12-15 1995-07-04 Oki Electric Ind Co Ltd Information processor
US7249179B1 (en) 2000-11-09 2007-07-24 Hewlett-Packard Development Company, L.P. System for automatically activating reserve hardware component based on hierarchical resource deployment scheme or rate of resource consumption
JP2003030078A (en) 2001-07-12 2003-01-31 Mega Chips Corp Information distribution system, information distributing method and program
US20050022202A1 (en) 2003-07-09 2005-01-27 Sun Microsystems, Inc. Request failover mechanism for a load balancing system
US20050114862A1 (en) * 2003-11-21 2005-05-26 Chatschik Bisdikian Adaptive load distribution in managing dynamic and transient data for distributed applications
US20080140989A1 (en) 2006-08-13 2008-06-12 Dragos Dudau Multiprocessor Architecture With Hierarchical Processor Organization
US20100235654A1 (en) * 2008-03-07 2010-09-16 Malik Naim R Methods of achieving cognizant power management
US20110126206A1 (en) * 2008-10-30 2011-05-26 Hitachi, Ltd. Operations management apparatus of information-processing system
US20100262975A1 (en) * 2009-04-13 2010-10-14 International Business Machines Corporation Automated workload selection
US20110047555A1 (en) * 2009-08-18 2011-02-24 International Business Machines Corporation Decentralized load distribution in an event-driven system
US20110047554A1 (en) * 2009-08-18 2011-02-24 International Business Machines Corporation Decentralized load distribution to reduce power and/or cooling costs in an event-driven system
JP2011118525A (en) 2009-12-01 2011-06-16 Hitachi Ltd Server management apparatus, server management method, and server management program
WO2011107163A1 (en) 2010-03-05 2011-09-09 Telefonaktiebolaget L M Ericsson (Publ) A processing system with processing load control
US20110321041A1 (en) * 2010-06-29 2011-12-29 Bhat Santhosh R Method and system for migrating a virtual machine
US20130125097A1 (en) * 2011-11-15 2013-05-16 Global Supercomputing Corporation Method and system for converting a single-threaded software program into an application-specific supercomputer
WO2013095833A1 (en) 2011-12-22 2013-06-27 Alcatel Lucent Method and apparatus for energy efficient distributed and elastic load balancing

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Patent Abstracts of Japan, available at JPO, Publication No. 07-168790, published Jul. 4, 1995, 1 page, corresponding to JPH07168790A as cited in Foreign Patent Documents.
Patent Abstracts of Japan, available at JPO, Publication No. 2003-030078, published Jan. 31, 2003, 1 page, corresponding to JP200330078A as cited in Foreign Patent Documents.
Patent Abstracts of Japan, available at JPO, Publication no. 20111-118525, published Jun. 16, 2011, 1 page corresponding to JP2011118525A as cited in Foreign Patent Documents.

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11436058B2 (en) * 2016-11-17 2022-09-06 International Business Machines Corporation Workload balancing to achieve a global workload balance
US10496432B1 (en) 2019-01-22 2019-12-03 Capital One Services, Llc Methods, mediums, and systems for provisioning application services
US10599464B1 (en) * 2019-01-22 2020-03-24 Capital One Services, Llc Methods, mediums, and systems for provisioning application services

Also Published As

Publication number Publication date
WO2013095833A1 (en) 2013-06-27
US20130166943A1 (en) 2013-06-27
CN104011686A (en) 2014-08-27
JP2015503781A (en) 2015-02-02
JP5978313B2 (en) 2016-08-24
EP2795468A1 (en) 2014-10-29
KR20140093733A (en) 2014-07-28

Similar Documents

Publication Publication Date Title
US9223630B2 (en) Method and apparatus for energy efficient distributed and elastic load balancing
Tang et al. Migration modeling and learning algorithms for containers in fog computing
Hoang et al. FBRC: Optimization of task scheduling in fog-based region and cloud
Li et al. SSLB: self-similarity-based load balancing for large-scale fog computing
Semmoud et al. Load balancing in cloud computing environments based on adaptive starvation threshold
Kansal et al. Artificial bee colony based energy‐aware resource utilization technique for cloud computing
Singh et al. Leveraging energy‐efficient load balancing algorithms in fog computing
US20100262695A1 (en) System and Method for Allocating Resources in a Distributed Computing System
US20210045091A1 (en) Intelligent and optimal resource selection within a network slice
US20150006630A1 (en) Decentralized request routing
WO2021120633A1 (en) Load balancing method and related device
Achary et al. Dynamic job scheduling using ant colony optimization for mobile cloud computing
CN104111874A (en) High-concurrence high-reliability load balance software architecture design of virtual mainframe in cloud computing environment
JP2016051446A (en) Calculator system, calculator, and load dispersing method and program
Tarahomi et al. A prediction‐based and power‐aware virtual machine allocation algorithm in three‐tier cloud data centers
Ventrella et al. Load profiling and migration for effective cyber foraging in disaster scenarios with formica
Li et al. Research on energy‐saving virtual machine migration algorithm for green data center
Bisht et al. Survey on Load Balancing and Scheduling Algorithms in Cloud Integrated Fog Environment
Batra et al. A brief overview of load balancing techniques in fog computing environment
Ashalatha et al. Dynamic load balancing methods for resource optimization in cloud computing environment
Wen Energy-aware dynamical hosts and tasks assignment for cloud computing
Jing et al. Customer satisfaction‐aware scheduling for utility maximization on geo‐distributed data centers
Khani et al. A self‐organized load balancing mechanism for cloud computing
Fadlallah et al. Towards mobile collaborative autonomous networks using peer-to-peer communication
Fayyaz et al. Energy efficient resource scheduling through VM consolidation in cloud computing

Legal Events

Date Code Title Description
AS Assignment

Owner name: ALCATEL-LUCENT USA INC., NEW JERSEY

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SONG, HAOYU;HAO, FANG;LAKSHMAN, TIRUNELL V.;REEL/FRAME:027431/0469

Effective date: 20111216

AS Assignment

Owner name: ALCATEL LUCENT, FRANCE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ALCATEL-LUCENT USA INC.;REEL/FRAME:029739/0179

Effective date: 20130129

AS Assignment

Owner name: CREDIT SUISSE AG, NEW YORK

Free format text: SECURITY INTEREST;ASSIGNOR:ALCATEL-LUCENT USA INC.;REEL/FRAME:030510/0627

Effective date: 20130130

AS Assignment

Owner name: ALCATEL-LUCENT USA INC., NEW JERSEY

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG;REEL/FRAME:033949/0016

Effective date: 20140819

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: OMEGA CREDIT OPPORTUNITIES MASTER FUND, LP, NEW YORK

Free format text: SECURITY INTEREST;ASSIGNOR:WSOU INVESTMENTS, LLC;REEL/FRAME:043966/0574

Effective date: 20170822

Owner name: OMEGA CREDIT OPPORTUNITIES MASTER FUND, LP, NEW YO

Free format text: SECURITY INTEREST;ASSIGNOR:WSOU INVESTMENTS, LLC;REEL/FRAME:043966/0574

Effective date: 20170822

AS Assignment

Owner name: WSOU INVESTMENTS, LLC, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ALCATEL LUCENT;REEL/FRAME:044000/0053

Effective date: 20170722

AS Assignment

Owner name: BP FUNDING TRUST, SERIES SPL-VI, NEW YORK

Free format text: SECURITY INTEREST;ASSIGNOR:WSOU INVESTMENTS, LLC;REEL/FRAME:049235/0068

Effective date: 20190516

AS Assignment

Owner name: WSOU INVESTMENTS, LLC, CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:OCO OPPORTUNITIES MASTER FUND, L.P. (F/K/A OMEGA CREDIT OPPORTUNITIES MASTER FUND LP;REEL/FRAME:049246/0405

Effective date: 20190516

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20191229

AS Assignment

Owner name: OT WSOU TERRIER HOLDINGS, LLC, CALIFORNIA

Free format text: SECURITY INTEREST;ASSIGNOR:WSOU INVESTMENTS, LLC;REEL/FRAME:056990/0081

Effective date: 20210528

AS Assignment

Owner name: WSOU INVESTMENTS, LLC, CALIFORNIA

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:TERRIER SSC, LLC;REEL/FRAME:056526/0093

Effective date: 20210528