Example #1
0
function main()
{
    /****************************
     * Model specific variables *
     ****************************/
    $noNodes = 0;
    $noStreams = 0;
    $tech = APPROX;
    // EXACT
    $pop = 0;
    $think = 0.0;
    /************************
     * Initialize the model *
     ************************/
    /* Give model a name */
    printf("**** %s ****:\n", $tech == EXACT ? "EXACT" : "APPROX");
    printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\n", "POP", "N:w1", "RESP:w1", "N:w2", "RESP:w2");
    printf("-----------------------------------------------------------------------------\n");
    for ($pop = 1; $pop < 10; $pop++) {
        PDQ_Init("Test_Exact_calc");
        /* Define the workload and circuit type */
        $noStreams = PDQ_CreateClosed("w1", TERM, 1.0 * $pop, $think);
        $noStreams = PDQ_CreateClosed("w2", TERM, 1.0 * $pop, $think);
        /* Define the queueing center */
        $noNodes = PDQ_CreateNode("node", CEN, FCFS);
        /* Define service demand */
        PDQ_SetDemand("node", "w1", 1.0);
        PDQ_SetDemand("node", "w2", 0.5);
        /*******************
         * Solve the model *
         *******************/
        PDQ_Solve($tech);
        printf("%d\t\t%d\t\t%3.4f\t\t%d\t\t%3.4f\n", $pop, getjob_pop(getjob_index("w1")), PDQ_GetResponse(TERM, "w1"), getjob_pop(getjob_index("w1")), PDQ_GetResponse(TERM, "w2"));
    }
}
Example #2
0
function main()
{
    global $job;
    /****************************
     * Model specific variables *
     ****************************/
    $noNodes = 0;
    $noStreams = 0;
    $pop = 0;
    $servers = 2;
    $s = 0;
    $w = HOMEPG;
    $work = array(0 => "stress", 1 => "homepg");
    /* stress */
    /* homepg */
    $time = array(0 => 0.0044, 1 => 0.03);
    $slave = array(0 => "slave0", "slave1", "slave2", "slave3", "slave4", "slave5", "slave6", "slave7", "slave8", "slave9", "slave10", "slave11", "slave12", "slave13", "slave14", "slave15");
    if (PREFORK) {
        printf("Pre-Fork Model under \"%s\" Load (m = %d)\n", $w == STRESS ? $work[STRESS] : $work[HOMEPG], $servers);
    } else {
        printf("Forking  Model under \"%s\" Load \n", $w == STRESS ? $work[STRESS] : $work[HOMEPG]);
    }
    printf("N\tX\tR\n");
    for ($pop = 1; $pop <= 10; $pop++) {
        PDQ_Init("HTTPd_Server");
        $noStreams = PDQ_CreateClosed($work[$w], TERM, 1.0 * $pop, 0.0);
        $noNodes = PDQ_CreateNode("master", CEN, FCFS);
        if (PREFORK) {
            for ($s = 0; $s < $servers; $s++) {
                $noNodes = PDQ_CreateNode($slave[$s], CEN, FCFS);
            }
            PDQ_SetDemand("master", $work[$w], 0.0109);
            for ($s = 0; $s < $servers; $s++) {
                PDQ_SetDemand($slave[$s], $work[$w], $time[$w] / $servers);
            }
        } else {
            /* FORKING */
            $noNodes = PDQ_CreateNode("forks", CEN, ISRV);
            PDQ_SetDemand("master", $work[$w], 0.0165);
            PDQ_SetDemand("forks", $work[$w], $time[$w]);
        }
        PDQ_Solve(EXACT);
        printf("%3.2f\t%3.4f\t%3.4f\n", getjob_pop(getjob_index($work[$w])), PDQ_GetThruput(TERM, $work[$w]), PDQ_GetResponse(TERM, $work[$w]));
    }
}
Example #3
0
function PDQ_SetVisits($nodename, $workname, $visits, $service)
{
    global $node;
    // extern NODE_TYPE *
    global $demand_ext;
    // extern int
    global $DEBUG;
    // extern int
    if ($DEBUG) {
        printf("nodename : %s  workname : %s  visits : %f  service : %f\n", $nodename, $workname, $visits, $service);
    }
    if ($demand_ext == VOID || $demand_ext == VISITS) {
        $node[getnode_index($nodename)]->visits[getjob_index($workname)] = $visits;
        $node[getnode_index($nodename)]->service[getjob_index($workname)] = $service;
        $node[getnode_index($nodename)]->demand[getjob_index($workname)] = $visits * $service;
        $demand_ext = VISITS;
    } else {
        errmsg("PDQ_SetVisits()", "Extension conflict");
    }
}
Example #4
0
function PDQ_GetQueueLength($device, $work, $should_be_class)
{
    $p = "PDQ_GetQueueLength()";
    // char *
    global $s1;
    //extern char[]
    global $nodes, $node;
    $q = 0.0;
    // double
    $x = 0.0;
    // double
    $c = 0;
    // int
    $k = 0;
    // int
    $c = getjob_index($work);
    $x = PDQ_GetThruput($should_be_class, $work);
    for ($k = 0; $k < $nodes; $k++) {
        if ($device == $node[$k]->devname) {
            $q = $node[$k]->resit[$c] * x;
            return $q;
        }
    }
    $s1 = sprintf("Unknown device %s", $device);
    errmsg($p, $s1);
    /*g_debug("PDQ_GetQueueLength - Bad double return");*/
    fprintf(STDERR, "%s:%d PDQ_GetQueueLength - Bad double return\n", __FILE__, __LINE__);
    return -1.0;
}