CPC G06F 9/5077 (2013.01) [G06F 9/45558 (2013.01); G06F 9/505 (2013.01); H04L 41/0893 (2013.01); H04L 41/0896 (2013.01); H04L 41/12 (2013.01); H04L 43/026 (2013.01); H04L 43/0876 (2013.01); H04L 43/16 (2013.01); G06F 2009/4557 (2013.01); H04L 43/065 (2013.01)] | 20 Claims |
1. A method for clustering a first plurality of machines that execute on a larger first plurality of host computers to execute on a smaller second plurality of host computers, the method comprising:
defining a graph that comprises (i) a plurality of nodes each of which represents a machine, (ii) a plurality of edges each of which is between a respective pair of nodes and represents communication between the respective pair of machines represented by the pair of nodes, and (iii) a plurality of weights each of which is associated with a respective edge and represents an amount of communication between the respective pair of machines represented by the respective pair of nodes connected by the respective edge;
initializing a plurality of machine groups to include one machine group for each machine in the first plurality of machines;
sorting the edges using a data structure that arranges the edges based on the edge weights such that an edge with a largest edge weight representing a largest amount of communication between a pair of machines is a first edge in the data structure;
iteratively (i) selecting an edge based on the sorted edges in the data structure, (ii) merging a respective pair of machine groups to which the respective pair of machines associated with the selected edge belong, and (iii) resorting the edges by rearranging the data structure, until a number of groups equals a number of host computers in the second plurality of host computers.
|