/* * Polyfill2x - workload for testing impact of filesystem performance on proxies performance * */ #include "benches.pg" Bench TheBench = benchPolyMix4; TheBench = { client_side = { addr_space = [ 'lo0::10.101.0-123.1-250/22' ]; hosts = [ '192.168.3.24' ]; // replace with IPs of your PCs }; server_side = { addr_space = [ 'lo0::10.101.128-251.1-250:80/22' ]; hosts = [ '192.168.3.25' ]; // replace with IPs of your PCs }; }; TheBench.peak_req_rate = 100/sec; size ProxyCacheSize = 3000MB + 8MB; /* * Polyfill2x - workload (the details) * */ #include "contents.pg" Server S = { kind = "Polyfill2x-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 }; // 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 }; // describe Polyfill2x robot Robot R = { kind = "Polyfill2x-rbt"; recurrence = 5%/55%; 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; origins = S.addresses; addresses = robotAddrs(asPolyMix4, TheBench); http_versions = [ "1.0" ]; // newer agents use HTTP/1.1 by default }; /* phases */ int clientHostCount = clientHostCount(TheBench); Goal upSample = { xactions = 2000; }; Goal downSample = { xactions = 1000; }; Phase phFill2x = { name = "fill2x"; goal.fill_size = 2*ProxyCacheSize / clientHostCount; populus_factor_beg = 5%; script = { every upSample do { StatSample sample = currentSample(); print("Sample mean response time is ", sample.rep.rptm.mean); if (sample.rep.rptm.mean < 300msec) then { print("incrasing populus factor by +1%"); changePopulusFactorBy(+1%); } } every downSample do { StatSample sample = currentSample(); print("Sample mean response time is ", sample.rep.rptm.mean); if (sample.rep.rptm.mean > 400msec) then { print("decrasing populus factor by -1%"); changePopulusFactorBy(-1%); } } }; }; /* collect stats samples in the phase */ StatsSample fillSample = { capacity = 1000; }; phFill2x.stats_samples = [ fillSample ]; // build schedule schedule ( phFill2x ); // commit to using these objects use(S, R); use(TheBench);