Patent ID: 8140681

Claim:
A method for decentralized application resource allocation for a cluster of nodes, the method comprising: receiving, at a local node, resource utilization data of applications from a subset of nodes in the node cluster, the local node including a current set of applications executing at the local node; determining a new set of applications to execute at the local node which optimizes an objective function as computed locally by the local node based, at least in part, on the utilization data; modifying which applications are executed at the local node according to the new set of executing applications; sending from the local node to the subset of nodes in the node cluster application execution changes between the new set of applications and the current set of applications at the local node; locking, for each application that the local node starts and stops, all nodes located two logical hops away and preventing the nodes from starting and stopping the application; and acquiring, from a designated node, a lock that prevents other nodes to start an application that currently is not running anywhere in the cluster of nodes.