Polymix-4.pg

jayk <[email protected]>
Newsgroups gmane.comp.web.web-polygraph.user
Message-ID <[email protected]>
FYI:

I am experiencing a strange occurrence of the polymix client reporting
requesting and serving foreign urls, when requests become over stacked.

Below is the polymix-guts.pg and polymix-4.pg.  Can anyone shed some
light on this? Is there somewhere else this may be configured?

Thanks in advance.

Jay

Polymix-4-gut.pg

/*
 * 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

polymix-4.pg

#include "benches.pg"

Bench TheBench = benchPolyMix4;
TheBench.client_side.addr_space = ['lo0::10.101.0-123.1-250/22'];
TheBench.server_side.addr_space = ['lo0::10.101.128-251.1-250:80/22'];
TheBench.client_side.hosts = [ '172.16.101.61' ];
TheBench.server_side.hosts = [ '172.16.101.191' ];
TheBench.peak_req_rate = 135/sec;
rate FillRate = 135/sec;
size ProxyCacheSize = 50GB;

/* This should be changed to 127.0.0.1 on the clients: */
DnsResolver Resolver;
Resolver.servers = [ '127.0.0.1:53' ];

#include "polymix-4-guts.pg"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.