3% q-LRU replacement: on a miss
the item
is admitted (LRU head insert) with
4% probability q, otherwise it passes through uncached. Admission filtering can
5% raise
the hit ratio over plain LRU under skewed popularity. Exact in CTMC;
6% simulated in SSA/LDES. Not product-form (MVA/NC/FLD reject it).
8model = Network(
'model');
10n = 5; % number of items
11m = 2; % cache capacity
13delay = Delay(model,
'Delay');
14cacheNode = Cache(model,
'Cache', n, m, ReplacementStrategy.QLRU);
15cacheNode.setAdmissionProb(0.5); % admit a missed item with probability q=0.5
17jobClass = ClosedClass(model,
'JobClass', 1, delay, 0);
18hitClass = ClosedClass(model,
'HitClass', 0, delay, 0);
19missClass = ClosedClass(model,
'MissClass', 0, delay, 0);
21delay.setService(jobClass, Exp(1));
23pAccess = Zipf(1.2, n); % Zipf-like item references
24cacheNode.setRead(jobClass, pAccess);
26cacheNode.setHitClass(jobClass, hitClass);
27cacheNode.setMissClass(jobClass, missClass);
29P = model.initRoutingMatrix;
30P{jobClass, jobClass}(delay, cacheNode) = 1.0;
31P{hitClass, jobClass}(cacheNode, delay) = 1.0;
32P{missClass, jobClass}(cacheNode, delay) = 1.0;
35solver{1} = CTMC(model,
'keep',
false);
36AvgTable{1} = solver{1}.getAvgNodeTable; AvgTable{1}
39solver{2} = SSA(model,
'samples',1e4,
'method',
'serial',
'seed',23000);
40AvgTable{2} = solver{2}.getAvgNodeTable; AvgTable{2}