best effort vs. given req rate - strange response times

david fuchs <[email protected]>
Newsgroups gmane.comp.web.web-polygraph.user
Message-ID <[email protected]>
I am currently implementing a secure HTTP proxy for an information 
security laboratory (see http://www.infsec.ethz.ch/lab/appliedlab) and 
use web polygraph for performance testing. I want to test the proxy's 
performance a) with a realistic low request rate of .6 req/sec and b) in 
best effort mode. I use 2 very simple pg scripts, the relevant sections 
are these:

// a) request rate of .6 per sec: (file: mixedCnt.pg)

Robot R = {

	...
	
	// realistic request rate
	req_rate = 0.6/sec;

	...

};

// b) best effort: (file: mixedCntBestEffort.pg)

Robot R = {
	
	...

	// use best effort request rate (default setting)
	
	...

};

the actual test consist of a single phase during 20 minutes. I ran the 
test with different configurations of the proxy (filtering modules 
switched on or off) but always encountered a very strange behaviour: 
mean response times are _lower_ in the best effort mode than with the .6 
req/sec request rate...

example from one test:

best effort: 180 xAct/sec = 13.65 Mbits/sec, mean response time 5msec
.6 req/sec: 0.60 xAct/sec = 0.05 Mbits/sec, mean response time 9 msec

I simply do not have any reasonable explanation for that. I would be 
glad if someone could point out where I made a mistake in the test 
scripts or what it is I misunderstood.

regards, dave
mixedCntBestEffort.pg (text/plain, 2.2 KB)
/*
 * simulating workload for ETHZ infsec lab
 */


// simulating the servers //////////////////////////////////////////////////////////////////////////////

// content types:

Content cntImage = {
	kind = "image";
	mime = { type = undef(); extensions = [ ".gif", ".jpeg", ".png" ]; };

	// mean size: 15kB (estimation of Giles, Lawrence)
	size = exp(15KB);

	cachable = 0%;	//80
	checksum = 1%;
};

Content cntHTML = {
	kind = "HTML";
	mime = { type = "text/html"; extensions = [ ".html" : 60%, ".htm" ]; };

	// mean size: 20 kB (estimation of Giles, Lawrence)
	size = exp(10KB);

	cachable = 0%;	//90
	checksum = 1%;
	
	// use html content from database
	content_db  = "/usr/local/bin/polygraph/workloads/demo.cdb";
};

Content cntDownload = {
	kind = "download";
	mime = { type = undef(); extensions = [ ".exe": 40%, ".zip", ".gz" ]; };

	// default size
	size = logn(300KB, 300KB);

	cachable = 0%;	//95
	checksum = 0.01%;
};

Content cntOther = {
	kind = "other";
	
	// default size
	size = logn(25KB, 10KB);
	
	cachable = 0%;	//72
	checksum = 0.1%;
};

Server S = {
	kind = "S101";			//just a label
	
	/* 
	 * define content distribution and how it is accessed
	 */

	// use content distribution as estimated by UC berkely internet survey
	contents = [ cntImage: 23%, cntHTML: 30%, cntDownload: 1%, cntOther ];
	direct_access = [ cntImage, cntHTML, cntDownload, cntOther ];

	addresses = ['10.0.0.3:9090' ]; // where to create these server agents
};


// simulating the clients //////////////////////////////////////////////////////////////////////////////

// 5 % of pages are fetched very often, with a 10% prob.
PopModel pm = {
	pop_distr = popUnif();
	hot_set_frac = 5%;
	hot_set_prob = 10%;
};

Robot R = {
	kind = "R101";			// only a name
	
	pop_model = pm;
	
	origins = S.addresses;      // where the origin servers are
	addresses = ['10.0.0.3' ]; // where these robot agents will be created
	
	// use best effort request rate (default setting)
	
	// assumptions based on requests after using cache
	recurrence = 0;
};


// phases //////////////////////////////////////////////////////////////////////////////////////////////

Phase aPhase = {
	name = "normal_traffic";
	goal.duration = 20min;
	load_factor_beg = 1;
	load_factor_end = 1;
};

schedule( aPhase );

use(S, R);
mixedCnt.pg (text/plain, 2 KB)
/*
 * simulating workload for ETHZ infsec lab
 */


// simulating the servers //////////////////////////////////////////////////////////////////////////////

// content types:

Content cntImage = {
	kind = "image";
	mime = { type = undef(); extensions = [ ".gif", ".jpeg", ".png" ]; };
	size = exp(15KB);
	cachable = 0%;	//80
	checksum = 1%;
};

Content cntHTML = {
	kind = "HTML";
	mime = { type = "text/html"; extensions = [ ".html" : 60%, ".htm" ]; };
	size = exp(20KB);
	cachable = 0%;	//90
	checksum = 1%;
	
	// use html content from database
	content_db  = "/usr/local/bin/polygraph/workloads/demo.cdb";
};

Content cntDownload = {
	kind = "download";
	mime = { type = undef(); extensions = [ ".exe": 40%, ".zip", ".gz" ]; };
	size = logn(300KB, 300KB);
	cachable = 0%;	//95
	checksum = 0.01%;
};

Content cntOther = {
	kind = "other";
	size = logn(25KB, 10KB);
	cachable = 0%;	//72
	checksum = 0.1%;
};

Server S = {
	kind = "S101";			//just a label
	
	/* 
	 * define content distribution and how it is accessed
	 */
	contents = [ cntImage: 23%, cntHTML: 30%, cntDownload: 1%, cntOther ];
	direct_access = [ cntImage, cntHTML, cntDownload, cntOther ];

	addresses = ['10.0.0.3:9090' ]; // where to create these server agents
};


// simulating the clients //////////////////////////////////////////////////////////////////////////////

// 5 % of pages are fetched very often, with a 10% prob.
PopModel pm = {
	pop_distr = popUnif();
	hot_set_frac = 5%;
	hot_set_prob = 10%;
};

Robot R = {
	kind = "R101";			// only a name
	
	pop_model = pm;
	
	origins = S.addresses;      // where the origin servers are
	addresses = ['10.0.0.3' ]; // where these robot agents will be created
	
	// realistic request rate
	req_rate = 0.6/sec;
	
	// assumptions based on requests after using cache
	recurrence = 0;
};


// phases //////////////////////////////////////////////////////////////////////////////////////////////

Phase aPhase = {
	name = "normal_traffic";
	goal.duration = 20min;
	load_factor_beg = 1;
	load_factor_end = 1;
};

schedule( aPhase );

use(S, R);
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.