1% PS variant of retrieval_simple: a single processor-sharing retrieval station.
2clc; clear solver AvgTable;
4accessProb = [49, 49, 49, 49, 7, 1, 1] / 205; % per-item arrival probabilities (7 items)
6model = Network(
'DelayedHits');
8n = numel(accessProb); % number of items
9capacity = [6]; % per-level cache capacity (total m = 6)
11source = Source(model, 'Source');
12cacheNode = Cache(model, 'Cache', n, capacity, ReplacementStrategy.RR);
13queue = Queue(model, 'Queue', SchedStrategy.PS);
14sink = Sink(model, 'Sink');
16jobClass = OpenClass(model, 'InitClass', 0);
17hitClass = OpenClass(model, 'HitClass', 0);
18missClass = OpenClass(model, 'MissClass', 0);
20source.setArrival(jobClass, Exp(1));
22% Read class service at
the retrieval queue = default per-item fetch service.
23queue.setService(jobClass, Exp(1.0));
25pAccess = DiscreteSampler(accessProb);
26cacheNode.setRead(jobClass, pAccess);
27cacheNode.setHitClass(jobClass, hitClass);
28cacheNode.setMissClass(jobClass, missClass);
30% No serviceRates and no routingMatrices: both inherited from
the read class.
31cacheNode.setRetrievalSystem(jobClass, missClass, queue);
33P = model.initRoutingMatrix();
34P{jobClass, jobClass}(source, cacheNode) = 1.0;
35% Retrieval topology drawn once
for the read
class: cache <-> queue.
36P{jobClass, jobClass}(cacheNode, queue) = 1.0;
37P{jobClass, jobClass}(queue, cacheNode) = 1.0;
38P{hitClass, hitClass}(cacheNode, sink) = 1.0;
39P{missClass, missClass}(cacheNode, sink) = 1.0;
43SSA(model,
'samples', 5000,
'method',
'serial',
'seed', 1).getAvgCacheTable
44LDES(model,
'samples', 1e6,
'seed', 1).getAvgCacheTable
47MVA(model).getAvgCacheTable
48NC(model).getAvgCacheTable
50% Item-level cache occupancy
51MVA(model).getAvgItemTable
52NC(model).getAvgItemTable