LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
retrieval_ps.m
1% PS variant of retrieval_simple: a single processor-sharing retrieval station.
2clc; clear solver AvgTable;
3
4accessProb = [49, 49, 49, 49, 7, 1, 1] / 205; % per-item arrival probabilities (7 items)
5
6model = Network('DelayedHits');
7
8n = numel(accessProb); % number of items
9capacity = [6]; % per-level cache capacity (total m = 6)
10
11source = Source(model, 'Source');
12cacheNode = Cache(model, 'Cache', n, capacity, ReplacementStrategy.RR);
13queue = Queue(model, 'Queue', SchedStrategy.PS);
14sink = Sink(model, 'Sink');
15
16jobClass = OpenClass(model, 'InitClass', 0);
17hitClass = OpenClass(model, 'HitClass', 0);
18missClass = OpenClass(model, 'MissClass', 0);
19
20source.setArrival(jobClass, Exp(1));
21
22% Read class service at the retrieval queue = default per-item fetch service.
23queue.setService(jobClass, Exp(1.0));
24
25pAccess = DiscreteSampler(accessProb);
26cacheNode.setRead(jobClass, pAccess);
27cacheNode.setHitClass(jobClass, hitClass);
28cacheNode.setMissClass(jobClass, missClass);
29
30% No serviceRates and no routingMatrices: both inherited from the read class.
31cacheNode.setRetrievalSystem(jobClass, missClass, queue);
32
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;
40model.link(P);
41
42% Simulation
43SSA(model, 'samples', 5000, 'method', 'serial', 'seed', 1).getAvgCacheTable
44LDES(model, 'samples', 1e6, 'seed', 1).getAvgCacheTable
45
46% Analytical
47MVA(model).getAvgCacheTable
48NC(model).getAvgCacheTable
49
50% Item-level cache occupancy
51MVA(model).getAvgItemTable
52NC(model).getAvgItemTable
Definition Station.m:245