SMARTCOMP 2014 Algorithmic approach to deadlock detection for resource allocation in heterogeneous platforms HA HUY CUONG NGUYEN Department of Information Technology, Quang Nam University Quang Nam, Viet Nam nguyenhahuycuong@gmail.com VAN SON LE Da Nang University of Education Da Nang University Da Nang, Viet Nam levansupham2004@yahoo.com Abstract— An allocation of resources to a virtual machine specifies the maximum amount of each individual element of each resource type that will be utilized, as well as the aggregate amount of each resource of each type An allocation is thus represented by two vectors, a maximum elementary allocation vector and an aggregate allocation vector There are more general types of resource allocation problems than those we consider here In this paper, we present an approach for improving parallel deadlock detection algorithm, to schedule the policies of resource which supply for resource allocation in heterogeneous distributed platform Parallel deadlock detection algorithm has a run time complexity of O(min(m,n)), where m is the number of resources and n is the number of processes We propose the algorithm for allocating multiple resources to competing services running in virtual machines on a heterogeneous distributed platform The experiments also compare the performance of the proposed approach with other related work Keywords— Cloud computing; Resource Heterogeneous Platforms; Deadlock detection allocation; I INTRODUCTION Recently, there has been a dramatic increase in the popularity of cloud computing systems that rent computing resources on-demand, bill on a pay-as-you-go basis, and multiplex many users on the same physical infrastructure These cloud computing environments provide an illusion of infinite computing resources to cloud users that they can increase or decrease their resource In many cases, the need for these resources only exists in a very short period of time The increasing use of virtual machine technology in the data center, both leading to and reinforced by recent innovations in the private sector aimed at providing lowmaintenance cloud computing services, has driven research into developing algorithms for automatic instance placement and resource allocation on virtualized platforms[1,2], including our own previous work Most of this research has assumed a platform consisting of homogeneous nodes connected by a cluster However, there is a need for algorithms that are applicable to heterogeneous platform Heterogeneity happens when collections of homogeneous resources, formerly under different administrative domains, are federated and lead to a set of resources that belong to one 978-1-4799-5711-8/14/$31.00 ©2014 IEEE THANH THUY NGUYEN University of Engineering and Technology - Vietnam National University, Hanoi Ha Noi, Viet Nam nguyenthanh.nt@gmail.com of several classes This is the case when federating multiple clusters at one or more geographical locations e.g., grid computing, sky computing In this work, we propose virtual machine placement and resource allocation deadlock detection algorithms that, unlike previous proposed algorithms, are applicable to virtualized platforms that comprise heterogeneous physical resources More specifically, our contributions are: We provide an algorithmic approach to detect deadlock and resource allocation issues in the virtualization platform heterogeneity This algorithm is in fact more general, even for heterogeneous platforms, and only allows to allocate minimal resources to meet QoS arbitrary force Using this algorithm, we extend previously proposed algorithms to the heterogeneous case We evaluate these algorithms via extensive simulation experiments, using statistical distributions of application resource requirements based on a real-world dataset provided by Google Most resource allocation algorithms rely on estimates regarding the resource needed for virtual machine instances, and not refer to the issue of detecting and preventing deadlock We studied the impact of estimation error and propose different approaches to mitigate these errors, and identify a strategy that works empirically well The rest of the paper is organized as follows: In section we introduce the related works; In we introduce existing models; In we present approach for improving parallel deadlock detection algorithm We conclude with some indications for future works on section II RELATED WORKS Resource allocation in cloud computing has attracted the attention of the research community in the last few years Srikantaiah et al [8] studied the problem of request scheduling for multi-tiered web applications in virtualized heterogeneous systems in order to minimize energy consumption while meeting performance requirements They proposed a heuristic for a multidimensional packing problem as an algorithm for workload consolidation Garg et al [10] proposed near optimal scheduling policies that consider a number of energy efficiency factors, which change across different data centers depending on their location, architectural design, and management system Warneke et al [11] discussed the challenges and opportunities for efficient parallel data processing in cloud environment and presented a data processing framework to exploit the dynamic resource provisioning offered by IaaS clouds Wu et al [12] propose a resource allocation for SaaS providers who want to minimize infrastructure cost and SLA violations Addis et al [13] proposed resource allocation policies for the management of multi-tier virtualized cloud systems with the aim to maximize the profits associated with multiple – class SLAs A heuristic solution based on a local search that also provides availability, guarantees that running applications have developed Abdelsalem et al [14] created a mathematical model for power management for a cloud computing environment that primarily serves clients with interactive applications such as web services The mathematical model computes the optimal number of servers and the frequencies at which they should run Yazir et al.[15] introduced a new approach for dynamic autonomous resource management in computing clouds Their approach consists of a distributed architecture of NAs that perform resource configurations using MCDA with the PROMETHEE method Our previous works mainly dealt with resource allocation, QoS optimization in the cloud computing environment III EXISTING MODELS AND PROBLEM DEFINITIONS We consider a service hosting platform composed of H heterogeneous hosts, or nodes Each node comprises D types of different resource, such as CPUs, network cards, hard drives, or system memory For each type of resource under consideration a node may have one or more distinct resource elements (a single real CPU, hard drive, or memory bank) [16,17,18] Services are instantiated within virtual machines that provide analogous virtual elements For some types of resources, like system memory or hard disk space, it is relatively easy to pool distinct elements together at the hypervisor or operating system level so that hosted virtual machines can effectively interact with only a single larger element For other types of resources, like CPU cores, the situation is more complicated These resources can be arbitrarily partitioned among virtual elements, but they cannot be effectively pooled together to provide a single virtual element with a greater resource capacity than that of a physical element For these types of resources, it is necessary to consider the maximum capacity allocated to individual virtual elements, as well as the aggregate allocation to all virtual elements of the same type An allocation of resources to a virtual machine specifies the maximum amount of each individual element of each resource type that will be utilized, as well as the aggregate amount of each resource of each type An allocation is thus represented by two vectors, a maximum elementary allocation vector and an aggregate allocation vector Note that in a valid allocation it is not necessarily the case that each value in the second vector in an integer multiple of the corresponding value in the first vector, as resource demands may be unevenly distributed across virtual resource element Resource allocation for distributed cluster platforms is currently an active area of research, with application placement [19], load balancing [18], [20], and avoiding QoS constraint violations [19], [20] being primary areas of concern Some authors have also chosen to focus on optimizing fairness or other utility metrics [20] Most of this work focuses on homogeneous cluster platforms, i.e., platforms where nodes have identical available resources Two major research areas that consider heterogeneity are embedded systems and volunteer computing In the embedded systems arena, the authors of [20] also employ heterogeneous vector packing algorithms for scheduling Most of the existing theoretical research on multi-capacity bin packing has focused on the offline version of the problem with homogeneous bins As stated previously, the problem of properly modeling resource needs is a challenging one, and it becomes even more challenging with the introduction of error To date we have not been aware of other studies that systematically consider the issues of errors in CPU, RAM, needs estimates Example Resource distributed platforms allocation on NODE B NODE A #1 #2 #3 #4 #1 #2 RAM CPU RAM There are more general types of resource allocation problems than those we consider here For instance: We consider the possibility that users might be willing to accept alternative combinations of resources For example, a user might request elementary capacity CPU, RAM, HDD rather than a specific RESOURCE ALLOCATION #3 RAM elt agg elt agg 0.4 1.6 0.3 0.9 CPU 2.0 1.5 1.5 RAM 2.0 REQUIREMENT SERVICE heterogeneous NEED CPU 0.2 1.0 0.2 1.0 CPU RAM 1.0 1.0 0.0 0.0 RAM CPU 0.4 0.8 0.3 0.9 CPU RAM 1.5 1.5 1.5 1.5 RAM Fig Example problem instance with two nodes and one service, showing possible resource allocations We consider the possibility that resources might be shared In this case, some sharing is typically permitted; for example, two transactions that need only to read an object can be allowed concurrent access to the object Figure above illustrates a simple example with two nodes and one service Node A comprises four cores and a large memory Its resource capacity vectors show that each core has elementary capacity 0.4 for an aggregate capacity of 1.6 Its memory has capacity 2.0, with no difference between elementary and aggregate values because the memory, unlike We begin by defining our generalized resource allocation problem, including the deadlock problem as an interesting special case We then give several typical solutions 98 cores, can be arbitrarily partitioned (e.g., no single virtual CPU can run at 0.5 CPU capacity on this node) Node B has three cores, more powerful, cores, each of elementary capacity 1.5, and a smaller memory The service has a 0.2 elementary CPU requirement, and a 1.0 aggregate CPU requirement For instance, it could contain two threads that must each saturate a core with 0.2 capacity The memory requirement is 1.0 The elementary CPU need is 0.2 and the aggregate is 1.0 The memory need is 0.0, which means the service simply requires a 0.5 memory capacity The figure shows two resource allocations one on each node On both nodes the service can be allocated the memory it requires If the service is placed on Node A, then the elementary requirements and needs can be fully satisfied as they are both 0.2 and this is less than the elementary allocation of 0.4 However, since the aggregate capacity is 0.8 and the service has a CPU requirement of 1.0 that must be fully satisfied in order for the resource allocation to be unsuccessful On Node B, the service can fully saturate three cores, leading to an aggregate CPU allocation of 0.9 The service’s yield is then (0.9 – 0.3)/0.3 = If there is only one service to consider, then place this service on Node B to maximize the (minimum) yield On node A, deadlock occurs requests S1, the system will have a deadlock since neither VM1 nor VM2 gives up or releases the resources they currently hold; instead, they wait for their requests to be fulfilled The distributed computation consist of a set of processes, and processes only perform computation upon receiving one or more messages Once initiated, the process continues with its local computation, sending and receiving additional messages to other processes, until it again stops Once a process has stopped, it cannot spontaneously begin new computations until it receives a new message The computation can be viewed as spreading or diffusing across the processes much like a fire spreading through a forest Deadlock detection can be represented by a Resource Allocation Graph (RAG), commonly used in operating systems and distributed systems A RAG is defined as a graph (V,E) where V is a set of nodes and E is a set of ordered pairs or edges (vi,vj) such that vi,vj V V is further divided into two disjoint subsets: P { p0 , p1, p2 , , pm } where P is a set of processor nodes shown as circles in Figure 1; and Q {q0 , q1, q2 , , qn } where Q is a set of resource nodes shown as boxes in Figure A RAG is a graph bipartite in the P and Q sets An edge eij=(pi,qj) is a request edge if and only if pi P, qj Q The maximum number of edges in a RAG is m n A node is a sink when a resource (processor) has only incoming edge(s) from processor(s) (resource(s)) A node is source when a resource (processor) has only outgoing edge(s) to processor(s) (resource(s)) A path is a sequence of edges Informally speaking, a deadlock is a system state where requestors are waiting for resources held by other requestors which, in turn, are also waiting for some resources held by the previous requestors In this paper, we only consider the case where requestors are processors on virtual machine resource allocation in heterogeneous distributed platforms A deadlock situation results in permanently blocking a set of processors from doing any useful work There are four necessary conditions which allow a system to deadlock[3]: (a) Non – Preemptive: resources can only be released by the holding processor; (b) Mutual Exclusion: resources can only be accessed by one processor at a time; (c) Blocked Waiting: a processor is blocked until the resource becomes available; and (d) Hold – and – Wait : a processor is using resources and making new requests for other resources at the same time, without releasing held resources until some time after the new requests are granted Example Deadlock example {( pi1 , q j1 ), (q j1 , pi ), , ( pik , q jk 1 ), ( q js , pis 1 ) where E If a path starts from and ends at the same node, then it is a cycle A cycle does not contain any sink or source nodes Fig Deadlock example The focus of this paper is deadlock detection For our virtual machine resource allocation on heterogeneous distributed platforms deadlock detection implementation, we make three assumptions First, each resource type has one unit Thus, a cycle is a sufficient condition for deadlock [3] Second, each resource satisfies request will be granted immediately, making the overall system expedient [3] Thus, a processor is blocked unless it can obtain the requests at the same time In any large IaaS system, a request for r VMs will have a large number of possible resource allocation candidates If n servers are available to host at most one VM, the total number of possible combinations is (n,r) Given that n r , exhaustively searching through all possible candidates for an optimal solution is not feasible in a computationally short period of time Figure shows such a system with two nodes, a VM1 and VM2, and two resources, S1 and S2 Each processor (VM1 or VM2) has to use both resources exclusively to complete its processing of the streaming data The case shown in Figure (b) VM1 holds resource S1 while VM2 holds resource S2 Further, VM1 requests S2, and VM2 requests S1 When VM2 Some of the previous work done in deadlock detection and avoidance is by using the path matrix As the insertion and deletion of the edges only change the part of the resource allocation graph, path matrix technique does not scan the whole graph and rely on the recompilation of the path matrix to answer whether the cycle exist by addition of the new edge 99 (u, v) The unsuccessful allocation of the resource to the process can (that is detecting the cycle) can be found by it in O(1) amortized time and keeping the path matrix representation of the resource allocation graph acyclic mij = , if otherwise This matrix provides a template which is able to represent request and grant combinations Note that each resource has at most one grant, that is, there is at most one g in a column at any time However, there is no constraint on the number of requests from each processor The resource allocation graph has the three operations to perform, the unsuccessful allocation of the resources means the edge (v, w) will create a cycle, or the correct allotment and release of edges will keep the graph acyclic.The path matrix represents the unique way of representing the direct acyclic graph And the solution is unambiguous If there are deadlocks in a system, there must be at least one cycle in its RAG, that is, there must be a sequence of edges, {( p , q ), ( q , p ), , ( p , q ), ( q , p ), , ( p , q ), ( q , p )} i1 All proposed algorithms, including those based on a RAG, have O(m n) for the worst case In this paper, we propose deadlock detection algorithm with O(min(m,n)) based on a new matrix representation The proposed virtual machine resource allocation in heterogeneous distributed platforms deadlock detection algorithm makes use of parallelism and can handle multiple requests/grants, making the proposed algorithm faster than the O(1) algorithm[16,17] i2 i k j k j k i k 1 is js js i1 grants (g’s) By this fact, we can detect deadlocks in a system with its adjacency matrix Next, we will present the new detection algorithm B A Parallel Deadlock Detection Algorithm On this basis of the matrix representation, we propose a parallel deadlock detection algorithm The basic idea in this algorithm is iteratively reducing the matrix by removing those columns or rows corresponding to any of the following cases: In this section, we will first introduce the matrix representation of a deadlock detection problem The algorithm is based on this matrix representation Next, we present some essential features of the proposed algorithm This algorithm is parallel, and thus can be mapped into a cloud architecture which can handle multiple requests/grants simultaneously and can detect multiple deadlocks in linear time, hence, significantly improving performance a row or column of all 0’s; a source ( a row with one or more r’s but no g’s, or a column with one g and no r’s); a sink ( a row with one or more g’s but no r’s, or a column with one r’s but no g’s); This continues until the matrix cannot be reduced any more At this time, if the matrix still contains row(s) or column(s) in which there are non-zero elements, then there is at least one deadlock Otherwise, there is no deadlock The description of this algorithms show in algorithm A Matrix representation of a deadlock detection problem In graph theory, any directed graph can be represented with an adjacency matrix [3] Thus, we can represent a RAG with an adjacency matrix However, there are two kinds of edges in a RAG: grant edges, which point from resources to processors, and request edges, which point from processors to resources To distinguish different edges, we designate elements in the adjacency matrix with three different values as shown in Figure This Figure shows the matrix representation of a given system with processors p1, p2,…,pi, ,pm and resources q1, q2,…,qj,…,qn The leftmost column is the processors labels column The top row is the resources label row If there is a request edge (pi ,qj) in the RAG, corresponding element in the matrix is r If there is a grant edge (qi,pj) in the RAG The corresponding element in the matrix is g Otherwise, the value of the element is TABLE I Notations j (CPU ) xi j (RAM) xi CPU Cj RAM This variant of the adjacency matrix of a RAG (V,E) can be defined formally as follows: M [mij ] j1 where E In the matrix representation, this cycle is mapped into a sequence of matrix elements {mi j , mi j , , mi j , mi j , mis js , mi1 js } where 11 k k k 1 k are requests(r’s) and mi2 j1 , mi3 j2 , , mik 1 jk , mi1 js are IV ALGORITHMIC APPROACH TO DEADLOCK DETECTION FOR RESOURCE ALLOCATION IN HETEROGENEOUS PLATFORMS m n j1 Cj THE DESCRIPTION OF NOTATIONS Meanings CPU required by a VM i from the IaaS provider j RAM required by a VM i from the IaaS provider j The maximum capacity of CPU of IaaS provider j The maximum capacity of RAM of IaaS provider j Algorithm Parallel Deadlock Detection Algorithm j(CPU)* j(RAM)* Input: Pi ; Pi from IaaS provider i; Step 1: calculate optimal resource allocation to provide VM , (1 i m, j n), where m is the number of processors and n is the number of resources mij {r,g,0} j (CPU)* j (RAM)* xi , xi Max{U IaaS }; mij = r , if f ( pi , q j ) E Step 2: Computes new resource If C CPU x j (CPU) , C RAM x j ( RAM ) then j i j i i i mij = g , if f ( pi , q j ) E 100 j (CPU ) CPU ( n1) CPU ( n) CPU rj max{ , r j n( xi Cj )}; i j (RAM) RAM (n1) RAM (n) RAM rj max{ , r j n( xi Cj )}; i CPU ( n1) Return new resource r j Else Step 3: Initialization RAM (n1) ; rj mn M [ mij ] , Where mij {r,g,0}, (i =1, …,m and j =1,…,n) mij = r if (pi,qj) E mij = g if (pi,qj) E mij = 0, otherwise Fig Resource allocation in heterogeneous platform {mij | mij M , mij 0}; TABLE II Step 4: Remove all sink and sources DO { Reducible = 0; For each column: EXAMPLE WITH PROCESSES AND RESOURCES P\Q P1 (VM1) P2 (VM2) if (mij k , k i , mkj {mij , 0}){ Q1(S3) g r Q2(S3) r r Q3(S3) g The matrix representation of this example is shown in Table In this matrix, the first and second column contains both g and r, and hence is not reducible However, the third column contains only g Thus m12=g can be reduced At the same time, each row is also examined, however there is no reduction possible Since there is one reduction, the next iteration will be carried out In the second iteration, the first and second columns still contain both g and r, and hence are not reducible At the same time, each row is also checked, but no reduction is possible for any row Since there are no more reductions, a conclusion is drawn In this case, hardware deadlock detection takes two iterations and finds a deadlock column {mij | j 1, 2, 3, , m}, reducible 1; }else{} For each row: if (mij k , k i , mkj {mij , 0}){ row {mij | j 1, 2, 3, , m}, reducible 1; }else{} TABLE III column row ; P\Q Q1(S1) Q2(S2) Q3(S3) P1 (VM1) g r P2 (VM2) r g Let us remove the edge (p2,q2) in this case and consider it again The matrix is shown in Table In this matrix, the first column cannot be reduced, because of the existence of both g and r, while the second and third columns can be reduced, because the second column has only one r and no g’s, and the third column has only one g and no r’s At the same time, the first and second rows cannot be reduced, because of the existence of both g and r in each row Since this iteration has a reduction, Step will be re-executed with the second and third columns having been removed During the second iteration, the first column is not reduced, because there are both r and g in this column However, the first row can be reduced because on r is in this row Then Step is executed again in what is now a third iteration of the Parallel Deadlock Detection Algorithm There are no more reductions, because the matrix now is empty Step concludes that there is no deadlock In this case, three iterations are taken to complete detections }UNTIL( reducible 0); Step 5: Detect Deadlock If ( ), then return deadlock exits If ( ), then return no deadlock exits Output: new resource r EXAMPLE WITHOUT DEADLOCK CPU (n 1) RAM (n 1) ;r j j The following example illustrates how the algorithm works In each iteration of this parallel algorithm, at least one reduction can be performed if the matrix is reducible Hence, it takes at most min(m,n) iterations to complete the deadlock detection Example Two processors and three resources This example has two processors: VM1 and VM2, as p1 and p2 respectively The devices are S1, S2, and S3, as q1, q2 and q3 respectively as shown in Figure The distributed computation consist of a set of processes, and processes only perform computation upon receiving one or more messages 101 A single controller process is introduced to the distributed simulation The distributed simulation computation cycles through the following steps: The computation is initially deadlocked The controller send messages to one or more logic all process (LPs) informing them that certain events are safe to process, thereby breaking the deadlock The LPs process the event that has declared safe This typically generates new messages that are sent to other LPs that cause them to process more events, generate additional messages to other LPs The spreading of the computation to previously blocked process is viewed as constricting a tree Every process that is not blocked is in the tree Whenever a message is sent to a process that is not in the tree, it is added to the tree Add a link is established from the process by sending the message to the process receiving the message Just as the tree expands when the diffusing computation spreads to new LPs, it also contracts when engaged LPs become blocked If the controller becomes a leaf node in the tree, then the computation is again deadlocked completing the cycle To implement this signaling protocol, each LP must be able to determine whether it is engaged or disengaged Two variable are defined for this purpose: C is defined as the number of message received from neighbors that have not yet been signaled D is defined as the number of messages sent to other processors from which a signal has yet to be returned An LP assumes that each message it sends causes the receiver to become engaged The receiver returns a signal if either (1) it is already engaged or (2) it is becoming disengaged because it is a leaf node of the tree and it is blocked An LP is engaged if C is greater than zero If C is equal to 0, the process is disengaged, and D must also be zero An LP is a leaf node of the tree if its C value is greater than zero and its D value is zero When C and D in the controller are both zero, the simulation is deadlocked Mij= r g g 0 g r g r r g 0 r r 0 0 r 0 0 0 0 0 0 Fig Matrix representation example The system in state shown in Figure (a) can be represented in the matrix form show in (b) For the sake of better understanding, we will use the matrix representation shown in Figure c from now on Mij P1 P2 P3 P4 P5 P6 Q1 Q2 r g Q3 Q4 r g r Q5 r g Q6 Step (a) C Proof of the correctness of PDDA Theorem PDDA detects deadlock if and only there exists a cycle in state Proof: Consider matrix Mij (a) Algorithm returns, by construction, an irreducible matrix Mi,j+k (b) By the definition of irreducible Mi,j+k has no terminal edges, yielding two cases: (i) Mi,j+k is completely reduced, or (ii) Mi,j+k is incompletely reduced In case (i), if a system state can be completely reduced, then it does not have a deadlock If a system state cannot be completely reduced, then the system contains at least one cycle Given system heterogeneous platforms has a cycle is a necessary and sufficient condition for deadlock Example State matrix representation Mij Q1 Q2 Q3 Q4 Q5 Q6 P1 Mij Q1 Q2 Q3 Q4 Q5 Q6 P1 P2 P2 P3 P5 P6 r g r r g Step (b) P3 P4 P5 P6 g r r g Step (c) 102 P4 D Proof of the Run-time Complexity PDDA Theorem In a RAG, an upper bound on the number of edges in a path is min(m,n), where m is the number of resources and n is the number of processes Proof: Let us consider the following three possibilities: (i) m = n, (ii) m >n, or (iii) m 0), one longest path is {q1,p1,q2,p2,…,qn,pn,qn+1}; this path cannot be lengthened since every node in a path must be distinct, and since all n process nodes are already used in the path Therefore, the number of edges in this path is n Likewise, for case (iii), where n is greater than m (i.e.,n – m >0), the number of edges involved in any longest path is m As a result, case (i), (ii) and (iii) show that the number of edges of the maximum possible longest path in a RAG state is min(m,n) Algorithm when implemented in heterogeneous platform, completers its computation in at most min(m,n) – = O(min(m,n)) steps, where m is the number of resources and n is the number of processes When all the nodes in the smallest possible cycle are used, the longest path has three edges in this smallest possible cycle Therefore, in the worst case, min(m,n) – is an upper bound on the number of edges in longest possible path that is not also part of a cycle Hence, the number of iterations required to reach an irreducible state becomes at most min(m,n) – = O(min(m,n)), the worst case V CONCLUSION A deadlock detection algorithm is implemented for resource allocation in heterogeneous platforms The deadlock detection algorithm has O(min(m,n)) time complexity, an improvement of approximately orders of magnitude in practical cases In this way, programmers can quickly detect deadlock and then resolve the situation, e.g., by releasing held resources Our main approach focuses on applying deadlock detection algorithms for each type of lease contracts and applying the proposed algorithm in resource allocation in heterogeneous distributed platform Through this research we found that the application of appropriate scheduling algorithms would give optimal performance to distributed resources of virtual server systems [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] REFERENCES [1] [2] [3] Armbrust, M., Fox, A., Griffith, R., Joseph, A., Katz, R., Konwinski, A., Lee, G., Patterson, D.,Rabkin, A., Stoica, I., Zaharia, M.: A view of cloud computing Commun ACM53(4), 50–58 (2010) M Andreolini, S Casolari, M Colajanni, and M Messori, “Dynamic load management of virtual machines in a cloud architectures,” inCLOUDCOMP, 2009 P Shiu , Y Tan and V Mooney "A novel parallel deadlock detection algorithm and architecture", Proc CODES 01, pp.73 -78, (2001) 103 Vaquero, L.M., Rodero-Merino, L., Caceres, J., Lindner, M.: A break in the clouds: towards a cloud definition SIGCOMM Comput Commun Rev 39(1), 50–55 (2009) Armbrust, M., Fox, A., Griffith, R., Joseph, A.D., Katz, R., Konwinski, A., Lee : Above the Clouds: A Berkeley View of Cloud Computing.Technical Report No UCB EECS-2009-28, University of California at Berkley, USA, Feb 10, 2009 Kaur P.D., Chana I.: Enhancing Grid Resource Scheduling Algorithms for Cloud Environments HPAGC 2011, pp 140–144, (2011) Vouk, M.A.: Cloud computing: Issues, research and implementations In: Information Technology Interfaces ITI 2008 30th International Conference on, 2008, pp 31–40, (2008) Srikantaiah, S., Kansal, A., Zhao, F.: Energy aware consolidation for cloud computing Cluster Comput 12, 1–15 (2009) Berl, A., Gelenbe, E., di Girolamo, M., Giuliani, G., de Meer, H., Pentikousis, K., Dang, M.Q.:Energy-efficient cloud computing Comput J 53(7), 1045–1051 (2010) Garg, S.K., Yeo, C.S., Anandasivam, A., Buyya, R.: Environmentconscious scheduling of HPC applications on distributed cloud-oriented data centers J Parallel Distrib Comput Elsevier Press,Amsterdam, (2011) Warneke, D., Kao, O.: Exploiting dynamic resource allocation for efficient parallel data processing in the cloud IEEE Trans Parallel Distrib Syst 22(6), 985–997 (2011) Wu, L., Garg, S.K., Buyya, R.: SLA-based Resource Allocation for a Software as a Service Provider in Cloud Computing Environments In: Proceedings of the 11th IEEE/ACM International Symposium on Cluster Computing and the Grid (CCGrid 2011), Los Angeles, USA, May 23– 26, (2011) Addis, B., Ardagna, D., Panicucci, B.: Autonomic Management of Cloud Service Centers with Availability Guarantees 2010 IEEE 3rd International Conference on Cloud Computing, pp 220–207,(2010) Abdelsalam, H.S., Maly, K., Kaminsky, D.: Analysis of Energy Efficiency in Clouds 2009 Com-putation World: Future Computing, Service Computation, Cognitive, Adaptive, Content, Patterns,pp 416– 422, (2009) Yazir, Y.O., Matthews, C., Farahbod, R.: Dynamic Resource Allocation in Computing Clouds using Distributed Multiple Criteria Decision Analysis IEEE 3rd International Conference on Cloud Computing, pp 91–98, (2010) M Stillwell, D Schanzenbach, F Vivien, and H Casanova, “Resource allocation algorithms for virtualized service hosting platforms,” JPDC, vol 70, no 9, pp 962–974, (2010) S Banen, A I Bucur, and D H Epema, “A measurement-based simulation study of processor co-allocation in multi-cluster systems,” inJSSPP, pp 184–204, (2003) Buttari, J Kurzak, and J Dongarra, “Limitations of the PlayStation for high performance cluster computing,” U Tenn., Knoxville ICL, Tech Rep UT-CS-07-597, (2007) M Hoyer, Schrăoder, and W Nebel, Statistical static capacity management in virtualized data centers supporting fine grained QoS specification,” in E-ENERGY, 2010, pp 51–60 Petrucci, O Loques, and D Moss´e, “A dynamic optimization model for power and performance management of virtualized clusters,” in EENERGY, 2010, pp 225–233 ... contain any sink or source nodes Fig Deadlock example The focus of this paper is deadlock detection For our virtual machine resource allocation on heterogeneous distributed platforms deadlock detection. .. releasing held resources Our main approach focuses on applying deadlock detection algorithms for each type of lease contracts and applying the proposed algorithm in resource allocation in heterogeneous. .. mik 1 jk , mi1 js are IV ALGORITHMIC APPROACH TO DEADLOCK DETECTION FOR RESOURCE ALLOCATION IN HETEROGENEOUS PLATFORMS m n j1 Cj THE DESCRIPTION OF NOTATIONS Meanings CPU required by a VM i