skip to main content
10.1145/2508075.2508431acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Effective use of non-blocking data structures in a deduplication application

Published: 26 October 2013 Publication History

Abstract

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.

References

[1]
D. Dechev and B. Stroustrup, "Scalable Nonblocking Concurrent Objects for Mission Critical Code," in OOPSLA '09: Proceedings of the ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, 2009.
[2]
M. Herlihy and N. Shavit, The Art of Multiprocessor Programming. Morgan Kaufmann, March 2008. {Online}. Available: www.amazon.ca/exec/obidos/redirect?tag=citeulike09-20&path=ASIN/0123705916
[3]
D. Dechev, A Concurrency and Time Centered Framework for Autonomous Space Systems. LAP LAMBERT Academic Publishing, August 2010.
[4]
D. Dechev, P. Pirkelbauer, and B. Stroustrup, "Lock-Free Dynamically Resizable Arrays," in OPODIS, ser. Lecture Notes in Computer Science, A. A. Shvartsman, Ed., vol. 4305. Springer, 2006, pp. 142--156.
[5]
K. Fraser and T. Harris, "Concurrent programming without locks," ACM Trans. Comput. Syst., vol. 25, no. 2, p. 5, 2007. {Online}. Available: www.ddj.com/dept/cpp/184401890
[6]
M. Michael, "CAS-Based Lock-Free Algorithm for Shared Deques," in Euro-Par 2003: The Ninth Euro-Par Conference on Parallel Processing, LNCS volume 2790, 2003, pp. 651--660.
[7]
P. Tsigas and Y. Zhang, "The non-blocking programming paradigm in large scale scientific computations," in PPAM, 2003, pp. 1114--1124.
[8]
C. Bienia and K. Li, "Parsec 2.0: A new benchmark suite for chip- multiprocessors," in Proceedings of the 5th Annual Workshop on Modeling, Benchmarking and Simulation, June 2009.
[9]
Intel, "Intel Threading Building Blocks," threadingbuildingblocks.org/, November 2011. {Online}. Available: threadingbuildingblocks.org/
[10]
M. Moir and N. Shavit, Handbook of Data Structures and Applications. Chapman and Hall/CRC Press, 2007, ch. Concurrent Data Structures, pp. 47--1--47--30.
[11]
M. Herlihy, "Wait-Free Synchronization," in Trans. on Programming Languages and Systems. ACM, 1991, pp. 124--149.
[12]
D. Dechev, "The ABA Problem in Multicore Data Structures with Collaborating Operations," in Proceedings of the 7th International Conference on Collaborative Computing: Networking, Applications and Worksharing (CollaborateCom 2011), 2011.
[13]
S. Feldman, P. LaBorde, and D. Dechev, UCF Technical Report (cse.eecs.ucf.edu/private/UCF-TechReport-HashTable.pdf). Retrieved 04/05/2013.
[14]
S. Feldman, P. LaBorde, and D. Dechev, "A Lock-Free Concurrent Hash Table Design for Effective Information Storage and Retrieval on Large Data Sets," in Proceedings of the 15th Annual High Performance Computing Workshop (HPEC 2011), 2011.
[15]
D. Lea, "Concurrenthashmap," gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/util/concurrent/ConcurrentHashMap.html, May 2013.
[16]
M. M. Michael and M. L. Scott, "Simple, fast, and practical non- blocking and blocking concurrent queue algorithms," in Proceedings of the fifteenth annual ACM symposium on Principles of distributed computing, ser. PODC '96. New York, NY, USA: ACM, 1996, pp. 267--275. {Online}. Available: doi.acm.org/10.1145/248052.248106
[17]
M. M. Michael, "Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects," IEEE Trans. Parallel Distrib. Syst., vol. 15, no. 6, pp. 491--504, 2004. {Online}. Available: www.research.ibm.com/people/m/michael/ieeetpds-2004.pdf
[18]
Linux User's Manual, "mpstat," linuxcommand.org/manpages/mpstat1.html, May 2013.{
[19]
P. Tsigas and Y. Zhang, "Integrating non-blocking synchronisation in parallel applications: performance advantages and methodologies," in Proceedings of the 3rd international workshop on Software and performance, ser. WOSP '02. New York, NY, USA: ACM, 2002, pp. 55--67. {Online}. Available: doi.acm.org/10.1145/584369.584378
[20]
S. Woo, M. Ohara, E. Torrie, J. Singh, and A. Gupta, "The splash-2 programs: Characterization and methodological considerations," in 22nd International Symposium on Computer Architectures, June 1995, pp. 24--36.
[21]
D. R. O'Hallaron, "Spark98: Sparse matrix kernels for shared memory and message passing systems," Tech. Rep. CMU-CS-97-178, October 1997.
[22]
B. Lim and A. Agarwal, "Reactive synchronization algorithms for multiprocessors," in Proceedings of the Sixth International Conference on Architectural Support for Programming Languages and Operating Systems, October 1994, pp. 25--35.
[23]
M. M. Michael and M. L. Scott, "Nonblocking algorithms and preemption-safe locking on multiprogrammed shared memory multi- processors," in Journal of Parallel and Distributed Computing, vol. 51, no. 1, 1998, pp. 1--26.
[24]
T. L. Harris, "A pragmatic implementation of non-blocking linked- lists," in Proceedings of the 15th International Conference on Dis- tributed Computing, ser. DISC '01. London, UK: Springer- Verlag, 2001, pp. 300--314.
[25]
M. M. Michael, "High performance dynamic lock-free hash tables and list-based sets," in SPAA '02: Proceedings of the fourteenth annual ACM symposium on Parallel algorithms and architectures. New York, NY, USA: ACM Press, 2002, pp. 73--82.
[26]
H. Sundell and P. Tsigas, "Lock-free deques and doubly linked lists," J. Parallel Distrib. Comput., vol. 68, pp. 1008--1020, July 2008.
[27]
Microsoft, "System.collections.concurrent namespace," Microsoft, 2011, .NET Framework 4. {Online}. Available: msdn.microsoft.com/en-us/library/system.collections.concurrent.aspx
[28]
D. Hendler, N. Shavit, and L. Yerushalmi, "A scalable lock-free stack algorithm," J. Parallel Distrib. Comput., vol. 70, pp. 1--12, January 2010.
[29]
H. Gao, J. Groote, and W. Hesselink, "Almost wait-free resizable hashtables," in Parallel and Distributed Processing Symposium, 2004. Proceedings. 18th International, april 2004, p. 50.
[30]
O. Shalev and N. Shavit, "Split-ordered lists: Lock-free extensible hash tables," in PODC '03: Proceedings of the twenty-second annual symposium on Principles of distributed computing. New York, NY, USA: ACM Press, 2003, pp. 102--111.
[31]
K. Fraser, "Practical lock-freedom," in Computer Laboratory, Cam- bridge Univ, 2004.
[32]
D. Dechev, P. Pirkelbauer, and B. Stroustrup, "Lock-free dynamically resizable arrays," in Principles of Distributed Systems, ser. Lecture Notes in Computer Science, M. Shvartsman, Ed. Springer Berlin / Heidelberg, 2006, vol. 4305, pp. 142--156. {Online}. Available: dx.doi.org/10.1007/1194552911.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
SPLASH '13: Proceedings of the 2013 companion publication for conference on Systems, programming, & applications: software for humanity
October 2013
192 pages
ISBN:9781450319959
DOI:10.1145/2508075
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 26 October 2013

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. C/C++ multithreading
  2. concurrent data deduplication
  3. lock-free synchronization
  4. multiprocessor software design
  5. parallel data structures

Qualifiers

  • Research-article

Conference

SPLASH '13
Sponsor:

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)6
  • Downloads (Last 6 weeks)0
Reflects downloads up to 15 Sep 2024

Other Metrics

Citations

Cited By

View all

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media