{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,10]],"date-time":"2026-01-10T08:15:33Z","timestamp":1768032933941,"version":"3.49.0"},"reference-count":53,"publisher":"Springer Science and Business Media LLC","issue":"6","license":[{"start":{"date-parts":[[2020,9,23]],"date-time":"2020-09-23T00:00:00Z","timestamp":1600819200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2020,9,23]],"date-time":"2020-09-23T00:00:00Z","timestamp":1600819200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"funder":[{"DOI":"10.13039\/501100003393","name":"Fujitsu","doi-asserted-by":"publisher","id":[{"id":"10.13039\/501100003393","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100001659","name":"Deutsche Forschungsgemeinschaft","doi-asserted-by":"crossref","award":["SPP KE401\/22"],"award-info":[{"award-number":["SPP KE401\/22"]}],"id":[{"id":"10.13039\/501100001659","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["The VLDB Journal"],"published-print":{"date-parts":[[2020,11]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>I\/O latency and throughput are two of the major performance bottlenecks for disk-based database systems. Persistent memory (PMem) technologies, like Intel\u2019s Optane DC persistent memory modules, promise to bridge the gap between NAND-based flash (SSD) and DRAM, and thus eliminate the I\/O bottleneck. In this paper, we provide the first comprehensive performance evaluation of PMem on real hardware in terms of bandwidth and latency. Based on the results, we develop guidelines for efficient PMem usage and four optimized low-level building blocks for PMem applications: log writing, block flushing, in-place updates, and coroutines for write latency hiding.<\/jats:p>","DOI":"10.1007\/s00778-020-00622-9","type":"journal-article","created":{"date-parts":[[2020,9,23]],"date-time":"2020-09-23T21:02:48Z","timestamp":1600894968000},"page":"1223-1241","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":22,"title":["Building blocks for persistent memory"],"prefix":"10.1007","volume":"29","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-6365-4592","authenticated-orcid":false,"given":"Alexander","family":"van Renen","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9771-4784","authenticated-orcid":false,"given":"Lukas","family":"Vogel","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Viktor","family":"Leis","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-5787-142X","authenticated-orcid":false,"given":"Thomas","family":"Neumann","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Alfons","family":"Kemper","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2020,9,23]]},"reference":[{"issue":"12","key":"622_CR1","first-page":"1754","volume":"10","author":"M Andrei","year":"2017","unstructured":"Andrei, M., Lemke, C., Radestock, G., Schulze, R., Thiel, C., Blanco, R., Meghlan, A., Sharique, M., Seifert, S., Vishnoi, S., Booss, D., Peh, T., Schreter, I., Thesing, W., Wagle, M., Willhalm, T.: SAP HANA adoption of non-volatile memory. PVLDB 10(12), 1754\u20131765 (2017)","journal-title":"PVLDB"},{"issue":"5","key":"622_CR2","first-page":"553","volume":"11","author":"J Arulraj","year":"2018","unstructured":"Arulraj, J., Levandoski, J.J., Minhas, U.F., Larson, P.: Bztree: a high-performance latch-free range index for non-volatile memory. PVLDB 11(5), 553\u2013565 (2018)","journal-title":"PVLDB"},{"key":"622_CR3","doi-asserted-by":"crossref","unstructured":"Arulraj, J., Pavlo, A.: How to build a non-volatile memory database management system. In: SIGMOD (2017)","DOI":"10.1145\/3035918.3054780"},{"key":"622_CR4","doi-asserted-by":"crossref","unstructured":"Arulraj, J., Pavlo, A., Dulloor, S.: Let\u2019s talk about storage and recovery methods for non-volatile memory database systems. In: SIGMOD, pp. 707\u2013722 (2015)","DOI":"10.1145\/2723372.2749441"},{"key":"622_CR5","doi-asserted-by":"crossref","unstructured":"Arulraj, J., Pavlo, A., Malladi, K.\u00a0T.: Multi-tier buffer management and storage system design for non-volatile memory. arXiv (2019)","DOI":"10.1007\/978-3-031-01868-8_5"},{"issue":"4","key":"622_CR6","first-page":"337","volume":"10","author":"J Arulraj","year":"2016","unstructured":"Arulraj, J., Perron, M., Pavlo, A.: Write-behind logging. PVLDB 10(4), 337\u2013348 (2016)","journal-title":"PVLDB"},{"issue":"2","key":"622_CR7","first-page":"1435","volume":"3","author":"M Canim","year":"2010","unstructured":"Canim, M., Mihaila, G.A., Bhattacharjee, B., Ross, K.A., Lang, C.A.: SSD bufferpool extensions for database systems. PVLDB 3(2), 1435\u20131446 (2010)","journal-title":"PVLDB"},{"key":"622_CR8","doi-asserted-by":"publisher","first-page":"17","DOI":"10.1145\/1272743.1272747","volume":"32","author":"S Chen","year":"2007","unstructured":"Chen, S., Ailamaki, A., Gibbons, P.B., Mowry, T.C.: Improving hash join performance through prefetching. ACM Trans. Database Syst. 32, 17 (2007)","journal-title":"ACM Trans. Database Syst."},{"issue":"7","key":"622_CR9","first-page":"786","volume":"8","author":"S Chen","year":"2015","unstructured":"Chen, S., Jin, Q.: Persistent B+-trees in non-volatile main memory. PVLDB 8(7), 786\u2013797 (2015)","journal-title":"PVLDB"},{"key":"622_CR10","doi-asserted-by":"crossref","unstructured":"Cohen, N., Aksun, D.T., Avni, H., Larus, J.R.: Fine-grain checkpointing with in-cache-line logging. In: ASPLOS (2019)","DOI":"10.1145\/3297858.3304046"},{"key":"622_CR11","doi-asserted-by":"crossref","unstructured":"Cooper, B.F., Silberstein, A., Tam, E., Ramakrishnan, R., Sears, R.: Benchmarking cloud serving systems with YCSB. In: SoCC, pp. 143\u2013154 (2010)","DOI":"10.1145\/1807128.1807152"},{"key":"622_CR12","doi-asserted-by":"crossref","unstructured":"Do, J., Zhang, D., Patel, J.M., DeWitt, D.J., Naughton, J.F., Halverson, A.: Turbocharging DBMS buffer pool using SSDs. In: SIGMOD (2011)","DOI":"10.1145\/1989323.1989442"},{"key":"622_CR13","doi-asserted-by":"crossref","unstructured":"Dulloor, S.R., Kumar, S., Keshavamurthy, A., Lantz, P., Reddy, D., Sankaran, R., Jackson, J.: System software for persistent memory. In: EuroSys (2014)","DOI":"10.1145\/2592798.2592814"},{"key":"622_CR14","doi-asserted-by":"crossref","unstructured":"Fang, R., Hsiao, H., He, B., Mohan, C., Wang, Y.: High performance database logging using storage class memory. In: ICDE, pp. 1221\u20131231 (2011)","DOI":"10.1109\/ICDE.2011.5767918"},{"key":"622_CR15","unstructured":"G\u00f6tze, P., Baumann, S., Sattler, K.: An NVM-aware storage layout for analytical workloads. In: ICDE Workshops (2018)"},{"issue":"3","key":"622_CR16","doi-asserted-by":"publisher","first-page":"171","DOI":"10.1007\/s13222-018-0301-1","volume":"18","author":"P G\u00f6tze","year":"2018","unstructured":"G\u00f6tze, P., van Renen, A., Lersch, L., Leis, V., Oukid, I.: Data management on non-volatile memory: a perspective. Datenbank-Spektrum 18(3), 171\u2013182 (2018)","journal-title":"Datenbank-Spektrum"},{"key":"622_CR17","doi-asserted-by":"crossref","unstructured":"Harizopoulos, S., Abadi, D.J., Madden, S., Stonebraker, M.: OLTP through the looking glass, and what we found there. In: SIGMOD, pp. 981\u2013992 (2008)","DOI":"10.1145\/1376616.1376713"},{"issue":"4","key":"622_CR18","first-page":"389","volume":"8","author":"J Huang","year":"2014","unstructured":"Huang, J., Schwan, K., Qureshi, M.K.: NVRAM-aware logging in transaction systems. PVLDB 8(4), 389\u2013400 (2014)","journal-title":"PVLDB"},{"key":"622_CR19","doi-asserted-by":"publisher","unstructured":"Imamura, S., Yoshida, E.: The analysis of inter-process interference on a hybrid memory system. In: Proceedings of the International Conference on High Performance Computing in Asia-Pacific Region Workshops, HPCAsia2020, pp. 1\u20134. Association for Computing Machinery, New York (2020). https:\/\/doi.org\/10.1145\/3373271.3373272(ISBN: 9781450376501)","DOI":"10.1145\/3373271.3373272"},{"key":"622_CR20","doi-asserted-by":"crossref","unstructured":"Izraelevitz, J., Kelly, T., Kolli, A.: Failure-atomic persistent memory updates via JUSTDO logging. In: Conte, T., Zhou, Y. (eds.) ASPLOS (2016)","DOI":"10.1145\/2872362.2872410"},{"key":"622_CR21","unstructured":"Izraelevitz, J., Yang, J., Zhang, L., Kim, J., Liu, X., Memaripour, A., Soh, Y.J., Wang, Z., Xu, Y., Dulloor, S.R., Zhao, J., Swanson, S.: Basic performance measurements of the intel optane DC persistent memory module. In: CoRR (2019)"},{"key":"622_CR22","doi-asserted-by":"crossref","unstructured":"Jonathan, C., Minhas, U.F., Hunter, J., Levandoski, J.J., Nishanov, G.V.: Exploiting coroutines to attack the \u201ckiller nanoseconds\u201d. In: PVLDB (2018)","DOI":"10.14778\/3236187.3236216"},{"issue":"5","key":"622_CR23","doi-asserted-by":"publisher","first-page":"673","DOI":"10.1007\/s00778-015-0414-1","volume":"25","author":"W Kang","year":"2016","unstructured":"Kang, W., Lee, S., Moon, B.: Flash as cache extension for online transactional workloads. VLDB J. 25(5), 673\u2013694 (2016)","journal-title":"VLDB J."},{"key":"622_CR24","doi-asserted-by":"crossref","unstructured":"Karnagel, T., Dementiev, R., Rajwar, R., Lai, K., Legler, T., Schlegel, B., Lehner, W.: Improving in-memory database index performance with intel transactional synchronization extensions. In: HPCA (2014)","DOI":"10.1109\/HPCA.2014.6835957"},{"key":"622_CR25","doi-asserted-by":"crossref","unstructured":"Kimura, H.: FOEDUS: OLTP engine for a thousand cores and NVRAM. In: SIGMOD, pp. 691\u2013706 (2015)","DOI":"10.1145\/2723372.2746480"},{"key":"622_CR26","doi-asserted-by":"crossref","unstructured":"Ko\u00e7berber, Y.O., Falsafi, B., Grot, B.: Asynchronous memory access chaining. In: PVLDB (2015)","DOI":"10.14778\/2856318.2856321"},{"key":"622_CR27","unstructured":"Lee, S.K., Lim, K.H., Song, H., Nam, B., Noh, S.H.: WORT: write optimal radix tree for persistent memory storage systems. In: FAST, pp. 257\u2013270 (2017)"},{"key":"622_CR28","doi-asserted-by":"crossref","unstructured":"Lee, S.K., Mohan, J., Kashyap, S., Kim, T., Chidambaram, V.: RECIPE: converting concurrent DRAM indexes to persistent-memory indexes. In: SOSP (2019)","DOI":"10.1145\/3341301.3359635"},{"key":"622_CR29","doi-asserted-by":"crossref","unstructured":"Lersch, L., Hao, X., Oukid, I., Wang, T., Willhalm, T.: Evaluating persistent memory range indexes. In: PVLDB (2019)","DOI":"10.14778\/3372716.3372728"},{"key":"622_CR30","doi-asserted-by":"crossref","unstructured":"Lersch, L., Lehner, W., Oukid, I.: Persistent buffer management with optimistic consistency. In: DaMoN (2019)","DOI":"10.1145\/3329785.3329931"},{"key":"622_CR31","doi-asserted-by":"crossref","unstructured":"Liu, M., Zhang, M., Chen, K., Qian, X., Wu, Y., Zheng, W., Ren, J.: Dudetm: building durable transactions with decoupling for persistent memory. In: ASPLOS (2017)","DOI":"10.1145\/3037697.3037714"},{"issue":"8","key":"622_CR32","first-page":"541","volume":"6","author":"X Liu","year":"2013","unstructured":"Liu, X., Salem, K.: Hybrid storage management for database systems. PVLDB 6(8), 541\u2013552 (2013)","journal-title":"PVLDB"},{"issue":"10","key":"622_CR33","first-page":"1076","volume":"5","author":"T Luo","year":"2012","unstructured":"Luo, T., Lee, R., Mesnier, M.P., Chen, F., Zhang, X.: hStorage-DB: heterogeneity-aware data management to exploit the full capability of hybrid storage systems. PVLDB 5(10), 1076\u20131087 (2012)","journal-title":"PVLDB"},{"key":"622_CR34","doi-asserted-by":"crossref","unstructured":"Memaripour, A., Badam, A., Phanishayee, A., Zhou, Y., Alagappan, R., Strauss, K., Swanson, S.: Atomic in-place updates for non-volatile main memories with kamino-tx. In: EuroSys (2017)","DOI":"10.1145\/3064176.3064215"},{"key":"622_CR35","doi-asserted-by":"crossref","unstructured":"Oukid, I., Booss, D., Lehner, W., Bumbulis, P., Willhalm, T.: SOFORT: a hybrid SCM-DRAM storage engine for fast data recovery. In: DaMoN (2014)","DOI":"10.1145\/2619228.2619236"},{"key":"622_CR36","doi-asserted-by":"crossref","unstructured":"Oukid, I., Booss, D., Lespinasse, A., Lehner, W., Willhalm, T., Gomes, G.: Memory management techniques for large-scale persistent-main-memory systems. In: PVLDB (2017)","DOI":"10.14778\/3137628.3137629"},{"key":"622_CR37","doi-asserted-by":"crossref","unstructured":"Oukid, I., Lasperas, J., Nica, A., Willhalm, T., Lehner, W.: FPTree: a hybrid SCM-DRAM persistent and concurrent B-tree for storage class memory. In: SIGMOD, pp. 371\u2013386 (2016)","DOI":"10.1145\/2882903.2915251"},{"key":"622_CR38","doi-asserted-by":"crossref","unstructured":"Oukid, I., Lehner, W.: Data structure engineering for byte-addressable non-volatile memory. In: SIGMOD (2017)","DOI":"10.1145\/3035918.3054777"},{"key":"622_CR39","unstructured":"Oukid, I., Lehner, W., Kissinger, T., Willhalm, T., Bumbulis, P.: Instant recovery for main memory databases. In: CIDR (2015)"},{"issue":"2","key":"622_CR40","doi-asserted-by":"publisher","first-page":"121","DOI":"10.1007\/s13222-018-0287-8","volume":"18","author":"I Oukid","year":"2018","unstructured":"Oukid, I., Lersch, L.: On the diversity of memory and storage technologies. Datenbank-Spektrum 18(2), 121\u2013127 (2018)","journal-title":"Datenbank-Spektrum"},{"key":"622_CR41","unstructured":"Oukid, I., Nica, A., Bossle, D.D.S., Lehner, W., Bumbulis, P., Willhalm, T.: Adaptive recovery for SCM-enabled databases. In: ADMS (2017)"},{"key":"622_CR42","doi-asserted-by":"crossref","unstructured":"Pelley, S., Wenisch, T.F., Gold, B.T., Bridge, B.: Storage management in the NVRAM era. In: PVLDB (2013)","DOI":"10.14778\/2732228.2732231"},{"key":"622_CR43","unstructured":"PMDK.: Persistent memory development kit. http:\/\/www.pmem.io. Accessed 26 03 2019"},{"key":"622_CR44","doi-asserted-by":"crossref","unstructured":"Psaropoulos, G., Oukid, I. Legler, T., May, N., Ailamaki, A.: Bridging the latency gap between NVM and DRAM for latency-bound operations. In: DaMoN (2019)","DOI":"10.1145\/3329785.3329917"},{"key":"622_CR45","unstructured":"Sauer, C.: Modern techniques for transaction-oriented database recovery. PhD thesis, Kaiserslautern University of Technology, Germany (2017)"},{"key":"622_CR46","doi-asserted-by":"crossref","unstructured":"van Renen, A., Leis, V., Kemper, A., Neumann, T., Hashida, T., Oe, K., Doi, Y., Harada, L., Sato, M.: Managing non-volatile memory in database systems. In: SIGMOD (2018)","DOI":"10.1145\/3183713.3196897"},{"key":"622_CR47","doi-asserted-by":"crossref","unstructured":"van Renen, A., Vogel, L., Leis, V., Neumann, T., Kemper, A.: Persistent memory I\/O primitives. In: DaMoN (2019)","DOI":"10.1145\/3329785.3329930"},{"key":"622_CR48","unstructured":"Venkataraman, S., Tolia, N., Ranganathan, P., Campbell, R.H.: Consistent and durable data structures for non-volatile byte-addressable memory. In: FAST, pp. 61\u201375 (2011)"},{"key":"622_CR49","doi-asserted-by":"crossref","unstructured":"Volos, H., Tack, A.J., Swift, M.M.: Mnemosyne: lightweight persistent memory. In: ASPLOS (2011)","DOI":"10.1145\/1950365.1950379"},{"issue":"10","key":"622_CR50","first-page":"865","volume":"7","author":"T Wang","year":"2014","unstructured":"Wang, T., Johnson, R.: Scalable logging through emerging non-volatile memory. PVLDB 7(10), 865\u2013876 (2014)","journal-title":"PVLDB"},{"key":"622_CR51","unstructured":"Xia, F., Jiang, D., Xiong, J., Sun, N.: Hikv: a hybrid index key-value store for DRAM-NVM memory systems. In: USENIX ATC, pp. 349\u2013362 (2017)"},{"key":"622_CR52","unstructured":"Yang, J., Wei, Q., Chen, C., Wang, C., Yong, K.L., He, B.: NV-tree: reducing consistency cost for NVM-based single level systems. In: FAST, pp. 167\u2013181 (2015)"},{"key":"622_CR53","doi-asserted-by":"crossref","unstructured":"Zhou, X., Shou, L., Chen, K., Hu, W., Chen, G.: DPTree: differential indexing for persistent memory. In: PVLDB (2019)","DOI":"10.14778\/3372716.3372717"}],"container-title":["The VLDB Journal"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s00778-020-00622-9.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s00778-020-00622-9\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s00778-020-00622-9.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,11,20]],"date-time":"2022-11-20T03:16:47Z","timestamp":1668914207000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s00778-020-00622-9"}},"subtitle":["How to get the most out of your new memory?"],"short-title":[],"issued":{"date-parts":[[2020,9,23]]},"references-count":53,"journal-issue":{"issue":"6","published-print":{"date-parts":[[2020,11]]}},"alternative-id":["622"],"URL":"https:\/\/doi.org\/10.1007\/s00778-020-00622-9","relation":{},"ISSN":["1066-8888","0949-877X"],"issn-type":[{"value":"1066-8888","type":"print"},{"value":"0949-877X","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020,9,23]]},"assertion":[{"value":"29 January 2020","order":1,"name":"received","label":"Received","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"6 July 2020","order":2,"name":"revised","label":"Revised","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"15 July 2020","order":3,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"23 September 2020","order":4,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}]}}