예제 #1
0
 /**
  * @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;
 }
예제 #2
0
}
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);
예제 #3
0
 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");
 }
예제 #4
0
$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";
    }
예제 #5
0
    $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));