US20060242647A1 - Dynamic application placement under service and memory constraints - Google Patents
Dynamic application placement under service and memory constraints Download PDFInfo
- Publication number
- US20060242647A1 US20060242647A1 US11/110,766 US11076605A US2006242647A1 US 20060242647 A1 US20060242647 A1 US 20060242647A1 US 11076605 A US11076605 A US 11076605A US 2006242647 A1 US2006242647 A1 US 2006242647A1
- Authority
- US
- United States
- Prior art keywords
- application
- server
- applications
- demand
- servers
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Definitions
- Service requests are satisfied through the execution of one or more instances of each of a set of applications.
- Applications include access to static and dynamic Web content, enterprise applications, and access to database servers.
- Applications may be provided by HTTP (Hypertext Transfer Protocol) Web servers, servlets, Enterprise Java Beans (EJB), or database queries.
- HTTP Hypertext Transfer Protocol
- EJB Enterprise Java Beans
- the application placement management software deploys additional instances of the application in order to accommodate the increased load. It is imperative to have an on-demand management environment allowing instances of applications to be dynamically deployed and removed. The problem is to dynamically change the number of application instances so as to satisfy the dynamic load while minimizing the overhead of starting and stopping application instances.
- load-independent requirements of resources required to run an application
- load-dependent requirements which are a function of the external load or demand placed on the application.
- load-independent requirements are memory, communication channels, and storage.
- load-dependent requirements are current or projected request rate, CPU (Central Processing Unit) cycles, disk activity, and number of execution threads.
- a load-independent capacity which represents the amount of resources available to host applications on the server
- a load-dependent capacity which represents the available capacity to process requests for the applications' services.
- This invention addresses the problem of automatic instantiation of application processes in a server farm to allow the server farm to dynamically adjust the number of application processes as the load for the server processes fluctuates.
- Each server machine can run some number of application processes. The use of these applications processes is through request messages, to which there may be replies.
- the collection of servers is known as a cluster.
- a server machine can run only a limited number of application processes. Request messages for a particular application are split among all instances of that application. Therefore, when application instances use different servers, the size of a cluster directly impacts the amount of load that the cluster can sustain without performance degradation.
- Dynamic allocation techniques available today e.g., IBM Tivoli Intelligent ThinkDynamics Orchestrator
- assign applications to server clusters Then, servers are reallocated among clusters based on the offered load.
- the static component decides the number of copies needed for each movie by first solving an apportionment problem and then solving the problem of heuristically assigning the copies onto storage groups to limit the number of assignment changes.
- the dynamic component solves a discrete class-constrained resource allocation problem for optimal load balancing, and then introduces an algorithm for dynamically shifting the load among servers (i.e., migrating existing video streams).
- the present invention extends the capabilities of application server middleware with the ability to dynamically provision enterprise applications. Compared to traditional techniques, the invention allows fine granularity of resource allocation to applications.
- the decision process for dynamic placement of applications under two or more simultaneous resource requirements: some that are dependent on the loads placed on the applications and some that are independent.
- the demand (load) for applications changes over time and the goal is to satisfy all the demand while changing the solution (assignment of applications to servers) as little as possible.
- We model the decision process as an optimization problem. We design an algorithm to solve this optimization problem.
- FIG. 1 is a block diagram of an exemplary system implementing the present invention
- FIG. 2 is a flow diagram illustrating the logic of the Initial Placement Algorithm according to the invention.
- FIG. 3 is a flow diagram illustrating the logic of the Dynamic Placement Algorithm according to the invention.
- FIG. 1 The invention is implemented in a system as generally illustrated in FIG. 1 .
- This system comprises a cluster of servers 10 1 , 10 2 , 10 3 and 10 4 across which application clusters 11 1 , 11 2 and 11 3 are distributed.
- These application clusters are designated by the letters “A”, “B” and “C” running on the several servers.
- application cluster “A” is running on servers 10 1 and 10 2
- application cluster “C” is running on servers 10 3 and 10 4
- application cluster “B” is running on all four servers.
- four servers and three application clusters are used here for illustrative purposes only and that, in practice, there may be any number of servers and any number of application clusters.
- Requests for specific ones of the application clusters from various clients are received by a request router 12 and directed to the appropriate application cluster, as shown in FIG. 1 .
- the invention provides a placement controller 13 which receives input from an application workload predictor 14 and an application profiler 15 . From the application workload predictor 14 , the placement controller 13 receives a workload prediction, and from the application profiler 15 , the placement controller 13 receives application resource requirements. The placement controller 13 generates a desired placement which is executed by the placement executor 16 . The placement executor, in turn, feeds back to the placement controller 13 information on the current placement of applications.
- the dynamic application placement problem is formulated as follows: We are given m servers 1 , . . . , m with memory capacities ⁇ 1 , . . . , ⁇ m and service capacities (number of requests that can be served per unit time) ⁇ 1 , . . . , ⁇ m . We are also given n applications 1, . . . , n with memory requirements ⁇ 1 , . . . , ⁇ m . Application j must serve some number of requests ⁇ jt in time interval t.
- a feasible solution for the problem at time step t is an assignment of applications' workloads to servers.
- Each application can be assigned to (replicated on) multiple servers.
- the solution For every server i that an application j is assigned to, the solution must specify the number ⁇ itj of requests this server processes for this application.
- ⁇ i ⁇ itj must equal ⁇ jt for all applications j and time steps t.
- the memory and processing constraints For every server the memory and processing constraints must be respected.
- the sum of memory requirements of applications assigned to a server cannot exceed its memory ⁇ i and ⁇ i ⁇ itj , i.e., the total number of requests served by this server during the time step t cannot exceed ⁇ i .
- each assignment (copy) of an application to a server incurs the full memory costs, whereas the processing load is divided among the copies.
- the objective is to find a solution that time step t which is not very different from the solution at time step t-1. More formally, with every feasible solution we associate a bipartite graph (A, S, E t ) where A represents the set of that application j is assigned to (or has copy on) server i at time step t.
- Our objective function is to minimize
- the algorithm splits the demand of at most one application between this server and some other servers.
- the total number of application-to-server mappings is at most n+m ⁇ 1.
- the initial placement algorithm is illustrated in the flow diagram of FIG. 2 .
- the initial conditions in function block 21 are the memory and demand capacities for the servers and the memory and demand requirements for the applications.
- function block 22 we order all servers by decreasing value of their densities ⁇ i / ⁇ i , and order applications by decreasing densities ⁇ jt / ⁇ j .
- function block 23 we load the highest density applications to the highest density server i which has enough memory for that application.
- decision block 24 If the answer in decision block 24 is “no”, then in the function block 27 we delete server from the list, assign part of the demand of the application to that server, compute new application density with remaining demand and reinsert application to the sorted list to the place corresponding to its new density and proceed to the decision block 26 .
- a test is made in decision block 26 to determine if the application list is empty and, if not, the process returns to function block 23 .
- the residual instance results in a new set of edges, i.e., application-to-server mappings (applications which must be loaded onto servers), which we simply add to the existing edges.
- the total cost of the new solution is the number of new edges used by the heuristic to route the residual demand. This should not be large since our heuristic is conservative in defining new edges.
- edge should be deleted.
- a good heuristic choice should be the edge which minimizes the ratio of the total demand routed through this edge (i.e., the flow on this edge) divided by the memory requirement of the corresponding application.
- the intuition for this is that we would like to delete an edge which uses memory in the most inefficient way.
- the incremental placement algorithm is illustrated in the flow diagram of FIG. 3 .
- the initial conditions in function block 31 are the placement of copies of applications to servers from the previous step, server demand and memory capacities and applications demand and memory requirements.
- function block 32 we define a bipartite graph between set of servers and the set of applications with an edge between every application-server pair such that server has a copy of that application.
- function block 33 we solve the bipartite flow problem on the bipartite graph, where application demand defines amount of flow located at that vertex and servers demand capacity defines capacity of corresponding vertex.
- decision block 34 we check if there is a feasible solution to the bipartite flow problem. If there is one we proceed to the function block 35 tells that the problem is solved. If not, we proceed to the function block 36 .
- function block 36 we define an Initial Placement Problem using remaining servers resources and unrouted demand to define memory and demand capacities and requirements in the new instance. Then in decision block 37 we check if the solution found is feasible, if yes, then in function block 38 , we define and out the final solution.
- a Websphere component known as the placement controller receives dynamic information about the load-independent and load-dependent requirements of the various applications, and the load-independent and load-dependent capacities of the various servers. We used memory size and CPU cycles/sec as the representative load-independent and load-dependent parameters, respectively.
- the placement controller is aware of the configuration, i.e., the mapping of applications onto servers in a given Websphere cell. Upon need, or periodically, the placement controller executes our algorithm in order to determine the change in application placement configuration in response to changes in loads and characteristics of the applications and servers. Then the placement controller realizes the change, automatically or in a supervised mode, through the execution of scripts to start and stop applications servers.
- the system includes an application workload predictor and an application profiler.
- the application workload predictor utilizes historical information regarding the offered load to produce a workload prediction for each application supported by the server farm. For instance, the workload prediction can be characterized by the arrival rate of requests to a given application.
- the application profiler produces a set of application resource requirements by estimating the amount of server resources required by a single request of each application.
- the application resource requirements includes, for example, the number of CPU cycles required to process a request.
- the placement controller utilizes the workload prediction and the application resource requirements provided by the application workload predictor and the application profiler to compute predicted load-dependent resource requirements for each application. Considering the predicted resource requirements for each application, the given capacities of each of the server computing nodes in the server farm, and the current application placement, the placement controller uses the algorithm presented here to compute a new placement of applications.
Abstract
An optimization problem models the dynamic placement of applications on servers under two types of simultaneous resource requirements, those that are dependent on the loads placed on the applications and those that are independent. The demand (load) for applications changes over time and the goal is to satisfy all the demand while changing the solution (assignment of applications to servers) as little as possible.
Description
- 1. Field of the Invention
- The present invention is directed to the optimization of dynamic placement of computing applications on servers to satisfy all the applications demand while changing the assignment of applications as little as possible.
- 2. Background Description
- With the proliferation of the World Wide Web (WWW or simply the “Web”) and outsourcing of data services, computing service centers have increased in both size and complexity. Such centers provide a variety of services; for example, Web content hosting, e-commerce, Web applications, and business applications. Managing such centers is challenging since a service provider must manage the quality of service provided to competing applications in the face of unpredictable load intensity and distribution among the various offered services and applications. Several management software packages which deal with these operational management issues have been introduced. These software systems provide functions including monitoring, demand estimation, load balancing, dynamic provisioning, service differentiation, optimized resource allocation, and dynamic application placement. The last function, namely dynamic application placement, is the subject of this invention.
- Service requests are satisfied through the execution of one or more instances of each of a set of applications. Applications include access to static and dynamic Web content, enterprise applications, and access to database servers. Applications may be provided by HTTP (Hypertext Transfer Protocol) Web servers, servlets, Enterprise Java Beans (EJB), or database queries. When the number of service requests for a particular application increases, the application placement management software deploys additional instances of the application in order to accommodate the increased load. It is imperative to have an on-demand management environment allowing instances of applications to be dynamically deployed and removed. The problem is to dynamically change the number of application instances so as to satisfy the dynamic load while minimizing the overhead of starting and stopping application instances.
- We characterize an application by two types of parameters: (1) load-independent requirements of resources required to run an application, and (2) load-dependent requirements which are a function of the external load or demand placed on the application. Examples of load-independent requirements are memory, communication channels, and storage. Examples of load-dependent requirements are current or projected request rate, CPU (Central Processing Unit) cycles, disk activity, and number of execution threads.
- We also characterize a server by two parameters: (1) a load-independent capacity which represents the amount of resources available to host applications on the server, and (2) a load-dependent capacity which represents the available capacity to process requests for the applications' services.
- This invention addresses the problem of automatic instantiation of application processes in a server farm to allow the server farm to dynamically adjust the number of application processes as the load for the server processes fluctuates. Each server machine can run some number of application processes. The use of these applications processes is through request messages, to which there may be replies. The collection of servers is known as a cluster. A server machine can run only a limited number of application processes. Request messages for a particular application are split among all instances of that application. Therefore, when application instances use different servers, the size of a cluster directly impacts the amount of load that the cluster can sustain without performance degradation.
- When the size of a cluster is insufficient, the application users experience performance degradation or failures, resulting in the violation of Service Level Agreements (SLA). Today, to avoid SLA violation, application providers must overprovision the number of application instances to handle peak load. This results in poor resource utilization during normal operation conditions. Dynamic allocation alleviates the problem of wasted capacity by automatically reallocating servers among applications based on their current load and SLA objectives.
- Dynamic allocation techniques available today (e.g., IBM Tivoli Intelligent ThinkDynamics Orchestrator), assign applications to server clusters. Then, servers are reallocated among clusters based on the offered load.
- These techniques have several limitations:
- (1) When only one application can be assigned to a cluster at any given time, the granularity of resource allocation is coarse. The approach is wasteful when an application demand is not sufficient to utilize an entire server.
- (2) When more than one application can be assigned to a cluster, all applications in the cluster must be running concurrently. This limits the number of applications assigned to a cluster by the memory capacity of the smallest server in the cluster. This results in wasted server capacity, as an application must execute on all servers in the cluster even if its workload could be satisfied by a subset of the servers in the cluster. Typically, only a limited number of applications can be executed on a server at a time and therefore regardless of the number of servers in the cluster, only a few applications can be served by the cluster.
- (3) In the process of server reallocation from one application to another, the old application has to be uninstalled, the server reconfigured, and the new application has to be installed. Usually, network configuration also needs to change. This reconfiguration process may be time-consuming and therefore cannot be performed frequently, which results in lower responsiveness to workload changes.
- The problem of optimally placing replicas of objects on servers, constrained by object and server sizes as well as capacity to satisfy a fluctuating demand for objects, has appeared in a number of fields related to distributed computing. In managing video-on-demand systems, replicas of movies are placed on storage devices and streamed by video servers to a dynamic set of clients with a highly skewed movie selection distribution. The goal is to maximize the number of admitted video stream requests. Several movie placement and video stream migration policies have been studied. A disk load balancing criterion which combines a static component and a dynamic component is described by J. L. Wolf, P. S. Yu, and H. Shachnai in “Disk load balancing for video-on-demand systems”, ACM/Springer Multimedia Systems Journal, 5(6):358-370, 1997. The static component decides the number of copies needed for each movie by first solving an apportionment problem and then solving the problem of heuristically assigning the copies onto storage groups to limit the number of assignment changes. The dynamic component solves a discrete class-constrained resource allocation problem for optimal load balancing, and then introduces an algorithm for dynamically shifting the load among servers (i.e., migrating existing video streams).
- Similar problems have been studied in theoretical optimization literature. The special case of our problem with uniform memory requirements was studied by H. Schachnai and T. Tamir in “On two class-constrained versions of the multiple knapsack problem”, Algorithmica 29 (2001), 442-467, and H. Schachnai, T. Tamir, in “Noah Bagels: Some Combinatorial Aspects”, International Conference on FUN with Algorithms (FUN), Isola d'Elba, June 1998, where some approximation algorithms were suggested. Related optimization problems include bin packing, multiple knapsack and multi-dimensional knapsack.
- The present invention extends the capabilities of application server middleware with the ability to dynamically provision enterprise applications. Compared to traditional techniques, the invention allows fine granularity of resource allocation to applications. In the present invention we model the decision process for dynamic placement of applications under two or more simultaneous resource requirements: some that are dependent on the loads placed on the applications and some that are independent. The demand (load) for applications changes over time and the goal is to satisfy all the demand while changing the solution (assignment of applications to servers) as little as possible. We model the decision process as an optimization problem. We design an algorithm to solve this optimization problem.
- The foregoing and other objects, aspects and advantages will be better understood from the following detailed description of a preferred embodiment of the invention with reference to the drawings, in which:
-
FIG. 1 is a block diagram of an exemplary system implementing the present invention; -
FIG. 2 is a flow diagram illustrating the logic of the Initial Placement Algorithm according to the invention; and -
FIG. 3 is a flow diagram illustrating the logic of the Dynamic Placement Algorithm according to the invention. - The invention is implemented in a system as generally illustrated in
FIG. 1 . This system comprises a cluster ofservers servers servers request router 12 and directed to the appropriate application cluster, as shown inFIG. 1 . - As will be described in more detail herein below, the invention provides a
placement controller 13 which receives input from anapplication workload predictor 14 and anapplication profiler 15. From theapplication workload predictor 14, theplacement controller 13 receives a workload prediction, and from theapplication profiler 15, theplacement controller 13 receives application resource requirements. Theplacement controller 13 generates a desired placement which is executed by theplacement executor 16. The placement executor, in turn, feeds back to theplacement controller 13 information on the current placement of applications. - The dynamic application placement problem is formulated as follows: We are given m servers 1, . . . , m with memory capacities Γ1, . . . , Γm and service capacities (number of requests that can be served per unit time) Ω1, . . . , Ωm. We are also given n applications 1, . . . , n with memory requirements γ1, . . . , γm. Application j must serve some number of requests ωjt in time interval t.
- A feasible solution for the problem at time step t is an assignment of applications' workloads to servers. Each application can be assigned to (replicated on) multiple servers. For every server i that an application j is assigned to, the solution must specify the number ωitj of requests this server processes for this application. Σi ωitj must equal ωjt for all applications j and time steps t. For every server the memory and processing constraints must be respected. The sum of memory requirements of applications assigned to a server cannot exceed its memory Γi and Σi ωitj, i.e., the total number of requests served by this server during the time step t cannot exceed Ωi. Note that each assignment (copy) of an application to a server incurs the full memory costs, whereas the processing load is divided among the copies.
- The objective is to find a solution that time step t which is not very different from the solution at time step t-1. More formally, with every feasible solution we associate a bipartite graph (A, S, Et) where A represents the set of that application j is assigned to (or has copy on) server i at time step t. Our objective function is to minimize |EtØEt−t|, i.e., the cardinality of the symmetric difference of the two edge sets. This is the number of application instances that must be shut down or loaded at time t.
- We first describe an algorithm that builds a solution from scratch, i.e., under the assumption that Et−1=Ø, either because this is the first step (t=1) or because the solution from the previous step t−1 is very bad for serving demands at step t. This heuristic will be also used later as a subroutine when we describe an incremental algorithm which optimizes the objective function as we move from step t−1 to t. At the risk of slight confusion, we will refer to this heuristic as the initial placement heuristic even when it is used as part of the incremental construction.
- Initial Placement Algorithm Description
- We order all servers by decreasing value of their densities Ωi/Γi, and order applications by decreasing densities ωjt/γj. Then we load the highest density application j to the highest density server i which has enough memory for that application.
- If the available service capacity Ωi of a server i is larger then service requirement ωjt of an application that we assign to the server, then we delete application j from the list of unscheduled applications. We re-compute the available memory and service capacities of the server i by subtracting the amounts of resources consumed by application j and insert server i back into the list of servers according to its new density Ωi/Γi with the updated values Ωi and Γi.
- If the available service capacity ≠i of the server i is exceeded by the demand ωjt, we still assign application j to server i, but this application's demand served by this server is limited by the server's (remaining) service capacity. We remove the server from the list.
- In the latter case that the service capacity on the server i is exceeded by applications assigned to it, let ω′jt be the amount of demand of application j assigned to this server and let ω″jt be the remaining demand; note ω′jt+ω″jt=ωjt. Since the server i cannot serve all demand of applications, we will need to load at least one more copy of it on another server, but we do not yet know which server. The density of the remaining demand is ω″jt/γj. We place the application back in the list with this value as its density in the sequence of remaining applications (in the appropriate place in the list ordered by densities). Then we move on to the next highest density application, and so on.
- The intuition behind the rule is as follows. We should match applications which have many requests per unit of memory with servers which have high processing capacity per unit of memory. It is not wise to assign applications with high density to a low density server, since we would be likely to reach the processing capacity constraint and leave a lot of memory unused on that server. Similarly, if low density applications are loaded on high density servers, we would be likely to reach the server's memory constraint without using much of the processing capacity.
- Note that for every server the algorithm splits the demand of at most one application between this server and some other servers. Thus, the total number of application-to-server mappings (edges in the bipartite graph) is at most n+m−1.
- Initial Placement Flow Diagram Description
- The initial placement algorithm is illustrated in the flow diagram of
FIG. 2 . The initial conditions infunction block 21 are the memory and demand capacities for the servers and the memory and demand requirements for the applications. Infunction block 22, we order all servers by decreasing value of their densities Ωi/Γi, and order applications by decreasing densities ωjt/γj. Then, infunction block 23, we load the highest density applications to the highest density server i which has enough memory for that application. - We check if the application completely fits to the server. If yes, we delete application; from the list of unscheduled applications in
function block 25. We re-compute infunction block 25 the available memory and service capacities of the server i by subtracting the amounts of resources consumed by application; and insert server i back into the list of servers according to its new density Ωi/Γi with the updated values Ωi and Γi. After that we proceed to thedecision block 26. - If the answer in
decision block 24 is “no”, then in thefunction block 27 we delete server from the list, assign part of the demand of the application to that server, compute new application density with remaining demand and reinsert application to the sorted list to the place corresponding to its new density and proceed to thedecision block 26. - A test is made in
decision block 26 to determine if the application list is empty and, if not, the process returns to functionblock 23. - Incremental Placement Algorithm Description
- Although the initial placement algorithm is rather conservative in memory allocation, it could be very bad from the viewpoint of the dynamic objective function, which seeks a minimal incremental cost of unloading and loading applications between time steps. We now explain how we can combine the initial placement algorithm with a maximum flow computation to yield a heuristic for minimizing our objective function. The definition of the maximum flow problem and standard algorithms to solve it could be found in the book by R. Ahuja, T. Magnanti and J. Orlin, Network Flows. Theory, Algorithms and Applications, Prentice Hall, Englewood Cliffs, N.J., 1993.
- Given a feasible solution on the previous step (A, S, Et−1), we first would like to check whether we can satisfy the new demands ωjt by simply using the old assignment of applications to servers. We check this by solving a bipartite flow problem. In other words, we use the edge set Et−1. Each node corresponding to application; is a source of ωjt units of flow. We test whether there is a flow satisfying these sources by routing flow to sinks corresponding to the servers, such that the flow into each sink corresponding to a server i is limited by the server's service capacity Ωi.
- If this flow is feasible we are done; the flow values on the edges give the assignments of applications' loads to servers. Otherwise, there is a residual demand for every application (possibly 0 for some) which remains unassigned to servers. Denote the residual demands by ω′jt. For every server there are a residual memory Γi′ and a service capacity Ωi′ that are not consumed by the assignment given by the flow. Notice that these demands and capacities induce a problem of the same form as the initial placement problem. We apply our greedy initial placement heuristic to this instance. If our heuristic finds a feasible solution to the residual instance, we can construct an overall solution as follows. The residual instance results in a new set of edges, i.e., application-to-server mappings (applications which must be loaded onto servers), which we simply add to the existing edges. The total cost of the new solution is the number of new edges used by the heuristic to route the residual demand. This should not be large since our heuristic is conservative in defining new edges.
- If our heuristic fails to find a feasible solution, we delete an edge in the graph (A, S, Et−1) and repeat the procedure. We continue in this fashion until a feasible solution is found. The total cost is the number of deleted edges in addition to the number of new edges. In the worst case, we eventually delete all edges in the graph and build the solution from scratch using our initial placement heuristic, which is possible by our assumption that the instance is “not too hard”.
- It remains to define which edge should be deleted. A good heuristic choice should be the edge which minimizes the ratio of the total demand routed through this edge (i.e., the flow on this edge) divided by the memory requirement of the corresponding application. The intuition for this is that we would like to delete an edge which uses memory in the most inefficient way.
- Incremental Placement Flow Diagram Description
- The incremental placement algorithm is illustrated in the flow diagram of
FIG. 3 . The initial conditions infunction block 31 are the placement of copies of applications to servers from the previous step, server demand and memory capacities and applications demand and memory requirements. - In
function block 32, we define a bipartite graph between set of servers and the set of applications with an edge between every application-server pair such that server has a copy of that application. - Then, in
function block 33, we solve the bipartite flow problem on the bipartite graph, where application demand defines amount of flow located at that vertex and servers demand capacity defines capacity of corresponding vertex. - In the
decision block 34 we check if there is a feasible solution to the bipartite flow problem. If there is one we proceed to thefunction block 35 tells that the problem is solved. If not, we proceed to thefunction block 36. - In the
function block 36 we define an Initial Placement Problem using remaining servers resources and unrouted demand to define memory and demand capacities and requirements in the new instance. Then indecision block 37 we check if the solution found is feasible, if yes, then infunction block 38, we define and out the final solution. - If not, then in
function block 39, we delete an edge which minimizes the ratio of the flow sent by this edge to the memory of application incident to it from the current bipartite graph and proceed to functionblock 32. - Our algorithm has been incorporated into the IBM Websphere environment. A Websphere component known as the placement controller receives dynamic information about the load-independent and load-dependent requirements of the various applications, and the load-independent and load-dependent capacities of the various servers. We used memory size and CPU cycles/sec as the representative load-independent and load-dependent parameters, respectively. The placement controller is aware of the configuration, i.e., the mapping of applications onto servers in a given Websphere cell. Upon need, or periodically, the placement controller executes our algorithm in order to determine the change in application placement configuration in response to changes in loads and characteristics of the applications and servers. Then the placement controller realizes the change, automatically or in a supervised mode, through the execution of scripts to start and stop applications servers.
- The system includes an application workload predictor and an application profiler. The application workload predictor utilizes historical information regarding the offered load to produce a workload prediction for each application supported by the server farm. For instance, the workload prediction can be characterized by the arrival rate of requests to a given application. Similar to the application workload predictor, the application profiler produces a set of application resource requirements by estimating the amount of server resources required by a single request of each application. The application resource requirements includes, for example, the number of CPU cycles required to process a request.
- The placement controller utilizes the workload prediction and the application resource requirements provided by the application workload predictor and the application profiler to compute predicted load-dependent resource requirements for each application. Considering the predicted resource requirements for each application, the given capacities of each of the server computing nodes in the server farm, and the current application placement, the placement controller uses the algorithm presented here to compute a new placement of applications.
- While the invention has been described in terms of a single preferred embodiment, those skilled in the art will recognize that the invention can be practiced with modification within the spirit and scope of the appended claims.
Claims (14)
1. A method for on-demand application resource allocation under one or more load-dependent resource constraints and one or more load-independent resource constraints by dynamically reconfiguring placement of applications on servers in a rigorous mathematical language, the method comprising the steps of:
describing a plurality of servers and a plurality of applications as abstract sets of elements corresponding to the plurality of servers and the plurality of applications, respectively,
defining sets of load-dependent and sets of load independent capacities of said abstract sets of elements,
determining a feasibility for a given assignment of applications to servers,
determining a feasibility for distributing demand between servers, and
dynamically reconfiguring placement of applications on servers based on an objective function to optimize a placement of applications on servers.
2. The method for on-demand application resource allocation recited in claim 1 , wherein the objective function comprises a total number of applications assignment changes from a previous time interval to a current time interval.
3. A method for on-demand application resource allocation under one or more load-dependent resource constraints and one or more load-independent resource constraints comprising the steps of:
ordering servers by decreasing value of their densities defined as available service capacity divided by memory capacity for each server;
ordering applications by decreasing densities defined as number of requests in a given time interval divided by memory requirements for each application;
initially loading a highest density application to a highest density server which has enough memory for that application and loading other applications on servers according said steps of ordering; and
dynamically reconfiguring placement of applications on servers according to an objective function which satisfy all applications demand while respecting memory and processing constraints of every server.
4. The method for on-demand application resource allocation recited in claim 3 , wherein the step of initially loading comprises the steps of:
for each application assigned to a server, determining if the application completely fits the server;
if the application completely fits the server, deleting the application from a sorted list of the ordered applications, updating server and memory demand capacities, and recomputing new densities of applications; otherwise,
if the application does not completely the server, deleting the server from a sorted list of the ordered servers, assigning part of a demand for the application to the server, computing a new application density with remaining demand, and re-inserting the application into the list of ordered applications; and
returning to the ordering steps until the sorted list of ordered applications is empty.
5. The method for on-demand application resource allocation recited in claim 4 , wherein in the step of dynamically reconfiguring placement of applications on servers comprises the steps of:
defining a bipartite graph between a set of servers and a set of applications with an edge between every application-server pair such that a server of the pair has a copy of the application of the pair; and
solving a bipartite flow problem on the bipartite graph where application demand defines an amount of flow located at that vertex and server demand capacity defines capacity of a corresponding vertex.
6. The method for on-demand application resource allocation recited in claim 5 , wherein the step of dynamically reconfiguring placement of applications further comprises the steps of:
determining if a feasible solution is found in the step of solving and, if not, defining and solving an initial placement problem using remaining server resources and unrouted demand to define memory and demand capacities and requirements;
determining if there is a feasible solution to the initial placement problem and, if not, deleting an edge which minimizes a ratio of flow sent by the edge to a memory of application incident to it from a current bipartite graph; and
returning to the step of defining a bipartite graph until a feasible solution is found to the flow problem.
7. A system for on-demand application resource allocation under one or more load-dependent resource constraints and one or more load-independent resource constraints comprising:
a plurality of servers arranged in one or more clusters;
a plurality of application clusters, each said application cluster running on one or more servers in a cluster of servers;
a request router receiving application requests from a plurality of clients and directing the requests to appropriate application clusters;
a placement controller which receives an application workload prediction and application resource requirements and calculates application densities, defined as number of requests in a given time interval divided by memory requirements, and server densities, defined as available service capacity divided by memory capacity; and
a placement executor responsive to said placement controller which executes application placements on said servers, wherein said placement controller initially causes said placement executor to load a highest density application to a highest density server which has enough memory for that application and loading other applications on servers according said steps of ordering; and thereafter dynamically reconfigures placement of applications on servers according to an objective function which satisfy all applications demand while respecting memory and processing constraints of every server.
8. The system for on-demand application resource allocation recited in claim 7 , wherein the placement controller receives feedback from the placement executor and for each application assigned to a server, determines if the application completely fits the server, and if the application completely fits the server, deletes the application from a sorted list of the ordered applications, updates server and memory demand capacities, and recomputes new densities of applications, but otherwise, if the application does not completely the server, deletes the server from a sorted list of the ordered servers, assigns part of a demand for the application to the server, computes a new application density with remaining demand, and re-inserts the application into the list of ordered applications, until the sorted list of ordered applications is empty.
9. The system for on-demand application resource allocation recited in claim 8 , wherein the placement controller defines a bipartite graph between a set of servers and a set of applications with an edge between every application-server pair, and solves a bipartite flow problem on the bipartite graph where application demand defines an amount of flow located at that vertex and server demand capacity defines capacity of a corresponding vertex.
10. The system for on-demand application resource allocation recited in claim 9 , wherein the placement controller determines if a feasible solution is found and, if not, defines and solves an initial placement problem using remaining server resources and unrouted demand to define memory and demand capacities and requirements, determines if there is a feasible solution to the initial placement problem and, if not, deletes an edge which minimizes a ratio of flow sent by the edge to a memory of application incident to it from a current bipartite graph, until a feasible solution is found to the flow problem.
11. A computer readable medium containing code for performing on-demand application resource allocation under one or more load-dependent resource constraints and one or more load-independent resource constraints, the code implementing a method comprising the steps of:
ordering servers by decreasing value of their densities defined as available service capacity divided by memory capacity for each server;
ordering applications by decreasing densities defined as number of requests in a given time interval divided by memory requirements for each application;
initially loading a highest density application to a highest density server which has enough memory for that application and loading other applications on servers according said steps of ordering; and
dynamically reconfiguring placement of applications on servers according to an objective function which satisfy all applications demand while respecting memory and processing constraints of every server.
12. The computer readable medium recited in claim 11 , wherein the code implements the step of initially loading implements the steps of:
for each application assigned to a server, determining if the application completely fits the server;
if the application completely fits the server, deleting the application from a sorted list of the ordered applications, updating server and memory demand capacities, and recomputing new densities of applications; otherwise,
if the application does not completely the server, deleting the server from a sorted list of the ordered servers, assigning part of a demand for the application to the server, computing a new application density with remaining demand, and re-inserting the application into the list of ordered applications; and
returning to the ordering steps until the sorted list of ordered applications is empty.
13. The computer readable medium recited in claim 12 , wherein which implements the step of dynamically reconfiguring placement of applications on servers implements the steps of:
defining a bipartite graph between a set of servers and a set of applications with an edge between every application-server pair such that a server of the pair has a copy of the application of the pair; and
solving a bipartite flow problem on the bipartite graph where application demand defines an amount of flow located at that vertex and server demand capacity defines capacity of a corresponding vertex.
14. The computer readable medium recited in claim 13 , wherein the code which implements the step of dynamically reconfiguring placement of applications further implements the steps of:
determining if a feasible solution is found in the step of solving and, if not, defining and solving an initial placement problem using remaining server resources and unrouted demand to define memory and demand capacities and requirements;
determining if there is a feasible solution to the initial placement problem and, if not, deleting an edge which minimizes a ratio of flow sent by the edge to a memory of application incident to it from a current bipartite graph; and
returning to the step of defining a bipartite graph until a feasible solution is found to the flow problem.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/110,766 US20060242647A1 (en) | 2005-04-21 | 2005-04-21 | Dynamic application placement under service and memory constraints |
US12/062,569 US8230438B2 (en) | 2005-04-21 | 2008-04-04 | Dynamic application placement under service and memory constraints |
US13/415,034 US8510745B2 (en) | 2005-04-21 | 2012-03-08 | Dynamic application placement under service and memory constraints |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/110,766 US20060242647A1 (en) | 2005-04-21 | 2005-04-21 | Dynamic application placement under service and memory constraints |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/062,569 Continuation US8230438B2 (en) | 2005-04-21 | 2008-04-04 | Dynamic application placement under service and memory constraints |
Publications (1)
Publication Number | Publication Date |
---|---|
US20060242647A1 true US20060242647A1 (en) | 2006-10-26 |
Family
ID=37188613
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/110,766 Abandoned US20060242647A1 (en) | 2005-04-21 | 2005-04-21 | Dynamic application placement under service and memory constraints |
US12/062,569 Expired - Fee Related US8230438B2 (en) | 2005-04-21 | 2008-04-04 | Dynamic application placement under service and memory constraints |
US13/415,034 Expired - Fee Related US8510745B2 (en) | 2005-04-21 | 2012-03-08 | Dynamic application placement under service and memory constraints |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/062,569 Expired - Fee Related US8230438B2 (en) | 2005-04-21 | 2008-04-04 | Dynamic application placement under service and memory constraints |
US13/415,034 Expired - Fee Related US8510745B2 (en) | 2005-04-21 | 2012-03-08 | Dynamic application placement under service and memory constraints |
Country Status (1)
Country | Link |
---|---|
US (3) | US20060242647A1 (en) |
Cited By (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070112947A1 (en) * | 2005-11-15 | 2007-05-17 | Eric Anderson | System and method of managing events on multiple problem ticketing system |
US20070180083A1 (en) * | 2006-01-31 | 2007-08-02 | Adam Constantin M | Decentralized application placement for Web application middleware |
US20070294692A1 (en) * | 2006-06-16 | 2007-12-20 | Microsoft Corporation | Task Assignment Among Multiple Devices |
US20080134193A1 (en) * | 2006-11-08 | 2008-06-05 | Board Of Regents, The University Of Texas System | System, Method and Apparatus for Allocating Resources by Constraint Selection |
US20080163206A1 (en) * | 2007-01-02 | 2008-07-03 | International Business Machines Corporation | Virtualizing the execution of homogeneous parallel systems on heterogeneous multiprocessor platforms |
US20080295096A1 (en) * | 2007-05-21 | 2008-11-27 | International Business Machines Corporation | DYNAMIC PLACEMENT OF VIRTUAL MACHINES FOR MANAGING VIOLATIONS OF SERVICE LEVEL AGREEMENTS (SLAs) |
US20100042721A1 (en) * | 2005-07-25 | 2010-02-18 | Malgorzata Steinder | Dynamic application placement with allocation restrictions, vertical stacking and even load distribution |
US20100058342A1 (en) * | 2007-01-11 | 2010-03-04 | Fumio Machida | Provisioning system, method, and program |
EP2238533A2 (en) * | 2008-01-30 | 2010-10-13 | Microsoft Corporation | Managing component programs within a service application |
US20120144038A1 (en) * | 2010-12-07 | 2012-06-07 | Cisco Technology, Inc. | System and method for allocating resources based on events in a network environment |
CN102713893A (en) * | 2010-01-11 | 2012-10-03 | 美国日本电气实验室公司 | A virtualization and consolidation analysis engine for enterprise data centers |
US8468548B2 (en) | 2010-12-17 | 2013-06-18 | Microsoft Corporation | Multi-tenant, high-density container service for hosting stateful and stateless middleware components |
US20140215075A1 (en) * | 2013-01-30 | 2014-07-31 | Electronics And Telecommunications Research Institute | Load balancing apparatus and method based on estimation of resource usage |
US8943372B2 (en) | 2012-03-30 | 2015-01-27 | International Business Machines Corporation | Systems and methods for open and extensible integration of management domains in computation and orchestration of resource placement |
US9007961B2 (en) | 2010-11-22 | 2015-04-14 | May Patents Ltd. | Apparatus and method for using and solving linear programming problem and applications thereof |
US20150256485A1 (en) * | 2010-12-14 | 2015-09-10 | Amazon Technologies, Inc. | Load balancing between processors |
US9218207B1 (en) * | 2013-07-09 | 2015-12-22 | Ca, Inc. | Configuring virtualization environments |
US20170153918A1 (en) * | 2015-11-27 | 2017-06-01 | Huawei Technologies Co., Ltd. | System and method for resource management |
US9830193B1 (en) | 2014-09-30 | 2017-11-28 | Amazon Technologies, Inc. | Automatic management of low latency computational capacity |
US9910713B2 (en) | 2015-12-21 | 2018-03-06 | Amazon Technologies, Inc. | Code execution request routing |
US9930103B2 (en) | 2015-04-08 | 2018-03-27 | Amazon Technologies, Inc. | Endpoint management system providing an application programming interface proxy service |
US9928108B1 (en) | 2015-09-29 | 2018-03-27 | Amazon Technologies, Inc. | Metaevent handling for on-demand code execution environments |
US10002026B1 (en) | 2015-12-21 | 2018-06-19 | Amazon Technologies, Inc. | Acquisition and maintenance of dedicated, reserved, and variable compute capacity |
US10013267B1 (en) | 2015-12-16 | 2018-07-03 | Amazon Technologies, Inc. | Pre-triggers for code execution environments |
US10042660B2 (en) | 2015-09-30 | 2018-08-07 | Amazon Technologies, Inc. | Management of periodic requests for compute capacity |
US10048974B1 (en) | 2014-09-30 | 2018-08-14 | Amazon Technologies, Inc. | Message-based computation request scheduling |
US10061613B1 (en) | 2016-09-23 | 2018-08-28 | Amazon Technologies, Inc. | Idempotent task execution in on-demand network code execution systems |
US10067801B1 (en) | 2015-12-21 | 2018-09-04 | Amazon Technologies, Inc. | Acquisition and maintenance of compute capacity |
US10102040B2 (en) | 2016-06-29 | 2018-10-16 | Amazon Technologies, Inc | Adjusting variable limit on concurrent code executions |
US10108443B2 (en) | 2014-09-30 | 2018-10-23 | Amazon Technologies, Inc. | Low latency computational capacity provisioning |
CN108874413A (en) * | 2017-10-30 | 2018-11-23 | 北京旷视科技有限公司 | Service upgrade method, apparatus, system and storage medium |
US10140137B2 (en) | 2014-09-30 | 2018-11-27 | Amazon Technologies, Inc. | Threading as a service |
US10162672B2 (en) | 2016-03-30 | 2018-12-25 | Amazon Technologies, Inc. | Generating data streams from pre-existing data sets |
US10162688B2 (en) | 2014-09-30 | 2018-12-25 | Amazon Technologies, Inc. | Processing event messages for user requests to execute program code |
US10203990B2 (en) | 2016-06-30 | 2019-02-12 | Amazon Technologies, Inc. | On-demand network code execution with cross-account aliases |
US10277708B2 (en) | 2016-06-30 | 2019-04-30 | Amazon Technologies, Inc. | On-demand network code execution with cross-account aliases |
US10282229B2 (en) | 2016-06-28 | 2019-05-07 | Amazon Technologies, Inc. | Asynchronous task management in an on-demand network code execution environment |
US10303492B1 (en) | 2017-12-13 | 2019-05-28 | Amazon Technologies, Inc. | Managing custom runtimes in an on-demand code execution system |
US10353746B2 (en) | 2014-12-05 | 2019-07-16 | Amazon Technologies, Inc. | Automatic determination of resource sizing |
US10353678B1 (en) | 2018-02-05 | 2019-07-16 | Amazon Technologies, Inc. | Detecting code characteristic alterations due to cross-service calls |
US10365985B2 (en) | 2015-12-16 | 2019-07-30 | Amazon Technologies, Inc. | Predictive management of on-demand code execution |
US10387177B2 (en) | 2015-02-04 | 2019-08-20 | Amazon Technologies, Inc. | Stateful virtual compute system |
US10552193B2 (en) | 2015-02-04 | 2020-02-04 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US10564946B1 (en) | 2017-12-13 | 2020-02-18 | Amazon Technologies, Inc. | Dependency handling in an on-demand network code execution system |
US10572375B1 (en) | 2018-02-05 | 2020-02-25 | Amazon Technologies, Inc. | Detecting parameter validity in code including cross-service calls |
US10592269B2 (en) | 2014-09-30 | 2020-03-17 | Amazon Technologies, Inc. | Dynamic code deployment and versioning |
WO2020092852A1 (en) * | 2018-10-31 | 2020-05-07 | Virtual Instruments Corporation | Methods and system for throttling analytics processing |
US10725752B1 (en) | 2018-02-13 | 2020-07-28 | Amazon Technologies, Inc. | Dependency handling in an on-demand network code execution system |
US10733085B1 (en) | 2018-02-05 | 2020-08-04 | Amazon Technologies, Inc. | Detecting impedance mismatches due to cross-service calls |
US10747569B2 (en) | 2017-12-29 | 2020-08-18 | Virtual Instruments Corporation | Systems and methods of discovering and traversing coexisting topologies |
US10754701B1 (en) * | 2015-12-16 | 2020-08-25 | Amazon Technologies, Inc. | Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions |
US10776171B2 (en) | 2015-04-08 | 2020-09-15 | Amazon Technologies, Inc. | Endpoint management system and virtual compute system |
US10776091B1 (en) | 2018-02-26 | 2020-09-15 | Amazon Technologies, Inc. | Logging endpoint in an on-demand code execution system |
US10824484B2 (en) | 2014-09-30 | 2020-11-03 | Amazon Technologies, Inc. | Event-driven computing |
US10831898B1 (en) | 2018-02-05 | 2020-11-10 | Amazon Technologies, Inc. | Detecting privilege escalations in code including cross-service calls |
US10884812B2 (en) | 2018-12-13 | 2021-01-05 | Amazon Technologies, Inc. | Performance-based hardware emulation in an on-demand network code execution system |
US10884722B2 (en) | 2018-06-26 | 2021-01-05 | Amazon Technologies, Inc. | Cross-environment application of tracing information for improved code execution |
US10884787B1 (en) | 2016-09-23 | 2021-01-05 | Amazon Technologies, Inc. | Execution guarantees in an on-demand network code execution system |
US10891145B2 (en) | 2016-03-30 | 2021-01-12 | Amazon Technologies, Inc. | Processing pre-existing data sets at an on demand code execution environment |
US10908927B1 (en) | 2019-09-27 | 2021-02-02 | Amazon Technologies, Inc. | On-demand execution of object filter code in output path of object storage service |
US10942795B1 (en) | 2019-11-27 | 2021-03-09 | Amazon Technologies, Inc. | Serverless call distribution to utilize reserved capacity without inhibiting scaling |
US10949237B2 (en) | 2018-06-29 | 2021-03-16 | Amazon Technologies, Inc. | Operating system customization in an on-demand network code execution system |
US10996961B2 (en) | 2019-09-27 | 2021-05-04 | Amazon Technologies, Inc. | On-demand indexing of data in input path of object storage service |
US11010188B1 (en) | 2019-02-05 | 2021-05-18 | Amazon Technologies, Inc. | Simulated data object storage using on-demand computation of data objects |
US11023311B2 (en) | 2019-09-27 | 2021-06-01 | Amazon Technologies, Inc. | On-demand code execution in input path of data uploaded to storage service in multiple data portions |
US11023416B2 (en) | 2019-09-27 | 2021-06-01 | Amazon Technologies, Inc. | Data access control system for object storage service based on owner-defined code |
US11055112B2 (en) | 2019-09-27 | 2021-07-06 | Amazon Technologies, Inc. | Inserting executions of owner-specified code into input/output path of object storage service |
US11099870B1 (en) | 2018-07-25 | 2021-08-24 | Amazon Technologies, Inc. | Reducing execution times in an on-demand network code execution system using saved machine states |
US11099917B2 (en) | 2018-09-27 | 2021-08-24 | Amazon Technologies, Inc. | Efficient state maintenance for execution environments in an on-demand code execution system |
US11106477B2 (en) | 2019-09-27 | 2021-08-31 | Amazon Technologies, Inc. | Execution of owner-specified code during input/output path to object storage service |
US11113119B2 (en) | 2018-09-17 | 2021-09-07 | International Business Machines Corporation | Managing computer resources |
US11115404B2 (en) | 2019-06-28 | 2021-09-07 | Amazon Technologies, Inc. | Facilitating service connections in serverless code executions |
US11119813B1 (en) | 2016-09-30 | 2021-09-14 | Amazon Technologies, Inc. | Mapreduce implementation using an on-demand network code execution system |
US11119809B1 (en) | 2019-06-20 | 2021-09-14 | Amazon Technologies, Inc. | Virtualization-based transaction handling in an on-demand network code execution system |
US11119826B2 (en) | 2019-11-27 | 2021-09-14 | Amazon Technologies, Inc. | Serverless call distribution to implement spillover while avoiding cold starts |
US11132213B1 (en) | 2016-03-30 | 2021-09-28 | Amazon Technologies, Inc. | Dependency-based process of pre-existing data sets at an on demand code execution environment |
US11146569B1 (en) | 2018-06-28 | 2021-10-12 | Amazon Technologies, Inc. | Escalation-resistant secure network services using request-scoped authentication information |
US11159528B2 (en) | 2019-06-28 | 2021-10-26 | Amazon Technologies, Inc. | Authentication to network-services using hosted authentication information |
US11190609B2 (en) | 2019-06-28 | 2021-11-30 | Amazon Technologies, Inc. | Connection pooling for scalable network services |
US11188391B1 (en) | 2020-03-11 | 2021-11-30 | Amazon Technologies, Inc. | Allocating resources to on-demand code executions under scarcity conditions |
US11223534B2 (en) | 2017-12-29 | 2022-01-11 | Virtual Instruments Worldwide, Inc. | Systems and methods for hub and spoke cross topology traversal |
US11243953B2 (en) | 2018-09-27 | 2022-02-08 | Amazon Technologies, Inc. | Mapreduce implementation in an on-demand network code execution system and stream data processing system |
US11250007B1 (en) | 2019-09-27 | 2022-02-15 | Amazon Technologies, Inc. | On-demand execution of object combination code in output path of object storage service |
US11263220B2 (en) | 2019-09-27 | 2022-03-01 | Amazon Technologies, Inc. | On-demand execution of object transformation code in output path of object storage service |
US11360948B2 (en) | 2019-09-27 | 2022-06-14 | Amazon Technologies, Inc. | Inserting owner-specified data processing pipelines into input/output path of object storage service |
US11386230B2 (en) | 2019-09-27 | 2022-07-12 | Amazon Technologies, Inc. | On-demand code obfuscation of data in input path of object storage service |
US11388210B1 (en) | 2021-06-30 | 2022-07-12 | Amazon Technologies, Inc. | Streaming analytics using a serverless compute system |
US11394761B1 (en) | 2019-09-27 | 2022-07-19 | Amazon Technologies, Inc. | Execution of user-submitted code on a stream of data |
US11416628B2 (en) | 2019-09-27 | 2022-08-16 | Amazon Technologies, Inc. | User-specific data manipulation system for object storage service based on user-submitted code |
US11550713B1 (en) | 2020-11-25 | 2023-01-10 | Amazon Technologies, Inc. | Garbage collection in distributed systems using life cycled storage roots |
US11550944B2 (en) | 2019-09-27 | 2023-01-10 | Amazon Technologies, Inc. | Code execution environment customization system for object storage service |
US11593270B1 (en) | 2020-11-25 | 2023-02-28 | Amazon Technologies, Inc. | Fast distributed caching using erasure coded object parts |
US11656892B1 (en) | 2019-09-27 | 2023-05-23 | Amazon Technologies, Inc. | Sequential execution of user-submitted code and native functions |
US11714682B1 (en) | 2020-03-03 | 2023-08-01 | Amazon Technologies, Inc. | Reclaiming computing resources in an on-demand code execution system |
US11775640B1 (en) | 2020-03-30 | 2023-10-03 | Amazon Technologies, Inc. | Resource utilization-based malicious task detection in an on-demand code execution system |
US11861386B1 (en) | 2019-03-22 | 2024-01-02 | Amazon Technologies, Inc. | Application gateways in an on-demand network code execution system |
US11875173B2 (en) | 2018-06-25 | 2024-01-16 | Amazon Technologies, Inc. | Execution of auxiliary functions in an on-demand network code execution system |
WO2024051012A1 (en) * | 2022-09-09 | 2024-03-14 | 苏州大学 | Service deployment and resource allocation method for partially-decoupled data center |
US11943093B1 (en) | 2018-11-20 | 2024-03-26 | Amazon Technologies, Inc. | Network connection recovery after virtual machine transition in an on-demand network code execution system |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8732307B1 (en) * | 2006-07-25 | 2014-05-20 | Hewlett-Packard Development Company, L.P. | Predictive control for resource entitlement |
US7970905B2 (en) * | 2008-07-03 | 2011-06-28 | International Business Machines Corporation | Method, system and computer program product for server selection, application placement and consolidation planning of information technology systems |
US8055749B1 (en) | 2008-09-30 | 2011-11-08 | Amazon Technologies, Inc. | Optimizing media distribution using metrics |
US8005950B1 (en) * | 2008-12-09 | 2011-08-23 | Google Inc. | Application server scalability through runtime restrictions enforcement in a distributed application execution system |
US8775624B2 (en) * | 2008-12-31 | 2014-07-08 | Cerner Innovation, Inc. | Load-balancing and technology sharing using Lempel-Ziv complexity to select optimal client-sets |
US8910176B2 (en) | 2010-01-15 | 2014-12-09 | International Business Machines Corporation | System for distributed task dispatch in multi-application environment based on consensus for load balancing using task partitioning and dynamic grouping of server instance |
US8769543B2 (en) * | 2010-09-27 | 2014-07-01 | Throughputer, Inc. | System and method for maximizing data processing throughput via application load adaptive scheduling and context switching |
US20110213810A1 (en) * | 2010-02-26 | 2011-09-01 | Rovi Technologies Corporation | Dynamically configurable chameleon device |
WO2011106382A2 (en) * | 2010-02-26 | 2011-09-01 | Rovi Technologies Corporation | Dynamically configurable clusters of apparatuses |
US8789065B2 (en) | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
US20130117168A1 (en) | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
US8959222B2 (en) * | 2011-05-19 | 2015-02-17 | International Business Machines Corporation | Load balancing system for workload groups |
US9471389B2 (en) * | 2011-06-30 | 2016-10-18 | International Business Machines Corporation | Dynamically tuning server placement |
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
US9026837B2 (en) | 2011-09-09 | 2015-05-05 | Microsoft Technology Licensing, Llc | Resource aware placement of applications in clusters |
US8713057B2 (en) * | 2011-12-29 | 2014-04-29 | Teradata Us, Inc. | Techniques for data assignment from an external distributed file system to a database management system |
US8811210B2 (en) | 2012-02-13 | 2014-08-19 | Hewlett-Packard Development Company, L.P. | Effective application densities for fabrics |
US20140282520A1 (en) * | 2013-03-15 | 2014-09-18 | Navin Sabharwal | Provisioning virtual machines on a physical infrastructure |
GB2512847A (en) | 2013-04-09 | 2014-10-15 | Ibm | IT infrastructure prediction based on epidemiologic algorithm |
US9979674B1 (en) * | 2014-07-08 | 2018-05-22 | Avi Networks | Capacity-based server selection |
US9684531B2 (en) * | 2014-08-21 | 2017-06-20 | International Business Machines Corporation | Combining blade servers based on workload characteristics |
CN107360206B (en) | 2017-03-29 | 2020-03-27 | 创新先进技术有限公司 | Block chain consensus method, equipment and system |
JP2019057806A (en) * | 2017-09-20 | 2019-04-11 | 東芝メモリ株式会社 | Memory system |
US11546422B2 (en) | 2021-01-08 | 2023-01-03 | Capital One Services, Llc | Dynamic management of locations of modules of a platform hosted by a distributed system |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5774668A (en) * | 1995-06-07 | 1998-06-30 | Microsoft Corporation | System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing |
US6086618A (en) * | 1998-01-26 | 2000-07-11 | Microsoft Corporation | Method and computer program product for estimating total resource usage requirements of a server application in a hypothetical user configuration |
US20020147759A1 (en) * | 1997-09-29 | 2002-10-10 | Kumar Ranganathan | Dynamic feedback costing to enable adaptive control of resource utilization |
US6687735B1 (en) * | 2000-05-30 | 2004-02-03 | Tranceive Technologies, Inc. | Method and apparatus for balancing distributed applications |
US20060031444A1 (en) * | 2004-05-28 | 2006-02-09 | Drew Julie W | Method for assigning network resources to applications for optimizing performance goals |
US20060095917A1 (en) * | 2004-11-01 | 2006-05-04 | International Business Machines Corporation | On-demand application resource allocation through dynamic reconfiguration of application cluster size and placement |
US7065764B1 (en) * | 2001-07-20 | 2006-06-20 | Netrendered, Inc. | Dynamically allocated cluster system |
US20060184626A1 (en) * | 2005-02-11 | 2006-08-17 | International Business Machines Corporation | Client / server application task allocation based upon client resources |
US20060200474A1 (en) * | 2005-03-02 | 2006-09-07 | Snyder Marc E | Alternative sourcing assessment |
US20060265490A1 (en) * | 2001-03-26 | 2006-11-23 | Freewebs Corp. | Apparatus, method and system for improving application performance across a communications network |
US7216160B2 (en) * | 2001-10-31 | 2007-05-08 | Sun Microsystems, Inc. | Server-based application monitoring through collection of application component and environmental statistics |
US7281045B2 (en) * | 2004-08-26 | 2007-10-09 | International Business Machines Corporation | Provisioning manager for optimizing selection of available resources |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6618820B1 (en) * | 2000-01-10 | 2003-09-09 | Imagex.Com, Inc. | Method for configuring an application server system |
US7882501B1 (en) * | 1999-08-13 | 2011-02-01 | Oracle America, Inc. | System and method for enabling dynamic modifed class reloading in an application server environment |
US7596784B2 (en) * | 2000-09-12 | 2009-09-29 | Symantec Operating Corporation | Method system and apparatus for providing pay-per-use distributed computing resources |
US20030069918A1 (en) * | 2001-10-08 | 2003-04-10 | Tommy Lu | Method and apparatus for dynamic provisioning over a world wide web |
US7085837B2 (en) * | 2001-12-04 | 2006-08-01 | International Business Machines Corporation | Dynamic resource allocation using known future benefits |
JP4119239B2 (en) * | 2002-12-20 | 2008-07-16 | 株式会社日立製作所 | Computer resource allocation method, resource management server and computer system for executing the method |
US7350186B2 (en) * | 2003-03-10 | 2008-03-25 | International Business Machines Corporation | Methods and apparatus for managing computing deployment in presence of variable workload |
EP1505502B1 (en) * | 2003-08-08 | 2012-03-21 | Sap Ag | A method of assigning objects to processing units |
US7631310B1 (en) * | 2003-11-14 | 2009-12-08 | Google Inc. | Loadbalancing multiple files across computing devices |
US7627644B2 (en) * | 2003-11-28 | 2009-12-01 | Canon Kabushiki Kaisha | Recipient-centred proactive caching in a peer-to-peer system |
US8145731B2 (en) * | 2003-12-17 | 2012-03-27 | Hewlett-Packard Development Company, L.P. | System and method for determining how many servers of at least one server configuration to be included at a service provider's site for supporting an expected workload |
US7865582B2 (en) * | 2004-03-24 | 2011-01-04 | Hewlett-Packard Development Company, L.P. | System and method for assigning an application component to a computing resource |
US20060070060A1 (en) * | 2004-09-28 | 2006-03-30 | International Business Machines Corporation | Coordinating service performance and application placement management |
-
2005
- 2005-04-21 US US11/110,766 patent/US20060242647A1/en not_active Abandoned
-
2008
- 2008-04-04 US US12/062,569 patent/US8230438B2/en not_active Expired - Fee Related
-
2012
- 2012-03-08 US US13/415,034 patent/US8510745B2/en not_active Expired - Fee Related
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5774668A (en) * | 1995-06-07 | 1998-06-30 | Microsoft Corporation | System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing |
US20020147759A1 (en) * | 1997-09-29 | 2002-10-10 | Kumar Ranganathan | Dynamic feedback costing to enable adaptive control of resource utilization |
US6086618A (en) * | 1998-01-26 | 2000-07-11 | Microsoft Corporation | Method and computer program product for estimating total resource usage requirements of a server application in a hypothetical user configuration |
US6687735B1 (en) * | 2000-05-30 | 2004-02-03 | Tranceive Technologies, Inc. | Method and apparatus for balancing distributed applications |
US20060265490A1 (en) * | 2001-03-26 | 2006-11-23 | Freewebs Corp. | Apparatus, method and system for improving application performance across a communications network |
US7065764B1 (en) * | 2001-07-20 | 2006-06-20 | Netrendered, Inc. | Dynamically allocated cluster system |
US7216160B2 (en) * | 2001-10-31 | 2007-05-08 | Sun Microsystems, Inc. | Server-based application monitoring through collection of application component and environmental statistics |
US20060031444A1 (en) * | 2004-05-28 | 2006-02-09 | Drew Julie W | Method for assigning network resources to applications for optimizing performance goals |
US7281045B2 (en) * | 2004-08-26 | 2007-10-09 | International Business Machines Corporation | Provisioning manager for optimizing selection of available resources |
US20060095917A1 (en) * | 2004-11-01 | 2006-05-04 | International Business Machines Corporation | On-demand application resource allocation through dynamic reconfiguration of application cluster size and placement |
US20060184626A1 (en) * | 2005-02-11 | 2006-08-17 | International Business Machines Corporation | Client / server application task allocation based upon client resources |
US20060200474A1 (en) * | 2005-03-02 | 2006-09-07 | Snyder Marc E | Alternative sourcing assessment |
Cited By (143)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8037185B2 (en) | 2005-07-25 | 2011-10-11 | International Business Machines Corporation | Dynamic application placement with allocation restrictions, vertical stacking and even load distribution |
US20100042721A1 (en) * | 2005-07-25 | 2010-02-18 | Malgorzata Steinder | Dynamic application placement with allocation restrictions, vertical stacking and even load distribution |
US20070112947A1 (en) * | 2005-11-15 | 2007-05-17 | Eric Anderson | System and method of managing events on multiple problem ticketing system |
US7493518B2 (en) * | 2005-11-15 | 2009-02-17 | International Business Machines Corporation | System and method of managing events on multiple problem ticketing system |
US7496667B2 (en) * | 2006-01-31 | 2009-02-24 | International Business Machines Corporation | Decentralized application placement for web application middleware |
US20070180083A1 (en) * | 2006-01-31 | 2007-08-02 | Adam Constantin M | Decentralized application placement for Web application middleware |
US20070294692A1 (en) * | 2006-06-16 | 2007-12-20 | Microsoft Corporation | Task Assignment Among Multiple Devices |
US8082549B2 (en) * | 2006-11-08 | 2011-12-20 | Board Of Regents, The University Of Texas System | System, method and apparatus for allocating resources by constraint selection |
US20080134193A1 (en) * | 2006-11-08 | 2008-06-05 | Board Of Regents, The University Of Texas System | System, Method and Apparatus for Allocating Resources by Constraint Selection |
US20080163206A1 (en) * | 2007-01-02 | 2008-07-03 | International Business Machines Corporation | Virtualizing the execution of homogeneous parallel systems on heterogeneous multiprocessor platforms |
US8479200B2 (en) | 2007-01-02 | 2013-07-02 | International Business Machines Corporation | Virtualizing the execution of homogeneous parallel systems on heterogeneous multiprocessor platforms |
US8201165B2 (en) * | 2007-01-02 | 2012-06-12 | International Business Machines Corporation | Virtualizing the execution of homogeneous parallel systems on heterogeneous multiprocessor platforms |
US20100058342A1 (en) * | 2007-01-11 | 2010-03-04 | Fumio Machida | Provisioning system, method, and program |
US8677353B2 (en) * | 2007-01-11 | 2014-03-18 | Nec Corporation | Provisioning a standby virtual machine based on the prediction of a provisioning request being generated |
US20080295096A1 (en) * | 2007-05-21 | 2008-11-27 | International Business Machines Corporation | DYNAMIC PLACEMENT OF VIRTUAL MACHINES FOR MANAGING VIOLATIONS OF SERVICE LEVEL AGREEMENTS (SLAs) |
US8291411B2 (en) | 2007-05-21 | 2012-10-16 | International Business Machines Corporation | Dynamic placement of virtual machines for managing violations of service level agreements (SLAs) |
EP2238533A2 (en) * | 2008-01-30 | 2010-10-13 | Microsoft Corporation | Managing component programs within a service application |
EP2238533A4 (en) * | 2008-01-30 | 2014-08-06 | Microsoft Corp | Managing component programs within a service application |
CN102713893A (en) * | 2010-01-11 | 2012-10-03 | 美国日本电气实验室公司 | A virtualization and consolidation analysis engine for enterprise data centers |
EP2524322A4 (en) * | 2010-01-11 | 2014-11-05 | Nec Lab America Inc | A virtualization and consolidation analysis engine for enterprise data centers |
EP2524322A2 (en) * | 2010-01-11 | 2012-11-21 | NEC Laboratories America, Inc. | A virtualization and consolidation analysis engine for enterprise data centers |
US9007961B2 (en) | 2010-11-22 | 2015-04-14 | May Patents Ltd. | Apparatus and method for using and solving linear programming problem and applications thereof |
CN102546738A (en) * | 2010-12-07 | 2012-07-04 | 思科技术公司 | System and method for allocating resources based on events in a network environment |
US8788654B2 (en) * | 2010-12-07 | 2014-07-22 | Cisco Technology, Inc. | System and method for allocating resources based on events in a network environment |
EP2464083A1 (en) * | 2010-12-07 | 2012-06-13 | Cisco Technology, Inc. | System and method for allocating resources based on events in a network environment |
US20120144038A1 (en) * | 2010-12-07 | 2012-06-07 | Cisco Technology, Inc. | System and method for allocating resources based on events in a network environment |
US20150256485A1 (en) * | 2010-12-14 | 2015-09-10 | Amazon Technologies, Inc. | Load balancing between processors |
US9455931B2 (en) * | 2010-12-14 | 2016-09-27 | Amazon Technologies, Inc. | Load balancing between processors |
US8468548B2 (en) | 2010-12-17 | 2013-06-18 | Microsoft Corporation | Multi-tenant, high-density container service for hosting stateful and stateless middleware components |
US8943372B2 (en) | 2012-03-30 | 2015-01-27 | International Business Machines Corporation | Systems and methods for open and extensible integration of management domains in computation and orchestration of resource placement |
US20140215075A1 (en) * | 2013-01-30 | 2014-07-31 | Electronics And Telecommunications Research Institute | Load balancing apparatus and method based on estimation of resource usage |
US9218207B1 (en) * | 2013-07-09 | 2015-12-22 | Ca, Inc. | Configuring virtualization environments |
US11263034B2 (en) | 2014-09-30 | 2022-03-01 | Amazon Technologies, Inc. | Low latency computational capacity provisioning |
US11467890B2 (en) | 2014-09-30 | 2022-10-11 | Amazon Technologies, Inc. | Processing event messages for user requests to execute program code |
US10884802B2 (en) | 2014-09-30 | 2021-01-05 | Amazon Technologies, Inc. | Message-based computation request scheduling |
US10915371B2 (en) | 2014-09-30 | 2021-02-09 | Amazon Technologies, Inc. | Automatic management of low latency computational capacity |
US10956185B2 (en) | 2014-09-30 | 2021-03-23 | Amazon Technologies, Inc. | Threading as a service |
US10824484B2 (en) | 2014-09-30 | 2020-11-03 | Amazon Technologies, Inc. | Event-driven computing |
US10592269B2 (en) | 2014-09-30 | 2020-03-17 | Amazon Technologies, Inc. | Dynamic code deployment and versioning |
US10162688B2 (en) | 2014-09-30 | 2018-12-25 | Amazon Technologies, Inc. | Processing event messages for user requests to execute program code |
US10048974B1 (en) | 2014-09-30 | 2018-08-14 | Amazon Technologies, Inc. | Message-based computation request scheduling |
US11561811B2 (en) | 2014-09-30 | 2023-01-24 | Amazon Technologies, Inc. | Threading as a service |
US9830193B1 (en) | 2014-09-30 | 2017-11-28 | Amazon Technologies, Inc. | Automatic management of low latency computational capacity |
US10140137B2 (en) | 2014-09-30 | 2018-11-27 | Amazon Technologies, Inc. | Threading as a service |
US10108443B2 (en) | 2014-09-30 | 2018-10-23 | Amazon Technologies, Inc. | Low latency computational capacity provisioning |
US11126469B2 (en) | 2014-12-05 | 2021-09-21 | Amazon Technologies, Inc. | Automatic determination of resource sizing |
US10353746B2 (en) | 2014-12-05 | 2019-07-16 | Amazon Technologies, Inc. | Automatic determination of resource sizing |
US11461124B2 (en) | 2015-02-04 | 2022-10-04 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US10552193B2 (en) | 2015-02-04 | 2020-02-04 | Amazon Technologies, Inc. | Security protocols for low latency execution of program code |
US11360793B2 (en) | 2015-02-04 | 2022-06-14 | Amazon Technologies, Inc. | Stateful virtual compute system |
US10387177B2 (en) | 2015-02-04 | 2019-08-20 | Amazon Technologies, Inc. | Stateful virtual compute system |
US10853112B2 (en) | 2015-02-04 | 2020-12-01 | Amazon Technologies, Inc. | Stateful virtual compute system |
US9930103B2 (en) | 2015-04-08 | 2018-03-27 | Amazon Technologies, Inc. | Endpoint management system providing an application programming interface proxy service |
US10776171B2 (en) | 2015-04-08 | 2020-09-15 | Amazon Technologies, Inc. | Endpoint management system and virtual compute system |
US10623476B2 (en) | 2015-04-08 | 2020-04-14 | Amazon Technologies, Inc. | Endpoint management system providing an application programming interface proxy service |
US9928108B1 (en) | 2015-09-29 | 2018-03-27 | Amazon Technologies, Inc. | Metaevent handling for on-demand code execution environments |
US10042660B2 (en) | 2015-09-30 | 2018-08-07 | Amazon Technologies, Inc. | Management of periodic requests for compute capacity |
US20170153918A1 (en) * | 2015-11-27 | 2017-06-01 | Huawei Technologies Co., Ltd. | System and method for resource management |
US11467874B2 (en) * | 2015-11-27 | 2022-10-11 | Huawei Cloud Computing Technologies Co., Ltd. | System and method for resource management |
US10452442B2 (en) * | 2015-11-27 | 2019-10-22 | Huawei Technologies Co., Ltd. | System and method for resource management |
US10013267B1 (en) | 2015-12-16 | 2018-07-03 | Amazon Technologies, Inc. | Pre-triggers for code execution environments |
US10437629B2 (en) | 2015-12-16 | 2019-10-08 | Amazon Technologies, Inc. | Pre-triggers for code execution environments |
US10365985B2 (en) | 2015-12-16 | 2019-07-30 | Amazon Technologies, Inc. | Predictive management of on-demand code execution |
US10754701B1 (en) * | 2015-12-16 | 2020-08-25 | Amazon Technologies, Inc. | Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions |
US10067801B1 (en) | 2015-12-21 | 2018-09-04 | Amazon Technologies, Inc. | Acquisition and maintenance of compute capacity |
US11016815B2 (en) | 2015-12-21 | 2021-05-25 | Amazon Technologies, Inc. | Code execution request routing |
US11243819B1 (en) | 2015-12-21 | 2022-02-08 | Amazon Technologies, Inc. | Acquisition and maintenance of compute capacity |
US10691498B2 (en) | 2015-12-21 | 2020-06-23 | Amazon Technologies, Inc. | Acquisition and maintenance of compute capacity |
US10002026B1 (en) | 2015-12-21 | 2018-06-19 | Amazon Technologies, Inc. | Acquisition and maintenance of dedicated, reserved, and variable compute capacity |
US9910713B2 (en) | 2015-12-21 | 2018-03-06 | Amazon Technologies, Inc. | Code execution request routing |
US11132213B1 (en) | 2016-03-30 | 2021-09-28 | Amazon Technologies, Inc. | Dependency-based process of pre-existing data sets at an on demand code execution environment |
US10891145B2 (en) | 2016-03-30 | 2021-01-12 | Amazon Technologies, Inc. | Processing pre-existing data sets at an on demand code execution environment |
US10162672B2 (en) | 2016-03-30 | 2018-12-25 | Amazon Technologies, Inc. | Generating data streams from pre-existing data sets |
US10282229B2 (en) | 2016-06-28 | 2019-05-07 | Amazon Technologies, Inc. | Asynchronous task management in an on-demand network code execution environment |
US10402231B2 (en) | 2016-06-29 | 2019-09-03 | Amazon Technologies, Inc. | Adjusting variable limit on concurrent code executions |
US10102040B2 (en) | 2016-06-29 | 2018-10-16 | Amazon Technologies, Inc | Adjusting variable limit on concurrent code executions |
US11354169B2 (en) | 2016-06-29 | 2022-06-07 | Amazon Technologies, Inc. | Adjusting variable limit on concurrent code executions |
US10277708B2 (en) | 2016-06-30 | 2019-04-30 | Amazon Technologies, Inc. | On-demand network code execution with cross-account aliases |
US10203990B2 (en) | 2016-06-30 | 2019-02-12 | Amazon Technologies, Inc. | On-demand network code execution with cross-account aliases |
US10528390B2 (en) | 2016-09-23 | 2020-01-07 | Amazon Technologies, Inc. | Idempotent task execution in on-demand network code execution systems |
US10061613B1 (en) | 2016-09-23 | 2018-08-28 | Amazon Technologies, Inc. | Idempotent task execution in on-demand network code execution systems |
US10884787B1 (en) | 2016-09-23 | 2021-01-05 | Amazon Technologies, Inc. | Execution guarantees in an on-demand network code execution system |
US11119813B1 (en) | 2016-09-30 | 2021-09-14 | Amazon Technologies, Inc. | Mapreduce implementation using an on-demand network code execution system |
CN108874413A (en) * | 2017-10-30 | 2018-11-23 | 北京旷视科技有限公司 | Service upgrade method, apparatus, system and storage medium |
US10564946B1 (en) | 2017-12-13 | 2020-02-18 | Amazon Technologies, Inc. | Dependency handling in an on-demand network code execution system |
US10303492B1 (en) | 2017-12-13 | 2019-05-28 | Amazon Technologies, Inc. | Managing custom runtimes in an on-demand code execution system |
US10831526B2 (en) | 2017-12-29 | 2020-11-10 | Virtual Instruments Corporation | System and method of application discovery |
US10817324B2 (en) | 2017-12-29 | 2020-10-27 | Virtual Instruments Corporation | System and method of cross-silo discovery and mapping of storage, hypervisors and other network objects |
US10768970B2 (en) | 2017-12-29 | 2020-09-08 | Virtual Instruments Corporation | System and method of flow source discovery |
US10747569B2 (en) | 2017-12-29 | 2020-08-18 | Virtual Instruments Corporation | Systems and methods of discovering and traversing coexisting topologies |
US10877792B2 (en) | 2017-12-29 | 2020-12-29 | Virtual Instruments Corporation | Systems and methods of application-aware improvement of storage network traffic |
US11223534B2 (en) | 2017-12-29 | 2022-01-11 | Virtual Instruments Worldwide, Inc. | Systems and methods for hub and spoke cross topology traversal |
US11372669B2 (en) | 2017-12-29 | 2022-06-28 | Virtual Instruments Worldwide, Inc. | System and method of cross-silo discovery and mapping of storage, hypervisors and other network objects |
US11481242B2 (en) | 2017-12-29 | 2022-10-25 | Virtual Instruments Worldwide, Inc. | System and method of flow source discovery |
US10831898B1 (en) | 2018-02-05 | 2020-11-10 | Amazon Technologies, Inc. | Detecting privilege escalations in code including cross-service calls |
US10733085B1 (en) | 2018-02-05 | 2020-08-04 | Amazon Technologies, Inc. | Detecting impedance mismatches due to cross-service calls |
US10572375B1 (en) | 2018-02-05 | 2020-02-25 | Amazon Technologies, Inc. | Detecting parameter validity in code including cross-service calls |
US10353678B1 (en) | 2018-02-05 | 2019-07-16 | Amazon Technologies, Inc. | Detecting code characteristic alterations due to cross-service calls |
US10725752B1 (en) | 2018-02-13 | 2020-07-28 | Amazon Technologies, Inc. | Dependency handling in an on-demand network code execution system |
US10776091B1 (en) | 2018-02-26 | 2020-09-15 | Amazon Technologies, Inc. | Logging endpoint in an on-demand code execution system |
US11875173B2 (en) | 2018-06-25 | 2024-01-16 | Amazon Technologies, Inc. | Execution of auxiliary functions in an on-demand network code execution system |
US10884722B2 (en) | 2018-06-26 | 2021-01-05 | Amazon Technologies, Inc. | Cross-environment application of tracing information for improved code execution |
US11146569B1 (en) | 2018-06-28 | 2021-10-12 | Amazon Technologies, Inc. | Escalation-resistant secure network services using request-scoped authentication information |
US10949237B2 (en) | 2018-06-29 | 2021-03-16 | Amazon Technologies, Inc. | Operating system customization in an on-demand network code execution system |
US11836516B2 (en) | 2018-07-25 | 2023-12-05 | Amazon Technologies, Inc. | Reducing execution times in an on-demand network code execution system using saved machine states |
US11099870B1 (en) | 2018-07-25 | 2021-08-24 | Amazon Technologies, Inc. | Reducing execution times in an on-demand network code execution system using saved machine states |
US11113119B2 (en) | 2018-09-17 | 2021-09-07 | International Business Machines Corporation | Managing computer resources |
US11099917B2 (en) | 2018-09-27 | 2021-08-24 | Amazon Technologies, Inc. | Efficient state maintenance for execution environments in an on-demand code execution system |
US11243953B2 (en) | 2018-09-27 | 2022-02-08 | Amazon Technologies, Inc. | Mapreduce implementation in an on-demand network code execution system and stream data processing system |
WO2020092852A1 (en) * | 2018-10-31 | 2020-05-07 | Virtual Instruments Corporation | Methods and system for throttling analytics processing |
US11943093B1 (en) | 2018-11-20 | 2024-03-26 | Amazon Technologies, Inc. | Network connection recovery after virtual machine transition in an on-demand network code execution system |
US10884812B2 (en) | 2018-12-13 | 2021-01-05 | Amazon Technologies, Inc. | Performance-based hardware emulation in an on-demand network code execution system |
US11010188B1 (en) | 2019-02-05 | 2021-05-18 | Amazon Technologies, Inc. | Simulated data object storage using on-demand computation of data objects |
US11861386B1 (en) | 2019-03-22 | 2024-01-02 | Amazon Technologies, Inc. | Application gateways in an on-demand network code execution system |
US11714675B2 (en) | 2019-06-20 | 2023-08-01 | Amazon Technologies, Inc. | Virtualization-based transaction handling in an on-demand network code execution system |
US11119809B1 (en) | 2019-06-20 | 2021-09-14 | Amazon Technologies, Inc. | Virtualization-based transaction handling in an on-demand network code execution system |
US11190609B2 (en) | 2019-06-28 | 2021-11-30 | Amazon Technologies, Inc. | Connection pooling for scalable network services |
US11159528B2 (en) | 2019-06-28 | 2021-10-26 | Amazon Technologies, Inc. | Authentication to network-services using hosted authentication information |
US11115404B2 (en) | 2019-06-28 | 2021-09-07 | Amazon Technologies, Inc. | Facilitating service connections in serverless code executions |
US11394761B1 (en) | 2019-09-27 | 2022-07-19 | Amazon Technologies, Inc. | Execution of user-submitted code on a stream of data |
US11550944B2 (en) | 2019-09-27 | 2023-01-10 | Amazon Technologies, Inc. | Code execution environment customization system for object storage service |
US11386230B2 (en) | 2019-09-27 | 2022-07-12 | Amazon Technologies, Inc. | On-demand code obfuscation of data in input path of object storage service |
US11106477B2 (en) | 2019-09-27 | 2021-08-31 | Amazon Technologies, Inc. | Execution of owner-specified code during input/output path to object storage service |
US11023311B2 (en) | 2019-09-27 | 2021-06-01 | Amazon Technologies, Inc. | On-demand code execution in input path of data uploaded to storage service in multiple data portions |
US11416628B2 (en) | 2019-09-27 | 2022-08-16 | Amazon Technologies, Inc. | User-specific data manipulation system for object storage service based on user-submitted code |
US10996961B2 (en) | 2019-09-27 | 2021-05-04 | Amazon Technologies, Inc. | On-demand indexing of data in input path of object storage service |
US11023416B2 (en) | 2019-09-27 | 2021-06-01 | Amazon Technologies, Inc. | Data access control system for object storage service based on owner-defined code |
US11860879B2 (en) | 2019-09-27 | 2024-01-02 | Amazon Technologies, Inc. | On-demand execution of object transformation code in output path of object storage service |
US10908927B1 (en) | 2019-09-27 | 2021-02-02 | Amazon Technologies, Inc. | On-demand execution of object filter code in output path of object storage service |
US11250007B1 (en) | 2019-09-27 | 2022-02-15 | Amazon Technologies, Inc. | On-demand execution of object combination code in output path of object storage service |
US11360948B2 (en) | 2019-09-27 | 2022-06-14 | Amazon Technologies, Inc. | Inserting owner-specified data processing pipelines into input/output path of object storage service |
US11263220B2 (en) | 2019-09-27 | 2022-03-01 | Amazon Technologies, Inc. | On-demand execution of object transformation code in output path of object storage service |
US11055112B2 (en) | 2019-09-27 | 2021-07-06 | Amazon Technologies, Inc. | Inserting executions of owner-specified code into input/output path of object storage service |
US11656892B1 (en) | 2019-09-27 | 2023-05-23 | Amazon Technologies, Inc. | Sequential execution of user-submitted code and native functions |
US10942795B1 (en) | 2019-11-27 | 2021-03-09 | Amazon Technologies, Inc. | Serverless call distribution to utilize reserved capacity without inhibiting scaling |
US11119826B2 (en) | 2019-11-27 | 2021-09-14 | Amazon Technologies, Inc. | Serverless call distribution to implement spillover while avoiding cold starts |
US11714682B1 (en) | 2020-03-03 | 2023-08-01 | Amazon Technologies, Inc. | Reclaiming computing resources in an on-demand code execution system |
US11188391B1 (en) | 2020-03-11 | 2021-11-30 | Amazon Technologies, Inc. | Allocating resources to on-demand code executions under scarcity conditions |
US11775640B1 (en) | 2020-03-30 | 2023-10-03 | Amazon Technologies, Inc. | Resource utilization-based malicious task detection in an on-demand code execution system |
US11593270B1 (en) | 2020-11-25 | 2023-02-28 | Amazon Technologies, Inc. | Fast distributed caching using erasure coded object parts |
US11550713B1 (en) | 2020-11-25 | 2023-01-10 | Amazon Technologies, Inc. | Garbage collection in distributed systems using life cycled storage roots |
US11388210B1 (en) | 2021-06-30 | 2022-07-12 | Amazon Technologies, Inc. | Streaming analytics using a serverless compute system |
WO2024051012A1 (en) * | 2022-09-09 | 2024-03-14 | 苏州大学 | Service deployment and resource allocation method for partially-decoupled data center |
Also Published As
Publication number | Publication date |
---|---|
US8510745B2 (en) | 2013-08-13 |
US20120173734A1 (en) | 2012-07-05 |
US8230438B2 (en) | 2012-07-24 |
US20080189418A1 (en) | 2008-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8230438B2 (en) | Dynamic application placement under service and memory constraints | |
US20050188075A1 (en) | System and method for supporting transaction and parallel services in a clustered system based on a service level agreement | |
CN110858161B (en) | Resource allocation method, device, system, equipment and medium | |
US7756989B2 (en) | Method and apparatus for dynamically adjusting resources assigned to plurality of customers, for meeting service level agreements (SLAs) with minimal resources, and allowing common pools of resources to be used across plural customers on a demand basis | |
Ardagna et al. | SLA based resource allocation policies in autonomic environments | |
US7099936B2 (en) | Multi-tier service level agreement method and system | |
US8346909B2 (en) | Method for supporting transaction and parallel application workloads across multiple domains based on service level agreements | |
US7584281B2 (en) | Method for allocating shared computing infrastructure for application server-based deployments | |
US8621476B2 (en) | Method and apparatus for resource management in grid computing systems | |
US20190220310A1 (en) | Job distribution within a grid environment | |
Kimbrel et al. | Dynamic application placement under service and memory constraints | |
US7543060B2 (en) | Service managing apparatus for keeping service quality by automatically allocating servers of light load to heavy task | |
US11106508B2 (en) | Elastic multi-tenant container architecture | |
KR101696698B1 (en) | Distribution and management method of components having reliance | |
US20100223379A1 (en) | Coordinating service performance and application placement management | |
US20130268672A1 (en) | Multi-Objective Virtual Machine Placement Method and Apparatus | |
US8671189B2 (en) | Dynamic load balancing system and method thereof | |
KR20170029263A (en) | Apparatus and method for load balancing | |
US20120011518A1 (en) | Sharing with performance isolation between tenants in a software-as-a service system | |
US9424096B2 (en) | Task allocation in a computer network | |
JP2001043199A (en) | Service-oriented resource management over different kind of servers | |
Xu et al. | Efficient embedding of virtual networks to distributed clouds via exploring periodic resource demands | |
Baresi et al. | KOSMOS: Vertical and horizontal resource autoscaling for kubernetes | |
KR100618159B1 (en) | System and method for policy quorum grid resource management | |
KR20070041462A (en) | Grid resource management system and its method for qos-constrained available resource quorum generation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KIMBREL, TRACY JAY;STEINDER, MALGORZATA;SVIRIDENKO, MAXIM;AND OTHERS;REEL/FRAME:016284/0730;SIGNING DATES FROM 20050408 TO 20050418 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |