ACM Transactions on Programming Languages and Systems (TOPLAS)
Reactive synchronization algorithms for multiprocessors
ASPLOS VI Proceedings of the sixth international conference on Architectural support for programming languages and operating systems
The SPLASH-2 programs: characterization and methodological considerations
ISCA '95 Proceedings of the 22nd annual international symposium on Computer architecture
Simple, fast, and practical non-blocking and blocking concurrent queue algorithms
PODC '96 Proceedings of the fifteenth annual ACM symposium on Principles of distributed computing
Nonblocking algorithms and preemption-safe locking on multiprogrammed shared memory multiprocessors
Journal of Parallel and Distributed Computing
High performance dynamic lock-free hash tables and list-based sets
Proceedings of the fourteenth annual ACM symposium on Parallel algorithms and architectures
WOSP '02 Proceedings of the 3rd international workshop on Software and performance
A Pragmatic Implementation of Non-blocking Linked-Lists
DISC '01 Proceedings of the 15th International Conference on Distributed Computing
Split-ordered lists: lock-free extensible hash tables
Proceedings of the twenty-second annual symposium on Principles of distributed computing
Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects
IEEE Transactions on Parallel and Distributed Systems
Concurrent programming without locks
ACM Transactions on Computer Systems (TOCS)
Lock-free deques and doubly linked lists
Journal of Parallel and Distributed Computing
Scalable nonblocking concurrent objects for mission critical code
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
A scalable lock-free stack algorithm
Journal of Parallel and Distributed Computing
The Art of Multiprocessor Programming
The Art of Multiprocessor Programming
A Concurrency and Time Centered Framework for Autonomous Space Systems: Design and application of nonblocking programming techniques, static analysis of C++, and formal methods
Lock-free dynamically resizable arrays
OPODIS'06 Proceedings of the 10th international conference on Principles of Distributed Systems
Hi-index | 0.00 |
Efficient multicore programming demands fundamental data structures that support a high degree of concurrency. Existing research on non-blocking data structures promises to satisfy such demands by providing progress guarantees that allow a significant increase in parallelism while avoiding the safety hazards of lock-based synchronizations. It is well-acknowledged that the use of non-blocking containers can bring significant performance benefits to applications where the shared data experience heavy contention. However, the practical implications of integrating these data structures in real-world applications are not well-understood. In this paper, we study the effective use of non-blocking data structures in a data deduplication application which performs a large number of concurrent compression operations on a data stream using the pipeline parallel processing model. We present our experience of manually refactoring the application from using conventional lock-based synchronization mechanisms to using a wait-free hash map and a set of lock-free queues to boost the degree of concurrency of the application. Our experimental study explores the performance trade-offs of parallelization mechanisms that rely on a) traditional blocking techniques, b) fine-grained mutual exclusion, and c) lock-free and wait-free synchronization.