polymix-4.pg

From: jayk <jayk_at_ca.sophos.com>
Date: Fri, 09 Mar 2007 14:43:13 -0800

Running this test, with and the framp phase has been running for 3 days?
This config looks like it should run for 20 minutes, am I missing
something. My polymix-4-guts.pg is below.

Cheers,
Jay

/*
 * PolyMix-4 workload (the details)
 *
 */

/* modifications in this file cause non-compliance with PolyMix rules
 * all user-specified parameters are in polymix-4.pg */

#include "contents.pg"

Server S = {
        kind = "PolyMix-4-srv";

        contents = [ cntImage: 65%, cntHTML: 15%, cntDownload: 0.5%,
cntOther ];
        direct_access = [ cntHTML, cntDownload, cntOther ];

        xact_think = norm(2.5sec, 1sec);
        pconn_use_lmt = zipf(16);
        idle_pconn_tout = 15sec;
        abort_prob = 0.1%;

        addresses = serverAddrs(asPolyMix4, TheBench);
        http_versions = [ "1.0" ]; // newer agents use HTTP/1.1 by default
};

AddrMap Map = {
        zone = "bench.tst";
        addresses = S.addresses;
        names = ipsToNames(addresses, zone);
};

// popularity model for the robots
PopModel popModel = {
        pop_distr = popUnif();
        hot_set_frac = 1%; // fraction of WSS (i.e., hot_set_size / WSS)
        hot_set_prob = 10%; // prob. of req. an object from the hot set

        bhr_discrimination = 90%; // revisit smaller files more often
};

// set DNS resolver timeout (the servers are set by the user)
Resolver.timeout = 5sec;

// compute fraction of requests that should produce hits if repeated
// account for cachable basic requests
float HitIfRepeat = 80%;

// describe PolyMix-4 robot
Robot R = {
        kind = "PolyMix-4-rbt";

        recurrence = 55%/HitIfRepeat; // recurrence is not hit ratio
        embed_recur = 100%;
        interests = [ "public": 75%, "private" ];
        pop_model = popModel;

        req_types = [ "Basic", "Ims200": 5%, "Ims304": 10%, "Reload" : 5% ];
        req_methods = [ "GET", "POST" : 1.5%, "HEAD" : 0.1% ];
        abort_prob = 0.1%;

        req_rate = TheBench.client_side.max_agent_load;
        pconn_use_lmt = zipf(64);
        open_conn_lmt = 4;

        dns_resolver = Resolver;
        origins = Map.names;
        addresses = robotAddrs(asPolyMix4, TheBench);
        http_versions = [ "1.0" ]; // newer agents use HTTP/1.1 by default
};

/* phases */

time platDur = 4hour; // plateau phases duration (except idle
phase)
time rampDur = platDur/12; // ramp phases duration (and idle phase)

// limit the growth of the URL "working set" size (WSS)
int clientHostCount = clientHostCount(TheBench);
float fillable_ratio = HitIfRepeat; // fraction of cachable misses
rate peak_fill_rate = TheBench.peak_req_rate * 0.45 * fillable_ratio;
int wsc = int(peak_fill_rate * platDur); // number of objects in the WS
working_set_cap(wsc / clientHostCount);

float smallFactor = 1.0/count(R.addresses);

Phase phFRamp = {
        name = "framp";
        goal.duration = rampDur;
        recur_factor_beg = 5%/55%;
        special_msg_factor_beg = 0.1;
        populus_factor_beg = smallFactor;
        populus_factor_end = FillRate/TheBench.peak_req_rate;
};

Phase phFill = {
        name = "fill";
        goal.fill_size = 2*ProxyCacheSize / clientHostCount;
        wait_wss_freeze = yes; // will finish only if WSS is frozen
};

Phase phFExit = {
        name = "fexit";
        goal.duration = rampDur;
        recur_factor_end = 1;
        special_msg_factor_end = 1;
        populus_factor_end = smallFactor;
};

Phase phInc1 = {
        name = "inc1";
        goal.duration = rampDur;
        populus_factor_end = 1;
};

Phase phTop1 = { name = "top1"; goal.duration = platDur; };
Phase phDec1 = { name = "dec1"; goal.duration = rampDur;
populus_factor_end = 0.1; };

Phase phIdle = { name = "idle"; goal.duration = rampDur; };

Phase phInc2 = { name = "inc2"; goal.duration = rampDur;
populus_factor_end = 1.0; };
Phase phTop2 = { name = "top2"; goal.duration = platDur; };
Phase phDec2 = { name = "dec2"; goal.duration = rampDur;
populus_factor_end = 0; synchronize = false; };

/* collect stats samples in the middle of plateau phases */
StatsSample topSample = { capacity = 10000; };
StatsSample fillSample = { capacity = int(10% * topSample.capacity); };

phFill.stats_samples = [ fillSample ];
phTop1.stats_samples = [ topSample ];
phTop2.stats_samples = [ topSample ];

// build schedule using some well-known phases and phases defined above
schedule(
        phFRamp, phFill, phFExit,
        phInc1, phTop1, phDec1,
        phIdle,
        phInc2, phTop2, phDec2
);

// commit to using these objects
use(S, R);
use(Map);
use(TheBench);

// do not forget to configure network level delay and packet loss!
// client side: no delays or packet loss
// server side: 40msec delay and 0.05% packet loss in both directions
Received on Sat Mar 10 2007 - 21:29:38 MST

This archive was generated by hypermail 2.2.0 : Sun Mar 11 2007 - 13:00:07 MDT