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
/*
* 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);
/*
* 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);
This archive was generated by hypermail 2b29 : Mon Feb 06 2006 - 12:00:28 MST