Slide 25
Slide 25 text
Mechanism 9: Eviction
Mechanism 9: Eviction
incHits := p.admit.Estimate(key)
incHits := p.admit.Estimate(key)
for ; room < 0; room = p.evict.roomLeft(cost) {
for ; room < 0; room = p.evict.roomLeft(cost) {
sample = p.evict.fillSample(sample)
sample = p.evict.fillSample(sample)
minKey, minHits, minId := uint64(0), int64(math.MaxInt64), 0
minKey, minHits, minId := uint64(0), int64(math.MaxInt64), 0
for i, pair := range sample {
for i, pair := range sample {
if hits := p.admit.Estimate(pair.key); hits < minHits {
if hits := p.admit.Estimate(pair.key); hits < minHits {
minKey, minHits, minId = pair.key, hits, i
minKey, minHits, minId = pair.key, hits, i
}
}
}
}
if incHits < minHits {
if incHits < minHits {
p.stats.Add(rejectSets, key, 1)
p.stats.Add(rejectSets, key, 1)
return victims, false
return victims, false
}
}
p.evict.del(minKey)
p.evict.del(minKey)
sample[minId] = sample[len(sample)-1]
sample[minId] = sample[len(sample)-1]
sample = sample[:len(sample)-1]
sample = sample[:len(sample)-1]
victims = append(victims, minKey)
victims = append(victims, minKey)
}
}
25
25