-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
Copy pathreference.conf
584 lines (501 loc) · 16.7 KB
/
reference.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
####################################
# Cache Simulator Config File #
####################################
# This is the reference config file that contains all the default settings.
# Make your edits/overrides in your application.conf.
caffeine.simulator {
actor {
# The number of messages to buffer per actor
mailbox-size = 10
# The number of events to send per actor message
batch-size = 1000
}
report {
# Formats: table, csv
format = table
# Columns: policy, hit rate, hits, misses, evictions, admit rate, steps, time
sort-by = policy
ascending = true
# The output destination, either the console or a file path
output = console
}
# The seed for randomized operations
random-seed = 1033096058
# The maximum number of entries in the cache
maximum-size = 512
policies = [
# Policies that provide an optimal upper bound
opt.Unbounded,
opt.Clairvoyant,
# Policies based on maintaining a linked-list cross-cutting the hash table
linked.Lru,
linked.Mru,
linked.Lfu,
linked.Mfu,
linked.Fifo,
linked.Clock,
linked.S4Lru,
linked.Sieve,
linked.MultiQueue,
linked.SegmentedLru,
# Policies based on obtaining a random sampling from the hash table
sampled.Lru,
sampled.Mru,
sampled.Lfu,
sampled.Mfu,
sampled.Fifo,
sampled.Random,
sampled.Hyperbolic,
# Policies based on the Greedy-Dual algorithm
greedy-dual.Camp,
greedy-dual.Gdsf,
greedy-dual.GDWheel,
# Policies based on the 2Q algorithm
two-queue.TwoQueue,
two-queue.TuQueue,
two-queue.S3Fifo,
# Policies based on a sketch algorithm
sketch.WindowTinyLfu,
sketch.S4WindowTinyLfu,
sketch.LruWindowTinyLfu,
sketch.RandomWindowTinyLfu,
sketch.FullySegmentedWindowTinyLfu,
sketch.HillClimberWindowTinyLfu,
sketch.FeedbackTinyLfu,
sketch.FeedbackWindowTinyLfu,
sketch.TinyCache,
sketch.TinyCache_GhostCache,
sketch.WindowTinyCache,
# Policies based on the LIRS algorithm
irr.Frd,
irr.Lirs,
irr.DClock,
irr.ClockPro,
irr.ClockProPlus,
irr.ClockProSimple,
# Policies based on the ARC algorithm
adaptive.Arc,
adaptive.Car,
adaptive.Cart,
# Caching products
product.Guava,
product.TCache,
product.Cache2k,
product.Caffeine,
product.Ehcache3,
product.Coherence,
product.Hazelcast,
product.ExpiringMap,
]
# The admission policy (opposite of eviction policy)
admission = [
Always,
TinyLfu,
Clairvoyant,
]
# The membership filter
membership {
# caffeine, guava, fast-filter
filter = caffeine
# The false positive probability
fpp = 0.01
# The multiple of the maximum size indicating the expected number of insertions
expected-insertions-multiplier = 3.0
fast-filter {
# bloom, counting-bloom, succinct-counting-bloom, blocked-bloom, blocked-bloom-v2
# succinct-counting-blocked-bloom, succinct-counting-blocked-bloom-v2,
# succinct-counting-blocked-bloom-ranked-v2,
type = blocked-bloom
# The number of bits per key
bits-per-key = 11
}
}
sampled {
# The random sample size
size = 8
# guess: Chooses items at random until the sample size is reached
# shuffle: http://en.wikipedia.org/wiki/Fisher–Yates_shuffle
# reservoir: http://en.wikipedia.org/wiki/Reservoir_sampling
strategy = guess
}
multi-queue {
# The logical time that an entry can reside idle in a queue before being demoted
lifetime = 75
# The number of queues using a 2^n frequency distribution
num-queues = 8
# The percentage for the OUT queue
percent-out = 0.50
}
segmented-lru {
# The percentage for the PROTECTED queue
percent-protected = 0.80
}
s4lru {
# The number of segments
levels = 4
}
two-queue {
# The percentage for the IN queue
percent-in = 0.20
# The percentage for the OUT queue
percent-out = 0.50
}
tu-queue {
# The percentage for the HOT queue
percent-hot = 0.33
# The percentage for the WARM queue
percent-warm = 0.33
}
s3fifo {
# The percentage for the S queue
percent-small = 0.10
# The percentage for the G queue
percent-ghost = 0.90
# The promotion frequency threshold
move-to-main-threshold = 1
# The n-bit clock frequency for the S and M queues
maximum-frequency = 3
}
tiny-lfu {
# CountMinSketch: count-min-4 (4-bit), count-min-64 (64-bit)
# Table: random-table, tiny-table, perfect-table
# Clairvoyant: next access times comparison
# Always: always admits (disablement)
sketch = count-min-4
# If increments are conservative by only updating the minimum counters for CountMin sketches
count-min.conservative = false
jitter {
# When enabled an otherwise rejected candidate has a random chance of being admitted
enabled = true
# The threshold frequency of a warm candidate to give it a random admission
threshold = 6
# The admission probability
probability = 0.0078125
}
count-min-64 {
eps = 0.0001
confidence = 0.99
}
count-min-4 {
# periodic: Resets by periodically halving all counters
# incremental: Resets by halving counters in an incremental sweep
# climber or indicator: Resets periodically at an adaptive interval
reset = periodic
# The multiple of the maximum size determining the number of counters
counters-multiplier = 1.0
incremental {
# The incremental reset interval (the number of additions before halving counters)
interval = 16
}
periodic.doorkeeper {
# When enabled the "counters-multiplier" should be reduced to determine the space savings
enabled = false
}
}
}
feedback-tiny-lfu {
# The maximum emphasis to give newly inserted entries
maximum-insertion-gain = 5
# The maximum size of the sample period
maximum-sample-size = 256
# The false positive probability of the adaptive filter
adaptive-fpp = 0.03
}
window-tiny-lfu {
# The percentage for the MAIN space (PROBATION + PROTECTED)
percent-main = [0.99]
# The percentage for the PROTECTED MAIN queue
percent-main-protected = 0.80
}
lru-window-tiny-lfu {
# The percentage for the MAIN queue
percent-main = [0.99]
}
random-window-tiny-lfu {
# The percentage for the MAIN space
percent-main = [0.99]
}
fully-segmented-window-tiny-lfu {
# The percentage for the MAIN space (PROBATION + PROTECTED)
percent-main = [0.99]
# The percentage for the PROTECTED MAIN queue
percent-main-protected = 0.80
# The percentage for the PROTECTED WINDOW queue
percent-window-protected = 0.80
}
s4-window-tiny-lfu {
# The percentage for the MAIN queue
percent-main = [0.99]
# The number of segments in the MAIN space
levels = 4
}
feedback-window-tiny-lfu {
# The initial percentage for the MAIN space (PROBATION + PROTECTED)
percent-main = [0.99]
# The initial percentage for the PROTECTED MAIN queue
percent-main-protected = 0.80
# The initial percentage of the WINDOW space that can be pivoted
percent-pivot = 0.0
# The amount to increase the window when adapting
pivot-increment = 8
# The amount to decrease the window when adapting
pivot-decrement = 4
# The maximum size of the WINDOW space
maximum-window-size = 256
# The maximum size of the sample period
maximum-sample-size = 1024
# The false positive probability of the adaptive filter
adaptive-fpp = 0.03
}
hill-climber-window-tiny-lfu {
# The initial percentage for the MAIN space (PROBATION + PROTECTED)
percent-main = [0.99]
# The initial percentage for the PROTECTED MAIN queue
percent-main-protected = 0.80
# simple: Moves a fixed amount based on if the current direction had a positive impact
# simulated-annealing: A simple hill climber that cools off, reducing the step size
# stochastic-gradient-descent: Uses the gradient and momentum to walk the curve
# adam, nadam, amsgrad: SGD with adaptive step sizes
# indicator: Computes the best configuration based on a sampled skew
# minisim: Simulates multiple configurations and chooses the best one
strategy = [
simple,
indicator,
]
simple {
# The percent of the total size to adapt the window by
percent-pivot = 0.0625
# The size of the sample period (1.0 = 100%)
percent-sample = 10.0
# The difference in hit rate percentage to tolerate before changing directions
tolerance = 0.0
# The rate to decrease the step size to adapt by
step-decay-rate = 0.98
# The rate to decrease the sampling period
sample-decay-rate = 1.0
# The difference in hit rate percentage to tolerate before restarting the adaption
restart-threshold = 0.05
}
simulated-annealing {
# The percent of the total size to adapt the window by
percent-pivot = 0.0625
# The size of the sample period (1.0 = 100%)
percent-sample = 10.0
# The difference in hit rate to tolerate before cooling down
cool-down-tolerance = 0.0
# The cool down rate
cool-down-rate = 0.9
# The minimum temperature, at which point annealing halts
min-temperature = 0.00001
# The difference in hit rate to tolerate before restarting
restart-tolerance = 0.03
# The chance for a random restart
random-restart = 0.01
}
stochastic-gradient-descent {
# The percent of the total size to adapt the window by
percent-pivot = 0.005
# The size of the sample period (1.0 = 100%)
percent-sample = 0.05
# none, momentum, nesterov
acceleration = momentum
# The force of acceleration
beta = 0.9
}
adam {
# The percent of the total size to adapt the window by
percent-pivot = 0.005
# The size of the sample period (1.0 = 100%)
percent-sample = 0.05
# The decay rate of the momentum
beta1 = 0.9
# The decay rate of the velocity
beta2 = 0.999
# The fuzz factor for stability
epsilon = 1e-8
}
nadam {
# The percent of the total size to adapt the window by
percent-pivot = 0.005
# The size of the sample period (1.0 = 100%)
percent-sample = 0.05
# The decay rate of the momentum
beta1 = 0.9
# The decay rate of the velocity
beta2 = 0.999
# The fuzz factor for stability
epsilon = 1e-8
}
amsgrad {
# The percent of the total size to adapt the window by
percent-pivot = 0.005
# The size of the sample period (1.0 = 100%)
percent-sample = 0.05
# The decay rate of the momentum
beta1 = 0.9
# The decay rate of the velocity
beta2 = 0.999
# The fuzz factor for stability
epsilon = 1e-8
}
minisim {
# The period length of the minisim adaptation
period = 1000000
}
}
indicator {
# Skew estimation is based on the top-k items
k = 70
# The size of the stream summary sketch
ss-size = 1000
}
frd {
# The percentage for the MAIN queue
percent-main = 0.90
# The period length of the indicator adaptation
period = 50000
}
lirs {
# The percentage for the HOT queue
percent-hot = 0.99
# The multiple of the maximum size dedicated to non-resident entries
non-resident-multiplier = 2.0
}
clockpro {
# The percentage for the minimum resident cold entries
percent-min-resident-cold = 0.01
# The percentage for the maximum resident cold entries
percent-max-resident-cold = 0.99
# The lower bound for the number of resident cold entries
lower-bound-resident-cold = 2
# The multiple of the maximum size dedicated to non-resident entries
non-resident-multiplier = 2.0
}
clockproplus {
# The percentage for the minimum resident cold entries
percent-min-resident-cold = 0.01
# The percentage for the maximum resident cold entries
percent-max-resident-cold = 0.5
# The lower bound for the number of resident cold entries
lower-bound-resident-cold = 2
# The multiple of the maximum size dedicated to non-resident entries
non-resident-multiplier = 1.0
}
dclock {
# The percentage for the ACTIVE queue
percent-active = [ 0.5, 0.99 ]
}
coherence {
# Policies: Hybrid, Lfu, Lru
policy = [ hybrid, lfu, lru ]
}
hazelcast {
# Policies: Random, Lru, Lfu
policy = [ random, lru, lfu ]
}
expiring-map {
# Policies: Fifo, Lru
policy = [ lru ]
}
tcache {
# Policies: Lru, Lfu
policy = [ lru, lfu ]
}
gd-wheel {
# The number of wheels used in the policy
wheels = 2
# The number of queues for each wheel
queues = 256
}
camp {
# Precision parameter
precision = 5
}
trace {
# files: reads from the trace file(s)
# synthetic: reads from a synthetic generator
source = files
# The number of events to skip
skip = 0
# The number of events to process or null if unbounded
limit = null
}
files {
# The paths to the trace files or the file names if in the format's package. To use a mix of
# formats, specify the entry in the form "{format}:{path}", e.g. "lirs:loop.trace.gz".
paths = [ multi1.trace.gz ]
# arc: format from the authors of the ARC algorithm
# adapt-size: format from the authors of the AdaptSize algorithm
# address: format of UCSD program address traces
# address-penalties: format of UCSD program address traces with hit & miss penalties
# baleen: format from the authors of the Baleen algorithm
# cache2k: format from the author of the Cache2k library
# cachelib: format from the author of the Cachelib library
# camelab: format of the Camelab storage traces
# cloud-physics: format of the Cloud Physics traces
# corda: format of Corda traces
# gl-cache: format from the authors of the GL-Cache algorithm
# gradle: format from the authors of the Gradle build tool
# lcs_trace: format from the authors of libCacheSim
# lcs_twitter: format from the authors of libCacheSim
# lirs: format from the authors of the LIRS algorithm
# lrb: format from the authors of the LRB algorithm
# outbrain: format of Outbrain's trace provided on Kaggle
# scarab: format of Scarab Research traces
# snia-cambridge: format of the SNIA MSR Cambridge traces
# snia-enterprise: format of the SNIA MS Enterprise traces
# snia-k5cloud: format of the SNIA K5cloud traces
# snia-object-store: format of the SNIA IBM ObjectStore traces
# snia-systor: format of the SNIA SYSTOR '17 traces
# snia-tencent-block: format of the SNIA Tencent Block traces
# snia-tencent-photo: format of the SNIA Tencent Photo traces
# tragen: format of the Tragen synthetic trace generator
# twitter: format of the Twitter Cache Cluster traces
# umass-storage: format of the University of Massachusetts storage traces
# umass-youtube: format of the University of Massachusetts youtube traces
# wikipedia: format of the WikiBench request traces
format = lirs
}
synthetic {
# The number of events to generate
events = 10000
# counter, repeating, uniform, exponential, hotspot,
# zipfian, scrambled-zipfian, or skewed-zipfian-latest
distribution = scrambled-zipfian
# A sequence of unique integers starting from...
counter.start = 1
# A sequence of unique integers that repeats
repeating.items = 5000
# A sequence that is generated from the specified set uniformly randomly
uniform {
lower-bound = 1
upper-bound = 1000
}
# A sequence based on an exponential distribution with a mean arrival rate of gamma
exponential.mean = 1.0
# A sequence resembling a hotspot distribution where x% of operations access y% of data items
hotspot {
# The lower bound of the distribution
lower-bound = 1
# The upper bound of the distribution
upper-bound = 1000
# The percentage of the of the interval which comprises the hot set
hotset-fraction = 0.25
# The percentage of operations that access the hot set
hot-opn-fraction = 0.25
}
# A sequence where some items are more popular than others, according to a zipfian distribution
zipfian {
# The number of items
items = 5000
# The skewness factor
constant = 0.99
# A zipfian sequence that scatters the "popular" items across the item space. Use if you don't
# want the head of the distribution (the popular items) clustered together.
scrambled {}
# A zipfian sequence with a popularity distribution of items, skewed to favor recent items
# significantly more than older items
skewed-zipfian-latest {}
}
}
}