The following description relates to telecommunications in general and to providing quality of service in a wireless network in particular.
One type of telecommunication network is a wireless network. In a wireless network, two or more devices communicate over a wireless communication link (for example, over a radio frequency (RF) communication link). In one wireless network topology, one or more remote nodes communicate with a central node (also referred to here as a “base station”) over respective wireless communication links. In such a topology, pre-existing network infrastructure is typically provided. In one example, a network of base stations, each of which is coupled to one or more wired networks, is provided. In such a topology, the remote nodes typically do not communicate with one another directly. One example of such a network is a cellular telephone network.
In another wireless network topology (referred to here as “ad hoc”), no predetermined infrastructure is provided. Typically, an ad hoc network is made up of a dynamic group of nodes that communicate over wireless communication links. Because wireless communication links used in ad hoc wireless networks are typically prone to a large variation in quality, providing quality of service (QOS) is important in applications that have demanding availability, bandwidth, and delay requirements. Examples of such applications include real-time and mission critical applications such as search and rescue, wireless multimedia, command and control, and combat support systems.
In one embodiment, a system includes a wireless network comprising a plurality of clusters. Each cluster comprises a set of nodes including a cluster head node. Each node includes at least one resource. When an initiator node in a local cluster included in the wireless network receives an admission request to execute an application comprising a set of tasks, the initiator node forwards the admission request to a local cluster head node for the local cluster. When the admission request is forwarded to the local cluster head node, the local cluster head node requests that at least one of the set of nodes included in the local cluster provide resource availability information to the initiator node. The initiator node attempts to map the set of tasks to a subset of the nodes included in the local cluster using the resource availability information received from nodes in the local cluster. If the initiator node is unable to map the set of tasks to the subset of nodes included in the local cluster, the local cluster head node forwards the admission request to the cluster head node of successive clusters in the wireless network in order to have at least one node in each of the successive clusters send resource availability information to the initiator node until the initiator node is able to map the set of tasks to a subset of the nodes in the wireless network or until there are no additional clusters to forward the admission request to. The initiator node attempts to map the set of tasks to a subset of the nodes from which resource availability information has been received.
In another embodiment, a method includes attempting to map a set of tasks to at least one node within a first cluster of the wireless network based on resource availability of the nodes within the first cluster. The wireless network has a plurality of clusters. Each cluster includes at least one of a plurality of nodes. The method further includes, if unable to map the set of tasks to said at least one node in the first cluster, attempting to map the set of tasks to at least one node in at least one of the first cluster and at least one of the other clusters in the wireless network based on resource availability of the nodes within the first cluster and the at least one of the other clusters in the wireless network.
In another embodiment, a system includes a wireless network comprising a plurality of clusters. Each cluster includes a set of nodes including a cluster head node. Each node includes at least one resource. When an initiator node in a local cluster included in the wireless network receives an admission request to execute an application comprising a set of tasks, the initiator node forwards the admission request to a local cluster head node for the local cluster. When the admission request is forwarded to the local cluster head node, the local cluster head node requests that at least one of the set of nodes included in the local cluster provide resource availability information to the initiator node. The initiator node attempts to map the set of tasks to a subset of the nodes included in the local cluster using the resource availability received from nodes in the local cluster. If the initiator node is unable to map the set of tasks to the subset of nodes included in the local cluster, the initiator node requests that the local cluster head node forward the admission request to at least one remote cluster head node of at least one remote cluster included in the wireless network. When the admission request is forwarded to the at least one remote cluster head node, the at least one remote cluster head node requests that at least one of the set of nodes included in the at least one remote cluster provide resource availability information to the initiator node. The initiator node attempts to map the set of tasks to a subset of the nodes included in at least one of the local cluster and the at least one remote cluster using the resource availability received from nodes in the local cluster and the at least one remote cluster.
In another embodiment, a first node includes a wireless transceiver to send and receive data over a wireless network, a processor in communication with the wireless transceiver, and a tangible medium, in communication with the processor, in which program instructions are embodied. The program instructions, when executed by the processor, cause the first node to receive an admission request from a client. The admission request requesting that a set of tasks be executed. The program instructions, when executed by the processor, cause the first node to forward the admission request to a local cluster head node for a local cluster in order to have at least one node in the local cluster send resource availability information to the first node. The first node is a member of the local cluster. The program instructions, when executed by the processor, cause the first node to receive resource availability information from the at least one node in the local cluster and attempt to map the set of tasks to at least a subset of the nodes included in the local cluster using the resource availability information received from the at least one node in the local cluster. The program instructions, when executed by the processor, cause the first node to, if unable to map the set of tasks to the subset of nodes included in the local cluster, request that the local cluster head node of the local cluster forward the admission request to at least one remote cluster head node of at least one remote cluster included in the wireless network in order to have at least one node in the at least one remote cluster send resource availability information to the first node. The program instructions, when executed by the processor, cause the first node to, if unable to map the set of tasks to the subset of nodes included in the local cluster, attempt to map the set of tasks to at least a subset of the nodes included in at least one of the local cluster and the at least one remote cluster using the resource availability received from the at least one node in at least one of the local cluster and the at least one remote cluster.
In another embodiment, software embodied on a tangible medium readable by a programmable processor included in a first node of a wireless network. The wireless network includes a plurality of clusters. The software includes program instructions executable on at least one programmable processor included in the first node. The program instructions are operable to cause the first node to receive an admission request from a client, the admission request requesting that a set of tasks be executed. The program instructions are operable to cause the first node to forward the admission request to a local cluster head node for the local cluster in order to have at least one node in the local cluster send resource availability information to the first node. The first node is a member of the local cluster. The program instructions are operable to cause the first node to receive resource availability information from the at least one node in the local cluster and attempt to map the set of tasks to at least a subset of the nodes included in the local cluster using the resource availability information received from the at least one node in the local cluster. The program instructions are operable to cause the first node to, if unable to map the set of tasks to the subset of nodes included in the local cluster, request that the local cluster head node of the local cluster forward the admission request to at least one remote cluster head node of at least one remote cluster included in the wireless network in order to have at least one node in the at least one remote cluster send resource availability information to the first node. The program instructions are operable to cause the first node to, if unable to map the set of tasks to the subset of nodes included in the local cluster, attempt to map the set of tasks to at least a subset of the nodes included in at least one of the first cluster and the at least one remote cluster using the resource availability received from received from the at least one node in at least one of the first cluster and the at least one remote cluster.
In another embodiment, a first node includes means for sending and receiving data over a wireless network, means for receiving an admission request from a client, the admission request requesting that a set of tasks be executed, and means for forwarding the admission request to a local cluster head node for a local cluster in order to have at least one node in the local cluster send resource availability information to the first node. The first node is a member of the local cluster. The first node further includes means for receiving resource availability information from the at least one node in the local cluster and means for attempting to map the set of tasks to at least a subset of the nodes included in the local cluster using the resource availability information received from the at least one node in the local cluster. The first node further includes means for requesting that the local cluster head node of the local cluster forward the admission request to at least one remote cluster head node of at least one remote cluster included in the wireless network in order to have at least one node in the at least one remote cluster send resource availability information to the first node, if unable to map the set of tasks to the subset of nodes included in the local cluster. The first node further includes means for attempting to map the set of tasks to at least a subset of the nodes included in at least one of the local cluster and the at least one remote cluster using the resource availability received from the at least one node in at least one of the local cluster and the at least one remote cluster, if unable to map the set of tasks to the subset of nodes included in the local cluster.
The details of one or more embodiments of the claimed invention are set forth in the accompanying drawings and the description below. Other features and advantages will become apparent from the description, the drawings, and the claims.
Like reference numbers and designations in the various drawings indicate like elements.
In the embodiment shown in
In the embodiment shown in
Each distributed application 104 uses various resources in the course of being executed. In the embodiment shown in
In one implementation, network 100 supports periodic distributed applications 104 with a pipeline topology comprising a chain of communication tasks. One example of such a distributed application 104 is illustrated in
The first unmanned air vehicle 202 delivers real-time (that is, time-critical data) surveillance data (for example, high data rate video and/or infrared data) to a fire control terminal 206 operated by one or more soldiers. In the embodiment shown in
The fire control terminal 206, in such an embodiment, is used to control a weapon 210 (for example, to fire HOWITZER at the enemy target 204). Such control information is time-critical. Control information from the fire control terminal 206 is routed to the weapon 210 via the second unmanned air vehicle 208. This type of mission-critical application demands strict limits on end-to-end latency and requires significant bandwidth for network connections. Embodiments of the methods, devices, and systems described here are suitable for use in such an embodiment, though it is to be understood that such methods, devices, and systems are suitable for use with other types of applications and networks.
For example, in the embodiment shown in
As shown in
The application service manager 302 is responsible for the end-to-end resource management for each distributed application. The application service manager 302 handles end-to-end QoS negotiation, admission, and adaptation by breaking end-to-end requests into individual contracts for basic resources that are passed to the appropriate resource managers 304 and to other application service managers 302 executing on other nodes 102 in the network 100. Application service managers 302 receive admission requests from clients 306. Clients 306, as used here, include users, applications 104, or other application service managers 302 executing on other nodes 102 in the network 100.
Each admission request for a particular distributed application comprises a minimum and maximum range of acceptable QoS (CPU load, network bandwidth) for the tasks 106 of that particular application 104. In one implementation, the distributed applications 104 comprise distributed periodic tasks 106 that are connected (that is, communicate) in a pipeline topology. Depending on resource availability, tasks 106 from the same application 104 may be mapped to and executed on the same node 102, on different nodes 102 in the same cluster, or on nodes 102 from different clusters. Typically, each case incurs an increasing cost of intra-application communication.
During operation of such an embodiment, it may be the case that some application tasks 106 must be admitted on a specific node 102 or on a node 102 that is close to a particular geographical location and/or physical item. One example is shown in
In one implementation, such task constraints are addressed by defining special resources appropriate to the particular constraint. In the previous example, a “sensor” resource and “target display” resource are defined. In such an implementation, the first unmanned air vehicle 202 executes a sensor resource manager 304 that manages access to the sensor resource available on the first unmanned air vehicle 202. The fire control terminal 206 executes a target display resource manager that manages access to the target display resource available on the fire control terminal 206. Application service managers 302 in the network 100 match requests made by tasks 106 for the sensor resource and the target display resource to the sensor resource manager 304 and the target display resource manager 304, respectively, as appropriate. Moreover, in other implementations, the system 300 is adapted to account for general location constraints by preloading a matrix X (described below), which defines the task mapping, with xij values reflecting a desired mapping of a particular task i onto a particular node j.
The embodiment of method 400 shown in
The client 306 that sends the admission request is referred to here as the “initiator client.” The admission request is received by the application service manger 302 executing on the same node 102 as the initiator client 306. The receiving application service manager 302 is also referred to here as the “initiator application service manager” or “initiator ASM.” The node 102 on which the initiator client 306 and the initiator ASM 302 are executing is referred to here as the “initiator node 102.” Also, the cluster 108 that the initiator node 102 is a member of is referred to here as the “local cluster 108.” The cluster head node 102 of the local cluster 108 is referred to here as the “local cluster head node” or “local cluster head.” In one embodiment, the admission request identifies the distributed application 104 that the client 306 wishes to have admitted (which is also referred to here as the “pending application”), the tasks 106 that comprise the distributed application 104 (which are also referred to here as the “pending tasks”), and minimum and maximum resource allocations for each resource that is needed by the pending tasks 106.
The initiator ASM forwards the admission request on to the local cluster head node 102 (block 406). The initiator ASM 302 forwards the admission request to the local cluster head node 102. The cluster head node 404 receives the admission request and forwards the admission request on to each of the nodes 102 in the local cluster 108. Such forwarding is done in accordance with the underlying routing protocol used in the network 100. The nodes 102 in the local cluster 108 are also referred to here as the “local nodes” 102. The cluster head node 102 to which the admission request was most recently forwarded is also referred to here as the “current cluster head node.” The cluster associated with the current cluster node is also referred to here as the “current cluster.” For example when the admission request is forwarded to the local cluster head node 102, the local cluster head node 102 is the current cluster head node 102 and the local cluster 108 is the current cluster.
As described below in connection with
As described below in connection with
After the initiator ASM 302 has received the resource availability from the nodes 102 in the current cluster (block 408), the initiator ASM 302 attempts to map the pending tasks to one or more nodes from which resource availability has been received (block 410). In one implementation, the initiator ASM 302 attempts to map the pending tasks after either the initiator ASM 302 has received the resource availability from all of the nodes 102 in the current cluster 108 or a predetermined timeout period has elapsed.
In one implementation (shown in
In this implementation, during the greedy admission process, the initiator ASM 302 attempts to map the pending tasks 106 to the nodes 102 from which resource availability has been received based on the unused resource availability of each such node 102 using a best fit/first fit algorithm (block 412). The best fit/first fit algorithm attempts to map as many of the pending tasks 106 as possible on one node 102. If the greedy admission process does not result in enough resources being provided to the pending application 104 (checked in block 414), then the initiator ASM 302 attempts to map the pending tasks 106 to the nodes 102 from which resource availability has been received based on the unused resource availability and adaptation resource availability of such nodes 102 (block 416). A best fit/first fit algorithm that attempts to fit as many of the pending tasks 106 on one node 102 as possible is used. The initiator ASM 302 attempts to map the pending tasks 106 using the adaptation resource availability by determining if the pending tasks 104 can be admitted by reducing the resource utilization of one or more tasks 106 executing on one or more nodes 102 that have previously been admitted and are already executing at the time the mapping process occurs. A task 106 that should have its resource utilization lowered is referred to here as an “adapted task” 106. A distributed application 104 that comprises at least one adapted task 106 is also referred to here as an “adapted application” 104.
If there are enough available resources to admit the pending application (checked in block 418 of
As is described below in connection with
When adaptation is required to admit a distributed application 104 (checked in block 422), the initiator ASM 302 sends an adapt message to the other nodes 102 on which the distributed application 104 executes that have not received a commit message (block 424). Those nodes 102 that do not receive a commit message and on which the distributed application 104 execute need to be informed that the distributed application 104 has been adapted. When such a node 102 receives an adapt message, the node 102 is able to adjust the resource utilization for the distributed application 104 and notify its tasks, if appropriate. The resource utilization for the adapted application 104 on that receiving node 102 is adjusted to be compatible with the application resource utilization on the other nodes 102 on which the application 104 executes (for example, as described below in connection with
If there are not enough available resources to admit the pending application (checked in block 418), the initiator ASM 302 requests that the local cluster head 102 forward the admission request on to another cluster 108 in the network 100 to check for resource availability (block 426). Such other cluster 108 is referred to here as a “remote cluster.” If there is no other remote cluster 108 left in the network 100 to check for resource availability (for example, when all the remote clusters 108 in the network 100 have previously been checked) (checked in block 428), the pending application 104 is not admitted for execution in the network 100 (block 430). This fact is communicated by the initiator client 306 to the initiator client 306.
If there is at least one other remote cluster 108 in the network left to check for resource availability, the local cluster head 102 selects one such remote cluster 108 and forwards the admission request to the cluster head node 102 of the selected remote cluster 108 as described below in connection with
The cluster head node 102 for the selected remote cluster 108 receives the admission request and forwards the admission request on to each of the nodes 102 in the selected remote cluster 108. The admission request is forwarded in accordance with the underlying routing protocol used in the network 100. As described below in connection with
Method 400 then loops back to block 408, where the initiator ASM 302 receives the resource availability information communicated from the nodes 102 in the current cluster 108 and attempts to map the pending tasks to one or more nodes from which resource availability has been received (for example, the local nodes 102 and the nodes in the selected remote cluster 108). Such processing is repeated until the initiator ASM 302 has located sufficient resources to admit the pending application 104 or until the resource availability of all clusters 108 in the network 100 have been checked.
Each cluster head node 102 also listens for a request from an initiator ASM 302 to forward the admission request on to another cluster 108 in the network 100 (block 508 shown in
If there is another remote cluster 108 to check, the local cluster head node 102 forwards the admission request on to the cluster head node 102 of the selected remote cluster 108 (block 516). The cluster head node 102 of the selected remote cluster 108, as described above in connection with blocks 502 through 506, receives the admission request and forwards the admission request to the nodes 102 in the selected remote cluster 108. The nodes 102 in the selected remote cluster 108 communicate their resource availability to the initiator node 102 in response to the admission request.
As shown in
In the embodiment shown in
In one implementation, the adaptation resource availability determination is made based on the relative priority of the various tasks 106 that are using each managed resource. For example in one such implementation, each application 104 is assigned a priority level. If a first application 104 has a lower assigned priority level than the priority level assigned to a second application 104, the first application 104 and the tasks 106 that comprise the first application 104 have a lower priority than the second application 104 and the tasks that comprise the second application 104. In such an implementation, each resource manager 304 determines the adaptation resource availability, for each of its managed resources, by identifying those tasks 106 executing on the receiving node 102 that have a lower priority than the pending application 104 and that are utilizing that managed resource. For each such identified lower priority task 106, it is determined how much of that managed resource would be freed up if the lower priority task 106 reduced its resource utilization of that resource to the minimum level permitted under the lower priority task's QoS contract.
In another implementation, the adaptation resource availability determination is made based on, at least in part, a class assigned to the tasks 106 for a given managed resource. For example, in one such implementation each application 104 is assigned a QoS class (such as best efforts, essential, critical, etc.) for a given managed resource (such as a network resource). Each class defines a policy or other relationship between the tasks assigned to that class and the given managed resource. The policy determines under what circumstances and by how much the utilization of the given managed resource by such tasks can be adapted. In such an implementation, each resource manager 304 determines the adaptation resource availability, for each of its managed resources, by identifying those tasks 106 executing on the receiving node 102 that have an assigned class that permits adaptation under the circumstances existing at that moment. For each such identified task 106, it is determined how much of that managed resource would be freed up if that task 106 reduced its resource utilization of that resource to the minimum level permitted under that task's QoS contract and assigned class.
The total resource availability for the receiving node 102 is then sent to the initiator node 102 (block 612). In one embodiment, for example, the initiator node 102 is identified in the admission request received by the receiving node 102. For those pending tasks 106 for which the receiving node 102 has sufficient resources to satisfy the QoS requirements specified in the admission request, the node 102 reserves those resources for those pending tasks (block 614). In one implementation, the receiving node 102, for each such pending task 106, reserves the maximum amount of each such resource that is available, up to the maximum resource level specified in the admission request for the pending task 106. While a portion of a resource is in the reserved state, the receiving node 102 treats the reserved resources, for the purposes of determining resource availability for subsequent admission requests, as if the associated pending task 106 has actually been committed on the receiving node 102. In such an implementation, both unused resources and adaptation resources are reserved in this manner.
The reserved resources remain in the reserved state until the receiving node 102 receives a commit message from the initiator node 102 related to the previously received admission request (checked in block 616) or until a timeout period has elapsed since the reserved resources were reserved (checked in block 618). For example, in one implementation, a timeout period of 120 seconds is used. The commit message sent from the initiator node 102 will specify which of the resources reserved on the receiving node 102 should actually be used to execute the associated pending tasks 106 on the receiving node 102. Thus when the receiving node 102 receives such a commit message, the receiving node 102 commits each reserved resource specified in the commit message and starts execution of the associated pending task 106 (block 620). Also, the receiving node 102 releases all the other reserved resources, if any (block 622). If a commit message related to the previously received admission request is not received within the timeout period, the receiving node 102 releases all the reserved resources for that admission request (block 622). After the reserved resources have been released, those resources are again available for subsequent admission requests. The overhead associated with “rolling back” such resource reservations when the reserved resources are not ultimately going to be used for the pending admission request is reduced in such an embodiment (for example, as compared to sending additional messages indicating that the reserved resources should be released).
In addition to listening for and processing admission requests, each receiving node 102 also listens for and processes adapt messages that are sent out by an initiator node 102 as described above in connection with
As noted above, when a distributed application 104 has been adapted, at least one of the tasks 106 that comprise the adapted application 104 has had its resource utilization lowered on the node 102 on which that task 106 executes. The nodes 102 on which such tasks 106 execute are sent a commit message. As noted above, an adapt message is sent to the other nodes 102 on which the adapted application 104 executes, if any, that have not received a commit message. Those nodes 102 that do not receive a commit message and on which the adapted application 104 executes need to be informed that the application 104 has been adapted.
When such a node 102 receives an adapt message, the node 102 is able to adjust the resource utilization for the adapted application 104 to be compatible with the application's resource utilization on other nodes 102 (for example, as described below in connection with
Also, each node 102 that receives an adapt message releases any resources reserved for the pending application 104, if any (block 634). That is, if the node 102 that received the adapt message had previously reserved resources for the pending application, those reserved resources are released since that node 102 knows by virtue of receiving the adapt message that it will not receive a commit message. In other embodiments and implementation, however, this may not be the case.
The cluster head node 102 (more specifically, the ASM 302 executing on the cluster head node 102) receives the admission request and forwards the admission request to all the nodes 102 in the local cluster 108 (shown using dotted lines in
After the initiator ASM 302 has received the resource availability from the nodes 102 in the local cluster 108 (or after a predetermined period has elapsed), the initiator ASM 302 attempts to map the pending tasks 106 that comprise the pending application 104 on to the nodes 102 that provided resource availability information to the initiator ASM 302. In this example, there are not enough available resources on the nodes 102 in the local cluster 108. Therefore, the initiator ASM 302 is not able to successfully map all pending tasks 106 to the nodes 102 in the local cluster 108. As a result, the initiator ASM 302 requests (shown using a solid line in
Then, the local cluster head 102 forwards the admission request to the cluster head node 102 for the selected remote cluster 108 (shown using a dashed line in
After the initiator ASM 302 has received the resource availability from the nodes 102 in the selected remote cluster 108 (or after a predetermined period has elapsed), the initiator ASM 302 attempts to map the pending tasks 106 that comprise the pending application 104 on to the nodes 102 that provided resource availability information to the initiator ASM 302 (that is, the nodes 102 in the local cluster 108 and the selected remote cluster 108). In this example, there are enough available resources in the local cluster 108 and the remote cluster 108 to admit the pending application. Therefore, the initiator ASM 302 on the initiator node 102 sends commit messages to those nodes 102 in the local cluster 108 and the selected remote cluster 108 on which a pending task has been mapped and will execute (shown using a solid line in
In this example, one distributed application 104 needs to be adapted in order to admit the pending application 104. The initiator ASM 302 sends an adapt message to those nodes 102 in the network 100 that on which the adapted application 104 executes that have not received a commit message (shown using a solid line in
In addition, for those nodes 102 that reserved resources for the pending application 104 during the admission process but did not receive a commit message or an adapt message, those nodes 102 release any resources reserved for the pending application 104 after the relevant timeout period elapses.
The following describes an exemplary resource allocation model for a single distributed application 104. Such a single-application resource allocation model characterizes the mapping of the one or more tasks 106 of the single distributed application to one or more nodes 102 in the network 100. Such a resource allocation model also characterizes the allocation of resources among the one or more tasks 106 that comprise the distributed application 104. Examples of such resources are node resources and network resources.
The single-application resource model described here is based on the following assumptions that simplify the problem formulation. First, it is assumed that the quality-of-service (QoS) dimensions have a one-to-one correspondence to system resources types. A QoS request for an application specifies, for each resource that is needed by that application, a minimum resource vale (“min”) and a maximum resource value (“max”). The definition of the min and max values defines a range of acceptable allocations for that resource.
Another assumption is that node resources are modeled as limited buckets of capacity rmax with the admission condition Σri≦rmax, where ri is the resource amount allocated for task i. The total resource utilization in the network 100 cannot exceed the total amount of resources available in the network 100.
Another assumption is that a network resource is modeled as a limited bucket associated with a pair of nodes 102 that communicate over one or more wireless network links. The example of a network resource used in the exemplary single-application resource allocation model described here is communication bandwidth between two nodes 102 in the network 100.
Another assumption is that the wireless network links established between any two nodes 102 in the network 100 are bi-directional. Also, it is assumed that each of the bi-directional connections in each such network link share the same network resource. That is, in this exemplary resource allocation model, each of the bi-directional connections in each network link shares the same communication bandwidth.
Another assumption that is made in the exemplary single-application model described here is that resources are independent of each other. Also, it is assumed that resources are not probabilistic and the system guarantees the contracted QoS.
The single-application model defines node resources and network resources and formalizes allocation constraints. In such a model, the allocation problem is formulated as an optimization problem. There are n nodes 102 and m types of node resources and one type of network resource. A distributed application T comprises s communicating tasks, T=(T1, T2, . . . , TS).
An admission request (also referred to here as a “QoS request”) for distributed application T is described, in such a model, by a set of quality-of-service descriptors, one for each QoS dimension. The QoS request is described by matrices Qm and QM. Matrices Qm=(qijm)i=1, . . . , m, j=1, . . . , s and QM=(qijM)i=1, . . . , m, j=1, . . . , s define the minimum and maximum QoS requirements, respectively, for application tasks T1, . . . , Ts, where m is the number of QoS dimensions (that is, number of node resource types) and qijm≦qijM. In addition, q1 is considered “a better QoS” than q2 if q1>q2.
Matrix R0 describes the available resources before application admission. R0=(rij0)i=1, . . . , m, j=1, . . . , n, where rij0 is the available amount of resource of type i on node j and R0ε[0, ∞)m×n.
The admission control admits the s tasks in the system. The mapping of the s tasks on the n nodes is given by matrix:
X=(xij)i=1, . . . , s, j=1, . . . , n,
with
where Xε{0, 1}s×n.
The vector Map is defined as Mapi=j if task Ti was mapped on node j. The resource management system (for example, an initiator application service manager) allocates resources Ra=(rija)i=1, . . . , m, j=1, . . . , s to the s tasks, where the amount rija>0 of resource i has been assigned to task j.
The single-application resource allocation described here assumes that network resources are allocated independently for each communication link between any two nodes. The network resource is modeled by a limited bucket for each bi-directional link established between a pair of nodes (i, j). Matrix NR0 defines the available network resource at admission time, where NR0ε[0, ∞)n×n and NRij0 defines the network resource available to the (i, j) communication link.
Matrices NQm and NQM define the minimum and maximum network resource requirement, respectively, for each communication link (i, j), for which tasks Ti and Tj communicate, where NQm and NQMε[0, ∞)s×s.
The set TC contains all required connections between tasks. Thus, TC={(i, j) | Ti communicates with Tj, i<j}.
Matrix NQa defines the allocated network resource. Thus, NQija=network resource allocated for communication link (Ti, Tj), where NQaε[0, ∞)s×s.
This resource model assumes there is a (possible multi-hop) path in the network between any two nodes and that all resource allocations for connections are independent. The resource management system maps the tasks to nodes and allocates resources for each connection between two tasks. A connection between tasks Ti and Tj is mapped to a connection between nodes Mapi and Mapj. The system allocates NQija resource to the (i, j) connection by subtracting the same resource amount NQija from the available network resource for connection (Mapi, Mapj), where after allocation:
NR
0[Mapi, Mapj]′=NR0[Mapi, Mapj]−NQija.
Matrix NRa defines the allocated network resources for an application (T1, . . . , Ts, TC):
NR
a=(nrxya)x,y=1, . . . , n,
where nrxya=nqija and (x, y)=(Mapi, Mapj) and NRaε[0, ∞)n×n.
In other embodiments, this resource model can accommodate alternate allocation strategies by adjusting the equations for resource constraints and resource availability update. For example, in another embodiment, network resources are modeled based on node communication capacity and explicit end-to-end path information that would be available from the routing protocol.
The single-application resource allocation model described here also specifies various conditions that any resource allocation must meet in such an embodiment. These conditions are also referred to here as “constraints.” One type of constraint relates to node resources and such constraints are referred to here as “node resource constraints.” In the exemplary single-application resource allocation model described here, one node resource constraint relates to task mapping and specifies that each task is admitted on exactly one node as specified by:
Another node constraint relates to application quality-of-service and specifies that allocated resources satisfy QoS requirements:
Qm≦Ra≦QM
Another node constraint relates to resource availability and specifies that a particular resources allocation is limited by availability:
RaX≦R0 or
x
1j
r
i1
a
+x
2j
r
i2
a
+ . . . +x
sj
r
is
a
<=r
ij
0,
for all resources i=1, . . . , m and all nodes j=1, . . . , n.
Another type of constraint relates to network resources and such constraints are referred to here as “network resource constraints.” In the exemplary single-application resource allocation model described here, one network resource constraint relates to application QoS and specifies that all connections between tasks must be allocated network resources between minimum required and maximum needed. Note that, in such an exemplary model, Map maps from NRa to NQa, where NQm≦NQa≦NQM. Another network constraint relates to resource availability and specifies that the allocated network resource for all connections cannot exceed the available limit. That is, NRa≦NR0.
The optimal resource allocation is designed to maximize the application QoS utility defined as a function of the combined QoS satisfaction ratio for all tasks. The application's overall utility is a linear combination of the node task utility and the network utility.
The node utility of task Ti for resource j is normalized to:
Matrix U=(uij)i=1, . . . , s, j=1, . . . , m. The node utility of task Ti is a weighted sum of resource utilities:
u
i
=w
1
u
i1
+ . . . +w
m
u
im, with i=1, . . . , s.
Weights wj≧0, j=1, . . . , m, and Σwj=1. The application node utility vector is V=(ul, . . . , us)T=UW, where VεR+*s×1, W=(w1 w2 . . . wm)TεR+*m×1, wj≧0, and Σwj=1.
In the exemplary single-application module described here, a network utility is defined. The network utility nu for application (T, TC), is defined as:
if nqijM=nqijm or i=j then nu=1, awarding maximum utility for full allocation or for tasks mapped on the same node;
if nqijM>nqijm, then:
In the exemplary single-application module described here, an application utility is defined. The application utility for a multi-staged admitted application is defined as the weighted sum of node task utilities and the network utility:
V=α
1
u
1+α2u2+ . . . +αsus+αs+1nu.
In matrix notation, v=A(V nu)T, with A=(α1 . . . αs, αs+1), αi≧0, and
In the exemplary single-application model described here, the optimal allocation problem is to determine the task mapping X, a node resource allocation NRa and a network resource allocation NQa, so that the node resource constraints and network resource constraints described above are obeyed and the application utility v described above is maximized. This is a mixed integer programming optimization problem with a fairly complex structure. The resource allocation problem is NP-hard by reduction to the integer bin-packing problem. The technique for admitting a distributed application described above in connection with
Formulating the admission utility function using weighted sums allows us to inject user-defined policies and application semantics into the allocation process. For the node task utility function, the relation between the resource type weights wj, may impact the contribution of the task to the overall application utility, thus being a factor to the final mapping of tasks to nodes. In essence, the weight wj can be directly correlated to the relative importance the user assigns to a resource type j. The admission process will map tasks to nodes where allocation of specific resources contributes maximum utility. For instance, if the fraction wCPU/wMemory=⅓, then the admission algorithm, in the process of optimizing the total application utility value, will be more likely to map tasks to nodes where the memory allocation is closer to the maximum required. Similarly, the weights αi from the application utility formula can be adjusted by users to express preference towards maximizing utility of specific tasks or of the network bandwidth allocation (αs+1).
The following describes another exemplary resource allocation model for multiple distributed applications 104. Such a multiple-application resource allocation model characterizes the mapping of the one or more tasks 106 of multiple distributed applications to one or more nodes 102 in the network 100. Such resource allocation model also characterizes the allocation of resources among the one or more tasks 106 that comprise each of the multiple distributed applications. Examples of such resources are node resources and network resources.
In this exemplary multi-application module, each of the multiple distributed applications is characterized by a priority, common for all the application's stages (that is, tasks). It is also assumed that each of the distributed applications is admitted if all of its stages are admitted to the system. A constraint that applies to this model is that higher priority applications are never preempted by lower priority applications. The objective of this exemplary multi-application model is to maximize the QoS satisfaction level for higher-priority applications. In other embodiments, the optimization goal is to maximize the overall number of admitted applications.
In this exemplary multi-application resource allocation module, the system admits and allocates resources for the set A={A1, . . . , At} of t applications, ordered increasingly on priority. The system comprises n nodes with resource availability R0=(rij0)i=1, . . . , m, j=1, . . . , n, for m resources distributed on the n nodes, and NR0 for network resources. Each application Ai is characterized by a priority pi>0. In this exemplary multi-application module, it is assumed that pi≦pi+1. Also, for each application Ai, a minimum requested QoS Qim and a maximum requested QoS QiM for node resources are defined. Note that, in this embodiment, QoS dimensions map one-to-one to resources. Further, for each application Ai, a minimum requested QoS NQim and a maximum requested QoS NQiM for network resources are defined.
The resource management system (for example, an initiator application service manager) maps application tasks and allocate resources. The vector Y=(y1, . . . , yt) indicates the application admission:
And matrices Xi define individual task mapping for application i.
The global objective function for this exemplary multi-application model is normalized for individual application utility values. In this model, it is desired that the utility contributed by each application to the overall objective be proportional to the QoS (that is, amount of resources) received from the system and not to the number of stages.
The application node utility for application i is therefore normalized on the number of stages si and the network utility is also normalized on the number of connections |TCi|:
with weight factors A=(α1 . . . αsi, αsi+1), αj≧0, and Σj=1, . . . , s
The global objective function assigns more weight to utility contributed by higher priority applications. The goal, in this exemplary model, is to maximize v*:
where yiε{0, 1}, and
The set of constraints for the optimization problems relates to resource allocation and priority-based preemption. The resource constraints are an extension of those listed above in connection with the single-application resource application model. The constraints specify that the resources allocated to all applications should not exceed initial availability:
The constraints specify that the allocated resources should satisfy QoS demands for admitted applications. For all i=1, . . . , t:
YiQim≦yiRia≦yiQiM, for node resources, and
yiNQim≦yiNQia≦yiNQiM, for network resources.
The constraint stating that higher priority applications cannot be preempted by lower priority applications is formulated as yi≦Yi+1, for all i=1, . . . , t−1, where it is assumed that pi≦pi+1.
In the multi-application resource allocation model described here, the allocation optimization problem is specified by maximizing the global objective function:
where:
and i=1, . . . , t, and for each application i:
Also, for each application i, if nqijM=nqijm or i=j (that is, tasks on same node) then, nu=1. Otherwise, if nqijM>nqijm, then:
with the following constraints (t is the number of applications):
for node resources, and
for network resources.
Also, for all i=1, . . . , t:
The resource allocation problem asks for computing the following matrices: Y for admitted applications and Xi for task mappings for application i, Ria for allocated node resources, and NRia for the network resource, for application i=1, . . . , t.
In one usage scenario, application admissions come at different times. The technique for admitting a distributed application described above in connection with
The large number of variables (t+tsn+tsm+tnn) for this mixed integer program, makes a real-time approximation with branch-and-bound or even with a linear program unfeasible. The technique for admitting a distributed application described above in connection with
In another embodiment making use of such a multi-application model, an alternative goal for the admission procedure is to maximize the overall number of accepted applications, where higher priority application have precedence. Later after admission, a QoS expansion phase would increase the QoS for admitted applications from remaining resources. The large optimization problem that results from such an embodiment can be broken in two smaller pieces with fewer unknowns. In other words, in such an embodiment, the admission process includes two phases
The first phase is admission with minimal QoS, so that the overall number of admitted applications is maximized. The optimization problem can be formalized as maximizing the objective function:
with the following constraints:
for node resources, and
for or network resources.
By admitting applications at their minimum requested QoS, the solution space can be significantly decreased. Only the unknown matrices Xi and Y=(y1, . . . , yt), with elements in {0, 1} have to be determined for this integer program.
After the first phase of the two-phase admission process, indicators yi and Xi have been determined. The second phase of the two-phase admission process involves QoS expansion. The system allocates remaining resources to admitted applications, with preference to higher priority applications. The QoS expansion can be formulated as a linear program as maximizing the objective function (the QoS satisfaction ratio):
where:
and i=k, . . . , t, and for each application i:
with the following constraints (t is the number of applications):
for node resources, and
for network resources.
Also, for all i=k, . . . , t:
The ts(m+n) remaining unknowns for this linear program are matrices Ria and NQia, for i=1, . . . , t.
The methods and techniques described here may be implemented in digital electronic circuitry, or with a programmable processor (for example, a special-purpose processor or a general-purpose processor such as a computer) firmware, software, or in combinations of them. Apparatus embodying these techniques may include appropriate input and output devices, a programmable processor, and a storage medium tangibly embodying program instructions for execution by the programmable processor. A process embodying these techniques may be performed by a programmable processor executing a program of instructions to perform desired functions by operating on input data and generating appropriate output. The techniques may advantageously be implemented in one or more programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Storage devices suitable for tangibly embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and DVD disks. Any of the foregoing may be supplemented by, or incorporated in, specially-designed application-specific integrated circuits (ASICs).
A number of embodiments of the invention defined by the following claims have been described. Nevertheless, it will be understood that various modifications to the described embodiments may be made without departing from the spirit and scope of the claimed invention. Accordingly, other embodiments are within the scope of the following claims.
The U.S. Government has a paid-up license in this invention and the right in limited circumstances to require the patent owner to license others on reasonable terms as provided for by the terms of Contract No. N00014-01-C-0031 awarded by the Department of the Navy.