Abstract
Persistent memory is receiving a tremendous amount of attention recently from both academia and industry. Atomic and durable transactions have been studied to ensure crash consistency in persistent memory. However, whether to use undo or redo logging to execute those transactions is still a hotly debated topic. Redo logging seems appropriate for write-dominated workloads and transactions in high contention scenarios whereas undo logging seems appropriate for read-dominated workloads and transactions in low contention scenarios. This necessitates a priori knowledge on the workload and contention scenario to select an appropriate logging method between redo or undo to achieve better performance. In this paper, we argue that we can obtain the best of both worlds without the need of such a priori knowledge. Particularly, we present an adaptive logging framework that dynamically switches between redo and undo logging at runtime so that the performance is always better than that is obtained from a priori selection of either undo or redo logging. We formally model our framework, prove its correctness, and provide an extensive evaluation of it through a persistent memory emulation of TinySTM using 5 micro-benchmarks and 8 complex benchmarks from STAMP and STAMPEDE suites that are well-known and widely used in the literature. The results show significant benefits of our logging framework.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
The Persistent Memory Development Kit (PMDK). https://github.com/pmem/pmdk/. Accessed 23 Feb 2018
TinySTM 1.0.5. http://tmware.org/sites/tmware.org/files/tinySTM/tinySTM-1.0.5.tgz. Accessed 23 Feb 2018
Avni, H., Levy, E., Mendelson, A.: Hardware transactions in nonvolatile memory. In: Moses, Y. (ed.) DISC 2015. LNCS, vol. 9363, pp. 617–630. Springer, Heidelberg (2015). https://doi.org/10.1007/978-3-662-48653-5_41
Chatzistergiou, A., Cintra, M., Viglas, S.: Rewind: recovery write-ahead system for in-memory non-volatile data-structures. PVLDB 8, 497–508 (2015)
Coburn, J., Bunker, T., Schwarz, M., Gupta, R., Swanson, S.: From ARIES to MARS: transaction support for next-generation, solid-state drives. In: SOSP, pp. 197–212 (2013)
Coburn, J., et al.: NV-Heaps: making persistent objects fast and safe with next-generation, non-volatile memories. In: ASPLOS, pp. 105–118 (2011)
Dulloor, S.R., et al.: System software for persistent memory. In: EuroSys, pp. 15:1–15:15 (2014)
Felber, P., Fetzer, C., Marlier, P., Riegel, T.: Time-based software transactional memory. IEEE Trans. Parallel Distrib. Syst. 21(12), 1793–1807 (2010)
Felber, P., Fetzer, C., Riegel, T.: Dynamic performance tuning of word-based software transactional memory. In: PPOPP, pp. 237–246 (2008)
Herlihy, M., Luchangco, V., Moir, M., Scherer III, W.N.: Software transactional memory for dynamic-sized data structures. In: PODC, pp. 92–101 (2003)
Izraelevitz, J., Kelly, T., Kolli, A.: Failure-atomic persistent memory updates via JUSTDO logging. ASPLOS 44, 427–442 (2016)
Kolli, A., Pelley, S., Saidi, A., Chen, P.M., Wenisch, T.F.: High-performance transactions for persistent memories. In: ASPLOS, pp. 399–411 (2016)
Liu, M., et al.: DudeTM: building durable transactions with decoupling for persistent memory. In: ASPLOS, pp. 329–343 (2017)
Lu, Y., Shu, J., Sun, L.: Blurred persistence: efficient transactions in persistent memory. Trans. Storage 12(1), 3:1–3:29 (2016)
Minh, C.C., Chung, J., Kozyrakis, C., Olukotun, K.: STAMP: stanford transactional applications for multi-processing. In: IISWC, pp. 35–46 (2008)
Narayanan, D., Hodson, O.: Whole-system persistence. In: ASPLOS, pp. 401–410 (2012)
Nguyen, D., Pingali, K.: What scalable programs need from transactional memory. In: ASPLOS, pp. 105–118 (2017)
Shavit, N., Touitou, D.: Software transactional memory. In: PODC, pp. 204–213 (1995)
Shin, S., Tirukkovalluri, S.K., Tuck, J., Solihin, Y.: Proteus: a flexible and fast software supported hardware logging approach for NVM. In: MICRO, pp. 178–190 (2017)
Volos, H., Tack, A.J., Swift, M.M.: Mnemosyne: lightweight persistent memory. In: ASPLOS, pp. 91–104 (2011)
Wan, H., Lu, Y., Xu, Y., Shu, J.: Empirical study of redo and undo logging in persistent memory. In: NVMSA, pp. 1–6 (2016)
Zhang, Y., Swanson, S.: A study of application performance with non-volatile main memory. In: 2015 31st Symposium on Mass Storage Systems and Technologies (MSST), pp. 1–10 (2015)
Zhao, J., Li, S., Yoon, D.H., Xie, Y., Jouppi, N.P.: Kiln: closing the performance gap between systems with and without persistence support. In: MICRO, pp. 421–432 (2013)
Zhou, P., Zhao, B., Yang, J., Zhang, Y.: A durable and energy efficient main memory using phase change memory technology. In: SIGARCH Computer Architecture News, vol. 37, no. 3, pp. 14–23 (2009)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer Nature Switzerland AG
About this paper
Cite this paper
Poudel, P., Sharma, G. (2018). An Adaptive Logging Framework for Persistent Memories. In: Izumi, T., Kuznetsov, P. (eds) Stabilization, Safety, and Security of Distributed Systems. SSS 2018. Lecture Notes in Computer Science(), vol 11201. Springer, Cham. https://doi.org/10.1007/978-3-030-03232-6_3
Download citation
DOI: https://doi.org/10.1007/978-3-030-03232-6_3
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-03231-9
Online ISBN: 978-3-030-03232-6
eBook Packages: Computer ScienceComputer Science (R0)