LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
retrieval_chain.m
1% Cache with a chained retrieval system (delayed hits).
2clc; clear solver AvgTable;
3
4accessProb = [0.6, 0.3, 0.1]; % per-item access probabilities (3 items)
5serviceRates = [2.0, 2.0, 2.0; % Queue_1 per-item retrieval rates
6 3.0, 3.0, 3.0]; % Queue_2 per-item retrieval rates
7nQueues = 2;
8
9model = Network('DelayedHits');
10
11n = size(serviceRates, 2); % number of items
12capacity = [1]; % per-level cache capacity
13
14source = Source(model, 'Source');
15cacheNode = Cache(model, 'Cache', n, capacity, ReplacementStrategy.FIFO);
16queues = cell(1, nQueues);
17for i = 1:nQueues
18 queues{i} = Queue(model, sprintf('Queue_%d', i), SchedStrategy.FCFS);
19end
20sink = Sink(model, 'Sink');
21
22jobClass = OpenClass(model, 'InitClass', 0);
23hitClass = OpenClass(model, 'HitClass', 0);
24missClass = OpenClass(model, 'MissClass', 0);
25
26source.setArrival(jobClass, Exp(1));
27
28pAccess = DiscreteSampler(accessProb);
29cacheNode.setRead(jobClass, pAccess);
30cacheNode.setHitClass(jobClass, hitClass);
31cacheNode.setMissClass(jobClass, missClass);
32
33cacheNode.setRetrievalSystem(jobClass, missClass, queues, serviceRates);
34
35% Per-item chain: Cache -> Queue_1 -> Queue_2 -> Cache
36for item = 1:n
37 cacheNode.setItemQueueEntryProbability(jobClass, item, queues{1}, 1.0);
38 for q = 1:(nQueues - 1)
39 cacheNode.setItemRoutingProbability(jobClass, item, queues{q}, queues{q + 1}, 1.0);
40 end
41 cacheNode.setItemQueueExitProbability(jobClass, item, queues{nQueues}, 1.0);
42end
43
44P = model.initRoutingMatrix();
45P{jobClass, jobClass}(source, cacheNode) = 1.0;
46P{hitClass, hitClass}(cacheNode, sink) = 1.0;
47P{missClass, missClass}(cacheNode, sink) = 1.0;
48model.link(P);
49
50% Simulation
51SSA(model, 'samples', 5000, 'method', 'serial', 'seed', 1).getAvgCacheTable
52LDES(model, 'samples', 1e6, 'seed', 1).getAvgCacheTable
53
54% Analytical
55MVA(model).getAvgCacheTable
56NC(model).getAvgCacheTable
57
58% Item-level cache occupancy
59MVA(model).getAvgItemTable
60NC(model).getAvgItemTable