The human costs associated with monitoring and managing large, complex information technology (IT) environments has resulted in the move toward more efficient computing utilities. A computing utility can be defined as the ability to provide complex computing environments on-demand to IT users. In a computing utility, IT resources are treated like a utility, where consumers purchase only the needed amount of computing power, similar to the purchase of electricity and telephone service. One goal of a computing utility is to simplify the complexities associated with infrastructure management. One example of a computing utility is a data center where a large pool of IT resources are centrally managed to meet the needs of business critical enterprise applications such as enterprise resource planning applications, database applications, customer relationship management applications, and general e-commerce applications. Managing a computing utility is difficult because each application running within the enterprise has unique assumptions, each enterprise has different policies that are associated with its applications, and each user brings a different set of requirements for their application.
Resource assignment in a computing utility is difficult because the needs of the enterprise users are complex. Many algorithms have been developed to solve the resource assignment problem, however, these algorithms often assume that the topology of resources is a tree, which means that the communication path between resources is unique. Thus, it should be appreciated that there is a need for a resource assignment process that removes this assumption and provides other advances and advantages.
One embodiment of the invention is a processor-based method for substantially optimizing performance goals of a network. The method includes receiving a virtual topology including a list of application components defining an arbitrary network, resource requirements for the application components and communication requirements between each set of application components and receiving a network topology including a list of physical resources defining an arbitrary capacitated network, specifications for the physical resources, connections between the physical resources and a physical property for each connection. The method also includes creating decision variables and constraints to provide or substantially optimize an objective function using the virtual topology and the network topology and assigning each application component to at least one physical resource according to the decision variables, the constraints, and the objective function.
These and other features and advantages of the embodiments of the invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, which illustrate, by way of example the principles of the invention.
Systems and methods that implement the embodiments of the various features of the invention will now be described with reference to the drawings. The drawings and the associated descriptions are provided to illustrate embodiments of the invention and not to limit the scope of the invention. Reference in the specification to “one embodiment” or “an embodiment” is intended to indicate that a particular feature, structure or characteristic described in connection with the embodiment is included in at least an embodiment of the invention. The appearances of the phrase “in one embodiment” or “in an embodiment” in various places in the specification are not necessarily all referring to the same embodiment. Throughout the drawings, reference numbers are re-used to indicate correspondence between referenced elements. In addition, the first digit of each reference number indicates the figure in which the element first appears.
The utility provider is responsible for choosing the right set of physical resources for each application and its components to satisfy the application's configuration and performance requirements, to avoid resource bottlenecks in the infrastructure, to achieve certain goals and to enforce certain policies. This decision making process, often referred to as resource assignment, is an integral part of a resource access management framework that controls the complete lifecycle of applications' access to resources in a computing utility. For large-scale data centers and networks, resource assignment is typically performed by human operators, who are slow, expensive, and error prone. Hence, large-scale computing utilities are susceptible to a resource assignment problem (RAP).
The virtual topology 400 can be a distributed architecture represented using a graph as shown in
Each application component has requirements for being hosted by certain type of servers. For example, suppose P is a set of attributes (or properties) that are of interest to a particular application, such as processor type, processor speed, number of processors, memory size, disk space, and so on. Then, for each attribute p ε P and each application component c ε C, the requirement is characterized by a set VREQcp, which contains the permissible values of attribute p for component c. The set may be discrete or continuous. For example, an application component may require a server's processor type to be in {SPARC, PA_RISC}, and its processor speed to be in an interval [500, 1000] (in MHz).
The distributed architecture can be converted into an input file or input table containing a list of components and their requirements for processing, communication and storage. The input file or input table is used as the input to the resource assignment module 308. The list of requirements can include, for example, a list of component names, a list of links and the component on each end of the link, the maximum traffic between nodes, the attribute requirements for each component, and so on.
The application model can be used for simultaneous assignment of resources to multiple applications. A graph can be constructed with all the components from all the applications, where each application is represented by a sub-graph. Two sub-graphs are disconnected if the two corresponding applications do not communicate with each other.
Hence, the application model contains the following sets and parameters:
The sets—
The parameters—
The network topology 402 of physical resources can be represented using a graph as shown in
The network topology 402 of physical resources can be converted into an input file or input table containing a list of resources and a set of parameters that describe the capabilities of these resources. The input file or input table is used as the input to the resource assignment module 308. The list of resources can include, for example, a list of servers (e.g., compute servers, load balancers, firewalls), switches, storage devices, and other components.
Hence, the network model contains the following sets and parameters:
The sets—
The parameters—
Using the virtual topology 400 and the network topology 402 as inputs, the resource assignment module 308 uses a multi-commodity flow model (i.e., a mathematical model) to characterize the assignment of application components (i.e., nodes in the virtual topology) to the physical resources (i.e., nodes in the network topology), and the routing of traffic between application components on the links in the physical topology. The multi-commodity flow model is a special class of mixed integer programs in which one should route k commodities in a network. Each commodity has a source node and a destination node in the network, as well as a flow requirement that should be routed between the source and the destination. Each arc in the network has flow capacity requirements. The resource assignment module 308 determines, for example, a minimum cost of routing the commodities in the network while satisfying the capacity and flow requirement constraints. These capacity and flow requirement constraints can be represented using mathematical expressions (as described below), which are converted into one or more mathematical programming codes using mixed integer programming (S-904, S-906). That is, the mathematical expressions can be expressed as code using a mathematical programming language. Then, the resource assignment module 308 uses these mathematical programming commands and calls a solver (S-908), such as CPLEX developed by ILOG, Inc. of Mountain View, Calif., to find the optimal or near-optimal solutions for a measurable function of performance (S-910).
The Decision Variables—The resource assignment module 308 selects the right resource (e.g., server) in the utility fabric for each application component, represented by the following matrix of binary variables.
For all c ε C and s ε S, if
xcs=1, the server s is assigned to component c;
xcs=0, otherwise.
In addition, we define a set of continuous nonnegative flow variables Wcc′mn to represent the flow along arc (m, n) ε A , in the direction from m to n, that originated from component c and is destined to component c′.
The Constraints—Each constraint represents a requirement relating to the capacity and/or demand of the resource and is expressed as a mathematical expression or function, which can be a mathematical inequality and/or equation. The following is a list of constraints on the decision variables along with well-defined mathematical expressions representing the constraints.
Normality Constraints:
1) Only one server is assigned to each application component.
2) Each server is assigned to at most one component.
Link Capacity Constraints:
3) Link capacity constraints for all arcs (m, n) ε A.
Flow Conservation Constraints:
4) Flow conservation for each commodity (c, c′) ε L and each node n ε N.
a) For each switch n ε R, we have
The left side equation represents the total amount of traffic entering switch n, and the right side equation represents the total amount of traffic leaving switch n.
b) For each server node s ε S, we have
The flow conservation constraints at the server nodes are split into two equations because for each commodity (c, c′) ε L, the server cannot be the source and the sink at the same time.
SAN Link Capacity Constraints:
5) The SAN traffic going out of each FC edge switch to a core switch does not exceed the link capacity.
6) The SAN traffic coming into each FC edge switch from a core switch does not exceed the link capacity.
7) The SAN traffic from an FC core switch to a storage device does not exceed the link capacity.
8) The SAN traffic from a storage device to an FC core switch does not exceed the link capacity.
Note that Yfd is a binary parameter, where Yfd=1 if and only if file f is placed on storage device d. Hence, it is another input parameter to the resource assignment module 308. The binary parameter may be computed by a file placement solver.
Assignment Constraints:
9) All the variables are binary, and all the assigned servers, rack switches, and edge switches are feasible.
xcs ε {0, FScs}
10) Similar feasibility constraints can be posed on the flow variables wcc′mn. For example,
0≦wcc′sn≦Tcc′FScs′ ∀ (c,c′) ε L, ∀ s ε S, (s,n) ε A
The Objective Function—The resources in a computing utility system can be assigned to application components based on many criteria, such as application performance, resource utilization, operator policies or economic concerns. In one embodiment, the goal is to minimize the total amount of traffic on all the network arcs used by all commodities.
The above objective function can be shown to be equivalent to minimizing the traffic-weighted average inter-server distance, where distance is measured in terms of network hop count. In general, minimizing J1 results in lower communication delays between application components inside the LAN fabric.
The resource assignment module 308 determines the resources that satisfy the application components given the objective function. For example, the resource assignment module 308 determines the servers in the resource topology that satisfy the application components and traffic requirements of the application architecture. In addition, the resource assignment module 308 determines the traffic flow at each arc of the resource topology that satisfies the bandwidth at each arc while optimizing the network performance. Thereafter, the resource assignment module 308 calls a solver, such as CPLEX, to solve the mixed integer programming problem expressed as the multi-commodity flow model. The results of the solver in graphical format are shown in
Although an exemplary embodiment of the invention has been shown and described, many other changes, combinations, omissions, modifications and substitutions, in addition to those set forth in the above paragraphs, may be made by one having skill in the art without necessarily departing from the spirit and scope of this invention. Accordingly, the present invention is not intended to be limited by the preferred embodiments, but is to be defined by reference to the appended claims.