Abstract
Concurrent data structures such as concurrent queues, stacks, and pools are widely used for concurrent programming of shared-memory multiprocessor and multicore machines. The key challenge is to develop data structures that are not only fast on a given machine but whose performance scales, ideally linearly, with the number of threads, cores, and processors on even bigger machines. Part of that challenge is to provide a common ground for systematically evaluating the performance and scalability of new concurrent data structures and comparing the results with the performance and scalability of existing solutions. For this purpose, we have developed Scal which is an open-source benchmarking framework that provides (1) software infrastructure for executing concurrent data structure algorithms, (2) workloads for benchmarking their performance and scalability, and (3) implementations of a large set of concurrent data structures. We discuss the Scal infrastructure, workloads, and implementations, and encourage further use and development of Scal in the design and implementation of ever faster concurrent data structures.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
The Scal homepage is at http://scal.cs.uni-salzburg.at, the Scal code is publicly available at http://github.com/cksystemsgroup/scal.
- 2.
This is standard bump pointer allocation.
References
Afek, Y., Korland, G., Yanovsky, E.: Quasi-linearizability: relaxed consistency for improved concurrency. In: Lu, C., Masuzawa, T., Mosbah, M. (eds.) OPODIS 2010. LNCS, vol. 6490, pp. 395–410. Springer, Heidelberg (2010)
Attiya, H., Guerraoui, R., Hendler, D., Kuznetsov, P., Michael, M.M., Vechev, M.: Laws of order: expensive synchronization in concurrent algorithms cannot be eliminated. In: Proceedings of Principles of Programming Languages (POPL), pp. 487–498. ACM (2011)
Dodds, M., Haas, A., Kirsch, C.M.: A scalable, correct time-stamped stack. In: Proceedings of Symposium on Principles of Programming Languages (POPL), pp. 233–246. ACM (2015)
Fatourou, P., Kallimanis, N.D.: A highly-efficient wait-free universal construction. In: Proceedings of Symposium on Parallelism in Algorithms and Architectures (SPAA), pp. 325–334. ACM (2011)
Gramoli, V.: More than you ever wanted to know about synchronization: synchrobench, measuring the impact of the synchronization on concurrent algorithms. In: Proceedings of Symposium on Principles and Practice of Parallel Programming (PPoPP), pp. 1–10. ACM (2015)
Haas, A.: Fast Concurrent Data Structures Through Timestamping. Ph.D. thesis, University of Salzburg, Salzburg, Austria (2015)
Haas, A., Henzinger, T.A., Holzer, A., Kirsch, C.M., Lippautz, M., Payer, H., Sezgin, A., Sokolova, A., Veith, H.: Local linearizability. CoRR, abs/1502.07118 (2015)
Haas, A., Henzinger, T.A., Kirsch, C.M., Lippautz, M., Payer, H., Sezgin, A., Sokolova, A.: Distributed queues in shared memory–multicore performance and scalability through quantitative relaxation. In: Proceedings of International Conference on Computing Frontiers (CF). ACM (2013)
Haas, A., Kirsch, C.M., Lippautz, M., Payer, H.: How FIFO is your concurrent FIFO queue? In: Proceedings of Workshop on Relaxing Synchronization for Multicore and Manycore Scalability (RACES), pp. 1–8. ACM (2012)
Hendler, D., Incze, I., Shavit, N., Tzafrir, M.: Flat combining and the synchronization-parallelism tradeoff. In: Proceedings of Symposium on Parallelism in Algorithms and Architectures (SPAA), pp. 355–364. ACM (2010)
Hendler, D., Shavit, N., Yerushalmi, L.: A scalable lock-free stack algorithm. In: Proceedings of Symposium on Parallelism in Algorithms and Architectures (SPAA), pp. 206–215. ACM (2004)
Henzinger, T.A., Kirsch, C.M., Payer, H., Sezgin, A., Sokolova, A.: Quantitative relaxation of concurrent data structures. In: Proceedings of Symposium on Principles of Programming Languages (POPL), pp. 317–328. ACM (2013)
Herlihy, M., Shavit, N.: The Art of Multiprocessor Programming. Morgan Kaufmann Publishers Inc., San Francisco (2008)
Herlihy, M., Wing, J.M.: Linearizability: a correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst. 12(3), 463–492 (1990)
Kirsch, C.M., Lippautz, M., Payer, H.: Fast and scalable, lock-free k-FIFO queues. In: Malyshkin, V. (ed.) PaCT 2013. LNCS, vol. 7979, pp. 208–223. Springer, Heidelberg (2013)
Kirsch, C.M., Payer, H., Röck, H., Sokolova, A.: Performance, scalability, and semantics of concurrent FIFO queues. In: Xiang, Y., Stojmenovic, I., Apduhan, B.O., Wang, G., Nakano, K., Zomaya, A. (eds.) ICA3PP 2012, Part I. LNCS, vol. 7439, pp. 273–287. Springer, Heidelberg (2012)
Knuth, D.E.: The Art of Computer Programming. Fundamental Algorithms, vol. 1, 3rd edn. Addison Wesley, Redwood City (1997)
Kogan, A., Petrank, E.: A methodology for creating fast wait-free data structures. In: Proceedings of Symposium on Principles and Practice of Parallel Programming (PPoPP), pp. 141–150. ACM (2012)
Michael, M.M.: ABA prevention using single-word instructions. Technical report RC 23089, IBM Research Center (2004)
Michael, M.M.: Hazard pointers: safe memory reclamation for lock-free objects. IEEE Trans. Parallel Distrib. Syst. 15(6), 491–504 (2004)
Michael, M.M., Scott, M.L.: Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In: Proceedings of Symposium on Principles of Distributed Computing (PODC), pp. 267–275. ACM (1996)
Michael, M.M., Vechev, M.T., Saraswat, V.A.: Idempotent work stealing. In: Proceedings of Symposium on Principles and Practice of Parallel Programming (PPoPP), pp. 45–54. ACM (2009)
Morrison, A., Afek, Y.: Fast concurrent queues for x86 processors. In: Proceedings of Symposium on Principles and Practice of Parallel Programming (PPoPP), pp. 103–112. ACM (2013)
Nguyen, H.H., Rinard, M.: Detecting and eliminating memory leaks using cyclic memory allocation. In: Proceedings of International Symposium on Memory Management (ISMM), pp. 15–30. ACM (2007)
Shavit, N.: Data structures in the multicore age. Commun. ACM 54(3), 76–84 (2011)
Treiber, R.K.: Systems programming: Coping with parallelism. Technical report RJ-5118, IBM Research Center (1986)
Acknowledgements
This work has been supported by a Google PhD Fellowship and the National Research Network RiSE on Rigorous Systems Engineering (Austrian Science Fund (FWF): S11404-N23 and S11411-N23).
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Haas, A., Hütter, T., Kirsch, C.M., Lippautz, M., Preishuber, M., Sokolova, A. (2015). Scal: A Benchmarking Suite for Concurrent Data Structures. In: Bouajjani, A., Fauconnier, H. (eds) Networked Systems . NETYS 2015. Lecture Notes in Computer Science(), vol 9466. Springer, Cham. https://doi.org/10.1007/978-3-319-26850-7_1
Download citation
DOI: https://doi.org/10.1007/978-3-319-26850-7_1
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-26849-1
Online ISBN: 978-3-319-26850-7
eBook Packages: Computer ScienceComputer Science (R0)