TY - GEN
T1 - Detectable Recovery of Lock-Free Data Structures
AU - Attiya, Hagit
AU - Ben-Baruch, Ohad
AU - Fatourou, Panagiota
AU - Hendler, Danny
AU - Kosmas, Eleftherios
N1 - Publisher Copyright: © 2022 ACM.
PY - 2022/4/2
Y1 - 2022/4/2
N2 - This paper presents a generic approach for deriving detectably recoverable implementations of many widely-used concurrent data structures. Such implementations are appealing for emerging systems featuring byte-addressable non-volatile main memory (NVMM), whose persistence allows to efficiently resurrect failed threads after crashes. Detectable recovery ensures that after a crash, every executed operation is able to recover and return a correct response, and that the state of the data structure is not corrupted. Our approach, called Tracking, amends descriptor objects used in existing lock-free helping schemes with additional fields that track an operation's progress towards completion and persists these fields in order to ensure detectable recovery. Tracking avoids full-fledged logging and tracks the progress of concurrent operations in a per-thread manner, thus reducing the cost of ensuring detectable recovery. We have applied Tracking to derive detectably recoverable implementations of a linked list, a binary search tree, and an exchanger. Our experimental analysis introduces a new way of analyzing the cost of persistence instructions, not by simply counting them but by separating them into categories based on the impact they have on the performance. The analysis reveals that understanding the actual persistence cost of an algorithm in machines with real NVMM, is more complicated than previously thought, and requires a thorough evaluation, since the impact of different persistence instructions on performance may greatly vary. We consider this analysis to be one of the major contributions of the paper.
AB - This paper presents a generic approach for deriving detectably recoverable implementations of many widely-used concurrent data structures. Such implementations are appealing for emerging systems featuring byte-addressable non-volatile main memory (NVMM), whose persistence allows to efficiently resurrect failed threads after crashes. Detectable recovery ensures that after a crash, every executed operation is able to recover and return a correct response, and that the state of the data structure is not corrupted. Our approach, called Tracking, amends descriptor objects used in existing lock-free helping schemes with additional fields that track an operation's progress towards completion and persists these fields in order to ensure detectable recovery. Tracking avoids full-fledged logging and tracks the progress of concurrent operations in a per-thread manner, thus reducing the cost of ensuring detectable recovery. We have applied Tracking to derive detectably recoverable implementations of a linked list, a binary search tree, and an exchanger. Our experimental analysis introduces a new way of analyzing the cost of persistence instructions, not by simply counting them but by separating them into categories based on the impact they have on the performance. The analysis reveals that understanding the actual persistence cost of an algorithm in machines with real NVMM, is more complicated than previously thought, and requires a thorough evaluation, since the impact of different persistence instructions on performance may greatly vary. We consider this analysis to be one of the major contributions of the paper.
KW - NVM-based computing
KW - concurrent data structures
KW - exchanger
KW - linked-list
KW - lock-freedom
KW - non-volatile memory
KW - persistence
KW - persistence cost analysis
KW - recoverable algorithms and data structures
KW - synchronization
KW - tree
UR - http://www.scopus.com/inward/record.url?scp=85127613617&partnerID=8YFLogxK
U2 - https://doi.org/10.1145/3503221.3508444
DO - https://doi.org/10.1145/3503221.3508444
M3 - منشور من مؤتمر
T3 - Proceedings of the ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPOPP
SP - 262
EP - 277
BT - PPoPP 2022 - Proceedings of the 27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
T2 - 27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP 2022
Y2 - 2 April 2022 through 6 April 2022
ER -