Abstract
Software Transactional Memory systems (STMs) have garnered significant interest as an elegant alternative for addressing synchronization and concurrency issues with multi-threaded programming in multi-core systems. Client programs use STMs by issuing transactions. STM ensures that transaction either commits or aborts. A transaction aborted due to conflicts is typically re-issued with the expectation that it will complete successfully in a subsequent incarnation. However, many existing STMs fail to provide starvation freedom, i.e., in these systems, it is possible that concurrency conflicts may prevent an incarnated transaction from committing. To overcome this limitation, we systematically derive a novel starvation free algorithm for multi-version STM. Our algorithm can be used either with the case where the number of versions is unbounded and garbage collection is used or where only the latest K versions are maintained, KSFTM. We have demonstrated that our proposed algorithm performs better than existing state-of-the-art STMs.
Similar content being viewed by others
Notes
Technically \(\infty \), which is assigned to \(tutl_i \), cannot be decremented. But here as mentioned earlier, we use \(\infty \) to denote the largest possible value that can be represented in a system.
Code is available here: https://github.com/PDCRL/KSFTM.
References
Attiya H, Gotsman A, Hans S, Rinetzky N (2014) Safety of live transactions in transactional memory: TMS is necessary and sufficient. In: DISC, pp 376–390
Bernstein PA, Goodman N (1983) Multiversion concurrency control: theory and algorithms. ACM Trans Database Syst
Bushkov V, Guerraoui R (2015) Liveness in transactional memory pp Transactional Memory. Foundations, Algorithms, Tools, and Applications, pp 32–49
Bushkov V, Guerraoui R, Kapalka M (2012) On the liveness of transactional memory. In: ACM symposium on PODC 2012
Chaudhary VP, Juyal C, Kulkarni SS, Kumari S, Peri S (2017) Starvation freedom in multi-version transactional memory systems. CoRR arXiv:1709.01033
Chaudhary VP, Juyal C, Kulkarni SS, Kumari S, Peri S (2019) Achieving starvation-freedom in multi-version transactional memory systems. In: NETYS
Crain T, Imbs D, Raynal M (2011) Read invisibility, virtual world consistency and probabilistic permissiveness are compatible. In: ICA3PP
Dalessandro L, Spear MF, Scott ML (2010) NOrec: streamlining STM by abolishing ownership records. PPoPP 2010
Doherty S, Groves L, Luchangco V, Moir M (2009) Towards formally specifying and verifying transactional memory. In: REFINE
Felber P, Gramoli V, Guerraoui R (2017) Elastic transactions. J Parallel Distrib Comput 100(C):103–127(C):103–127
Fernandes SM, Cachopo J (2011) Lock-free and scalable multi-version software transactional memory. PPoPP 2011
Gramoli V, Guerraoui R, Trigonakis V (2012) TM2C: a software transactional memory for many-cores. EuroSys 2012
Guerraoui R, Kapalka M (2008) On the correctness of transactional memory. In: PPoPP 2008
Guerraoui R, Kapalka M (2010) Principles of transactional memory. Synthesis lectures on distributed computing theory, Morgan and Claypool
Guerraoui R, Henzinger T, Singh V (2008) Permissiveness in transactional memories. In: DISC 2008
Herlihy M, BMoss JE (1993) Transactional memory: architectural support for lock-free data structures. SIGARCH Comput Archit News 21(2)
Herlihy M, Shavit N (2011) On the nature of progress. OPODIS 2011
Herlihy M, Shavit N (2012) The art of multiprocessor programming, revised reprint, 1st edn. Morgan Kaufmann Publishers Inc., San Francisco
Herlihy MP, Wing JM (1990) Linearizability: a correctness condition for concurrent objects. ACM Trans Program Lang Syst 12(3)
Kumar P, Peri S, Vidyasankar K (2014) A TimeStamp based multi-version STM algorithm. In: ICDCN, pp 212–226
Kuznetsov P, Peri S (2014) Non-interference and local correctness in transactional memory. In: ICDCN, pp 197–211
Kuznetsov P, Peri S (2017) Non-interference and local correctness in transactional memory. Theor Comput Sci 688
Lu L, Scott ML (2013) Generic multiversion STM. In: DISC 2013
Minh CC, Chung J, Kozyrakis C, Olukotun K (2008) STAMP: stanford transactional applications for multi-processing. In: IISWC 2008
Papadimitriou CH (1979) The serializability of concurrent database updates. J ACM 26(4)
Perelman D, Byshevsky A, Litmanovich O, Keidar I (2011) SMV: selective multi-versioning STM. In: DISC, pp 125–140
Riegel T, Felber P, Fetzer C (2006) A lazy snapshot algorithm with eager validation. In: DISC 2006
Shavit N, Touitou D (1995) Software transactional memory. In: PODC
Spear MF, Dalessandro L, Marathe VJ, Scott ML (2009) A comprehensive strategy for contention management in software transactional memory. PPoPP
Waliullah MM, Stenström P (2009) Schemes for avoiding starvation in transactional memory systems. Practice and experience, concurrency and computation
Acknowledgements
Thanks to the NSF XPS 1533802 and project funded by MeitY, GoI titled “An Efficient Distributed Framework for Smart Contract Execution in Blockchain Systems”, Approval No. 4(20)/2019-ITEA dated 27th February.
Author information
Authors and Affiliations
Corresponding author
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
A preliminary version of this paper appeared in 8th International Conference On Networked Systems (NETYS 2019). A part of this work was submitted in IIT Hyderabad, India towards the fulfillment of Ph.D. thesis requirement by an author Sweta Kumari.
Author sequence follows the lexical order of last names.
Supplementary Information
Below is the link to the electronic supplementary material.
Rights and permissions
About this article
Cite this article
Chaudhary, V.P., Juyal, C., Kulkarni, S. et al. Achieving starvation-freedom in multi-version transactional memory systems. Computing 104, 2159–2179 (2022). https://doi.org/10.1007/s00607-021-00994-y
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00607-021-00994-y
Keywords
- Software transactional memory system
- Concurrency control
- Starvation-freedom
- Opacity
- Local opacity
- Multi-version