java.lang.Object
com.aoindustries.aoserv.master.cluster.ClusterOptimizer

public final class ClusterOptimizer extends Object
Finds the optimal mapping of virtual machines to physical resources to balance customer needs and redundant resources.
 TODO: If two virtual servers are interchangeable, don't try both combinations - how? - implications?
 TODO: If two servers are interchangeable, don't try both combinations - how? - implications?
 TODO: Allow to specify that two virtual servers may not use the same primary xen machine (like ns1 and ns4 in California)
 TODO: Avoid the reprocessing of similar sub-trees to try to convert the NP-hardness to exponential complexity (with lots of RAM used)
 TODO: Also map cores and weights onto CPUs, with the following patterns:
       1 core into any of the CPUs
       2 cores into pairs of CPUs (0-1, 2-3, 3-4, 5-6, 7-8, 9-10, ...)
       4 cores into sets of CPUs (0-3, 4-7, 8-11, 12-15, ...)
       8 cores into sets of CPUs (0-7, 8-15, ...)
       ...
       Require that cores be a power of 2, so easier to map to CPUs consistently.
 TODO: Change weight to be 1024, so powers of two add up well (like 512+256+64+64+64+32+16+16 equals a full CPU)
 TODO: If all else fails, integrate this with the aoserv daemon code and run massively parallel processing of subtrees.  (More brute force)
 
Author:
AO Industries, Inc.
  • Constructor Details

    • ClusterOptimizer

      public ClusterOptimizer()
  • Method Details

    • main

      public static void main(String[] args)