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)
5serviceRates = ones(1, 7); % per-item PS fetch rates (mu_i = 1)
6
7model = Network('DelayedHits');
8
9n = numel(serviceRates); % number of items
10capacity = [6]; % per-level cache capacity (total m = 6)
11
12source = Source(model, 'Source');
13cacheNode = Cache(model, 'Cache', n, capacity, ReplacementStrategy.RR);
14queue = Queue(model, 'Queue', SchedStrategy.PS);
15sink = Sink(model, 'Sink');
16
17jobClass = OpenClass(model, 'InitClass', 0);
18hitClass = OpenClass(model, 'HitClass', 0);
19missClass = OpenClass(model, 'MissClass', 0);
20
21source.setArrival(jobClass, Exp(1));
22
23pAccess = DiscreteSampler(accessProb);
24cacheNode.setRead(jobClass, pAccess);
25cacheNode.setHitClass(jobClass, hitClass);
26cacheNode.setMissClass(jobClass, missClass);
27
28% Queue -> Cache and Cache -> Queue inside the retrieval system
29retrievalRoutingMatrix = [0.0, 1.0; % Queue -> [Queue, Cache]
30 1.0, 0.0]; % Cache -> [Queue, Cache]
31cacheNode.setRetrievalSystem(jobClass, missClass, queue, serviceRates, retrievalRoutingMatrix);
32
33P = model.initRoutingMatrix();
34P{jobClass, jobClass}(source, cacheNode) = 1.0;
35P{hitClass, hitClass}(cacheNode, sink) = 1.0;
36P{missClass, missClass}(cacheNode, sink) = 1.0;
37model.link(P);
38
39% Simulation
40SSA(model, 'samples', 5000, 'method', 'serial', 'seed', 1).getAvgCacheTable
41LDES(model, 'samples', 1e6, 'seed', 1).getAvgCacheTable
42
43% Analytical
44MVA(model).getAvgCacheTable
45NC(model).getAvgCacheTable
46
47% Item-level cache occupancy
48MVA(model).getAvgItemTable
49NC(model).getAvgItemTable