有一点小问题想请教一下
zhaohailin111 opened this issue · 1 comments
zhaohailin111 commented
ioworker0 commented
我也提了一个issue关于set的时候为什么要将len(rb.data)/4,我猜这里跟我提的issue是有关联的。
- 因为set的时候保证了一组kv+head不会大于len(rb.data)/4,那么在淘汰的时候如果连续5个都没有清理出空间,很有可能会造成短时间内的无限循环(假设里面只有4组,而且每组kv+head=len(rb.data)/4)。
- 如果rb里面碎片在比较后面的话,Evacuate过程会比较费时。
总结:首先确保不会hang住,才会加consecutiveEvacuate > 5
这个逻辑,其次牺牲掉一些hit率,换取set的高效。这两点也只是我个人猜测,大牛们勿喷。