Safe memory reclamation (SMR) algorithms suffer from a trade-off between bounding unreclaimed memory and the speed of reclamation. Hazard pointer (HP) based algorithms bound unreclaimed memory at all times, but tend to be slower than other approaches. Epoch based reclamation (EBR) algorithms are faster, but do not bound memory reclamation. Other algorithms follow hybrid approaches, requiring special compiler or hardware support, changes to record layouts, and/or extensive code changes. Not all SMR algorithms can be used to reclaim memory for all data structures. We propose a new neutralization based reclamation (NBR) algorithm that is faster than the best known EBR algorithms and achieves bounded unreclaimed memory. It is non-blocking when used with a non-blocking operating system (OS) kernel, and only requires atomic read, write and CAS. NBR is straightforward to use with many different data structures, and in most cases, require similar reasoning and programmer effort to two-phased locking. NBR is implemented using OS signals and a lightweight handshaking mechanism between participating threads to determine when it is safe to reclaim a record. Experiments on a lock-based binary search tree and a lazy linked list show that NBR significantly outperforms many state of the art reclamation algorithms. In the tree NBR is faster than next best algorithm, DEBRA by upto 38% and HP by upto 17%. And, in the list NBR is 15% and 243% faster than DEBRA and HP, respectively.
翻译:安全内存回收( SMR) 算法存在一种互换关系: 约束式的未受尊重的内存和直接利用速度之间的折中关系。 基于危害指算法(HP) 的算法(HP) 在所有时间都不受尊重的内存约束,但往往比其他方法更慢。 基于 Epoch 的回收(EBR) 算法更快,但并不约束内存回收。 其他算法遵循混合方法, 需要特殊编译员或硬件支持, 需要修改版面和/ 或广泛的代码更改。 并非所有的 SMRR 算法都可用于恢复所有数据结构的内存。 我们建议采用一个新的中性化(NBR) 算法(NBR) 以比已知的最佳 EBR 算法(NBR) 速度更快, 并且 NBRBR( NBR) 和 NBER 排序比参与的 RBR 和 RBA 列表的 RBA 更快速, 和 RBA 的 RBA 和 RBA 最快速的LA 排序比 更安全的 RLA 和最快速的 RBA 和最快速的 RLA 和最快速的 RLA 和最快速的 RLA 和最快速的 RBA 和最快速的 RLA 和最快速的 RLA 和最快速的 RBA 将显示的 RBA 和最快的 RBR) 和最快的 RBR 和最快的 RLA 和最快的 RBR) 和最快的 RBR 的 RLA 将显示的 RLA 和最快的 RLA 的 RLA 的 RLA 将显示到更快的 RLA 和最快的 RLA 将显示到更快的 RLA 和最快的 RLA 的 RBA 和最快的 RLA 的 RBA 和最快的 RLA 的 RLA 和最快的 RLA 和最快的 RLA 和最快的 RLA 和最快的 RLA