/** * @codeCoverageIgnore * Someday i will return here. * Farewell my friend. */ static function realTreeSearchApproachBackEnd(&$placements, &$nvms, &$vms, &$level = 0, &$usageVector = array(), &$stateCounter = 0) { //Interects foreach possible placements of that VM foreach ($placements[$level] as $p) { list($vmName, $pmName) = explode(':', $p); if ($level == 0) { echo "{$vmName}, {$pmName}"; } //Checks if the PM is not full if ($usageVector[$pmName] > $vms[$vmName]['used_memory']) { //Check if the last VM to host if ($level >= $nvms - 1) { //Just count one state $stateCounter++; } else { //Prepare to drilldown $level++; $usageVector[$pmName] -= $vms[$vmName]['used_memory']; Approximation::realTreeSearchApproachBackEnd($placements, $nvms, $vms, $level, $usageVector, $stateCounter); $level--; $usageVector[$pmName] += $vms[$vmName]['used_memory']; } } } return $stateCounter; }
} if (!file_exists(FNSC)) { convertPlacementToScenario(); } $pms = json_decode(file(FNPM)[0], true); $vms = json_decode(file(FNVM)[0], true); $scenario = json_decode(file(FNSC)[0], true); $tmp = array(); foreach ($vms as $vm) { $tmp[$vm['name']] = 0; } $fmt = "\nVM-UUIDs(%s) | VM-Names(%s) | PMs(%s) | PossiblePlaces(%s) | APR(%s)\n"; echo sprintf($fmt, count($vms), count($tmp), count($pms), array_sum($scenario['rpm']), array_sum($scenario['rpm']) / (count($tmp) * count($pms))); $semConstraint = Approximation::calcularComRegras($scenario); echo "With Rules:" . $semConstraint . PHP_EOL; $result = Approximation::realTreeSearchApproach($scenario); echo "Real Possibilities: " . $result . PHP_EOL; function sig_handler($signo) { global $ctd; echo 'Estados ' . $ctd . PHP_EOL; die; } pcntl_signal(SIGINT, "sig_handler"); pcntl_signal(SIGTERM, "sig_handler"); function convertPlacementToScenario() { $placements = json_decode(file(FNPL)[0], true); $scenario = Scenario::buildScenarioByPlacements($placements); $scenario['vms'] = json_decode(file(FNVM)[0], true); $scenario['pms'] = json_decode(file(FNPM)[0], true);
public function testCmp() { $this->assertEquals(0, Approximation::cmp([0], [0]), "Should be 0"); $this->assertEquals(1, Approximation::cmp([-5, 0], [0]), "Should be 1"); $this->assertEquals(-1, Approximation::cmp([0], [5, 0]), "Should be -1"); }
$saida_2d = "VMs PMs Sem Com Sum Sub Prod Real\n"; $saida_2d = "VMs PMs Com Tree\n"; $saida_delta = ''; $flag = null; foreach ($scenarios as $key => $value) { printf("%s - VM(%s) - PM(%s) ", date(DATE_RFC2822), $value['nvms'], $value['npms']); $max = 5; //$sem = QuantidadeDeResultados::calcularSemRegras($value); $com = Approximation::calcularComRegras($value); echo "\ncom({$com}) \n"; //$sum = QuantidadeDeResultados::calcularComRegrasMaxVMSum($value,3); //$sub = QuantidadeDeResultados::calcularComRegrasMaxVMSub($value,3); //$prod= QuantidadeDeResultados::calcularComRegrasMaxVMProd($value,3); //$real_r = Combinations::GenerateAllCombinations(array_values($value['placements'])); //$real = count(Combinations::FilterCombinationsByMaxVm($real_r,3)); $tre = Approximation::treeSearchApproach($value, $max); //echo " - Real($real) \n"; $delta = 5; //100*($sum/$real); echo "\ncom({$com}) tree({$tre}) \n"; //Quebra a linha quando muda de VM. Necessario para o funcionamento do GnuPlot PM3D if (!is_null($flag) && $flag != $value['nvms']) { $saida_tre .= "\n"; $saida_sem .= "\n"; $saida_com .= "\n"; $saida_sum .= "\n"; $saida_sub .= "\n"; $saida_prod .= "\n"; $saida_real .= "\n"; $saida_delta .= "\n"; }
$scenario = array_pop(json_decode(file('others/' . $_GET['file'])[0], true)); } else { $scenarios = Scenario::geraScenarios($apr, array($nvm), array($npm)); $scenario = array_pop($scenarios); } $json = Scenario::toDataTableJSON($scenario); //$memcache = memcache_connect('localhost', 11211); //$accordion = isset($_GET['cache']) ? false : memcache_get($memcache, 'accordion'); //$accordion = false; //if ($accordion == false) { //echo "<script>alert('Not Cached');</script>"; $accordion = new Accordion(); $sem = Approximation::calcularSemRegras($scenario); $com = Approximation::calcularComRegras($scenario); $last = Approximation::calcularComRegrasMaxVMSub($scenario, $max); $tree = Approximation::treeSearchApproach($scenario, $max); $test1 = 0; //Approximation::calcularComRegrasMaxVMOutIn($scenario, $max); $test_c_a = 0; //Approximation::calculateAvgCombSplitterApproach($scenario, $max); $test_c_s = 0; //Approximation::calculateSumCombSplitterApproach($scenario, $max); $test_s_p = 0; //Approximation::calculateProdSequencialSplitterApproach($scenario, $max); $test_s_s = 0; //Approximation::calculateSumSequencialSplitterApproach($scenario, $max); //$filtered = Combinations::GenerateAllCombinationsMaxVM($scenario['placements'], $max); $real = 0; //count($filtered); $title = sprintf($fmt_accordion_title, $max, $scenario['nvms'], $scenario['npms'], $sem, $com, $real, $tree, $last, $test1, $test_c_a, $test_c_s, $test_s_p, $test_s_s); //$body = sprintf($fmt_accordion_body, ViewHelper::printState($filtered));