/** * Finalizes measuring the execution time of a method/process. * * @param name the name of the method/process being measured. * @return the time the method/process spent in execution (in seconds) * @see #executionTimes */ public static double end(String name) { double time = (System.currentTimeMillis() - getExecutionTimes().get(name)) / 1000.0; getExecutionTimes().remove(name); return time; }
@Override public List<Map<String, Object>> optimizeAllocation(List<? extends ContainerVm> vmList) { ExecutionTimeMeasurer.start("optimizeAllocationTotal"); ExecutionTimeMeasurer.start("optimizeAllocationHostSelection"); List<PowerContainerHostUtilizationHistory> overUtilizedHosts = getOverUtilizedHosts(); getExecutionTimeHistoryHostSelection().add( ExecutionTimeMeasurer.end("optimizeAllocationHostSelection")); printOverUtilizedHosts(overUtilizedHosts); saveAllocation(); ExecutionTimeMeasurer.start("optimizeAllocationContainerSelection"); List<? extends Container> containersToMigrate = getContainersToMigrateFromHosts(overUtilizedHosts); getExecutionTimeHistoryVmSelection().add(ExecutionTimeMeasurer.end("optimizeAllocationContainerSelection")); Log.printLine("Reallocation of Containers from the over-utilized hosts:"); ExecutionTimeMeasurer.start("optimizeAllocationVmReallocation"); List<Map<String, Object>> migrationMap = getPlacementForLeftContainers(containersToMigrate, new HashSet<ContainerHost>(overUtilizedHosts)); getExecutionTimeHistoryVmReallocation().add( ExecutionTimeMeasurer.end("optimizeAllocationVmReallocation")); Log.printLine(); migrationMap.addAll(getContainerMigrationMapFromUnderUtilizedHosts(overUtilizedHosts, migrationMap)); restoreAllocation(); getExecutionTimeHistoryTotal().add(ExecutionTimeMeasurer.end("optimizeAllocationTotal")); return migrationMap; }
/** * Optimize allocation of the VMs according to current utilization. * * @param vmList the vm list * @return the array list< hash map< string, object>> */ @Override public List<Map<String, Object>> optimizeAllocation(List<? extends ContainerVm> vmList) { ExecutionTimeMeasurer.start("optimizeAllocationTotal"); ExecutionTimeMeasurer.start("optimizeAllocationHostSelection"); List<PowerContainerHostUtilizationHistory> overUtilizedHosts = getOverUtilizedHosts(); getExecutionTimeHistoryHostSelection().add( ExecutionTimeMeasurer.end("optimizeAllocationHostSelection")); printOverUtilizedHosts(overUtilizedHosts); saveAllocation(); ExecutionTimeMeasurer.start("optimizeAllocationVmSelection"); List<? extends ContainerVm> vmsToMigrate = getVmsToMigrateFromHosts(overUtilizedHosts); getExecutionTimeHistoryVmSelection().add(ExecutionTimeMeasurer.end("optimizeAllocationVmSelection")); Log.printLine("Reallocation of VMs from the over-utilized hosts:"); ExecutionTimeMeasurer.start("optimizeAllocationVmReallocation"); List<Map<String, Object>> migrationMap = getNewVmPlacement(vmsToMigrate, new HashSet<ContainerHost>( overUtilizedHosts)); getExecutionTimeHistoryVmReallocation().add( ExecutionTimeMeasurer.end("optimizeAllocationVmReallocation")); Log.printLine(); migrationMap.addAll(getMigrationMapFromUnderUtilizedHosts(overUtilizedHosts, migrationMap)); restoreAllocation(); getExecutionTimeHistoryTotal().add(ExecutionTimeMeasurer.end("optimizeAllocationTotal")); return migrationMap; }
ExecutionTimeMeasurer.start("optimizeAllocationTotal"); ExecutionTimeMeasurer.start("optimizeAllocationHostSelection"); List<PowerHostUtilizationHistory> overUtilizedHosts = getOverUtilizedHosts(); getExecutionTimeHistoryHostSelection().add( ExecutionTimeMeasurer.end("optimizeAllocationHostSelection")); ExecutionTimeMeasurer.start("optimizeAllocationVmSelection"); List<? extends Vm> vmsToMigrate = getVmsToMigrateFromHosts(overUtilizedHosts); getExecutionTimeHistoryVmSelection().add(ExecutionTimeMeasurer.end("optimizeAllocationVmSelection")); ExecutionTimeMeasurer.start("optimizeAllocationVmReallocation"); List<Map<String, Object>> migrationMap = getNewVmPlacement(vmsToMigrate, new HashSet<Host>( overUtilizedHosts)); getExecutionTimeHistoryVmReallocation().add( ExecutionTimeMeasurer.end("optimizeAllocationVmReallocation")); Log.printLine(); getExecutionTimeHistoryTotal().add(ExecutionTimeMeasurer.end("optimizeAllocationTotal"));
/** * Start measuring the execution time of a method/process. * Usually this method has to be called at the first line of the method * that has to be its execution time measured. * * @param name the name of the method/process being measured. * @see #executionTimes */ public static void start(String name) { getExecutionTimes().put(name, System.currentTimeMillis()); }