ABSTRACT
Managed workloads show strong demand for large memory capacity, which can be satisfied by a hybrid memory sub-system composed of traditional DRAM and the emerging non-volatile memory (NVM) technology. Nevertheless, NVM devices are limited by deficiencies like write endurance and asymmetric bandwidth, which threatens managed applications’ performance and reliability. Prior work has proposed different object placement mechanisms to mitigate problems introduced by NVM, but they require domain-specific knowledge on applications or significant change on managed runtime. By analyzing the performance of representative data-intensive workloads atop NVM, this paper finds that reducing write operations is key for performance and wear-leveling. To this end, this paper proposes GCMove, a transparent and efficient object placement mechanism for hybrid memories. GCMove embraces a lightweight write barrier for write detection and relies on garbage collections (GC) to copy objects into different devices according to their write-related behaviors. Compared with prior work, GCMove does not require significant changes in heap layout and thus can be easily integrated with mainstream copy-based garbage collection. The evaluation on various managed workloads shows that GCMove can eliminate 99.8% of NVM write operations on average and improve the performance by up to 19.81× compared with the NVM-only version.
- Shoaib Akram. 2021. Performance Evaluation of Intel Optane Memory for Managed Workloads. ACM Transactions on Architecture and Code Optimization (TACO), 18, 3 (2021), 1–26.Google ScholarDigital Library
- Shoaib Akram, Jennifer Sartor, Kathryn McKinley, and Lieven Eeckhout. 2019. Crystal Gazer: Profile-driven write-rationing garbage collection for hybrid memories. Proceedings of the ACM on Measurement and Analysis of Computing Systems, 3, 1 (2019), 9.Google ScholarDigital Library
- Shoaib Akram, Jennifer B Sartor, Kathryn S McKinley, and Lieven Eeckhout. 2018. Write-rationing garbage collection for hybrid memories. ACM SIGPLAN Notices, 53, 4 (2018), 62–77.Google ScholarDigital Library
- Cliff Click, Gil Tene, and Michael Wolf. 2005. The pauseless GC algorithm. In Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments. 46–56.Google ScholarDigital Library
- David Detlefs, Christine Flood, Steve Heller, and Tony Printezis. 2004. Garbage-first garbage collection. In Proceedings of the 4th international symposium on Memory management. 37–48.Google ScholarDigital Library
- Andrew Dinn. 2018. JEP 352: Non-Volatile Mapped Byte Buffers. https://openjdk.java.net/jeps/352.Google Scholar
- Mingkai Dong and Haibo Chen. 2017. Soft Updates Made Simple and Fast on Non-volatile Memory. In 2017 USENIX Annual Technical Conference (USENIX ATC 17). USENIX Association, Santa Clara, CA. 719–731. isbn:978-1-931971-38-6Google Scholar
- Lu Fang, Khanh Nguyen, Guoqing Xu, Brian Demsky, and Shan Lu. 2015. Interruptible tasks: Treating memory pressure as interrupts for highly scalable data-parallel programs. In Proceedings of the 25th Symposium on Operating Systems Principles. 394–409.Google ScholarDigital Library
- Christine H Flood, Roman Kennke, Andrew Dinn, Andrew Haley, and Roland Westrelin. 2016. Shenandoah: An open-source concurrent compacting garbage collector for openjdk. In Proceedings of the 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools. 1–9.Google ScholarDigital Library
- Jinyu Gu, Qianqian Yu, Xiayang Wang, Zhaoguo Wang, Binyu Zang, Haibing Guan, and Haibo Chen. 2019. Pisces: a scalable and efficient persistent transactional memory. In 2019 $USENIX$ Annual Technical Conference ($USENIX$$ATC$ 19). 913–928.Google Scholar
- Hewlett Packard Enterprise. 2018. Managed Data Structures. https://github.com/HewlettPackard/mds.Google Scholar
- Mark Hildebrand, Jawad Khan, Sanjeev Trika, Jason Lowe-Power, and Venkatesh Akella. 2020. Autotm: Automatic tensor movement in heterogeneous memory systems using integer linear programming. In Proceedings of the Twenty-Fifth International Conference on Architectural Support for Programming Languages and Operating Systems. 875–890.Google ScholarDigital Library
- INTEL. 2019. Intel(R) Optane(TM) DC Persistent Memory.. https://www.intel.com/content/www/us/en/architecture-andtechnology/optane-dc-persistent-memory.html..Google Scholar
- INTEL. 2019. Persistent Collections for Java. https://github.com/pmem/pcj.Google Scholar
- Kishor Kharbas. 2016. JEP 316: Heap Allocation on Alternative Memory Devices. https://openjdk.java.net/jeps/316.Google Scholar
- Jérôme Kunegis. 2013. Konect: the koblenz network collection. In Proceedings of the 22nd international conference on World Wide Web. 1343–1350.Google ScholarDigital Library
- Anatole Lefort, Yohan Pipereau, Kwabena Amponsem, Pierre Sutra, and Gaël Thomas. 2021. J-NVM: Off-heap Persistent Objects in Java. In Proceedings of the ACM SIGOPS 28th Symposium on Operating Systems Principles. 408–423.Google ScholarDigital Library
- Christian Navasca, Cheng Cai, Khanh Nguyen, Brian Demsky, Shan Lu, Miryung Kim, and Guoqing Harry Xu. 2019. Gerenuk: thin computation over big native data using speculative program transformation. In Proceedings of the 27th ACM Symposium on Operating Systems Principles. 538–553.Google ScholarDigital Library
- Khanh Nguyen, Lu Fang, Christian Navasca, Guoqing Xu, Brian Demsky, and Shan Lu. 2018. Skyway: Connecting managed heaps in distributed big data systems. In ACM SIGPLAN Notices. 53, 56–69.Google ScholarDigital Library
- Khanh Nguyen, Lu Fang, Guoqing Xu, Brian Demsky, Shan Lu, Sanazsadat Alamian, and Onur Mutlu. 2016. Yak: A high-performance big-data-friendly garbage collector. In Proc. the 12th USENIX Conference on Operating Systems Design and Implementation.Google ScholarDigital Library
- Julia Preusse, Jérôme Kunegis, Matthias Thimm, Steffen Staab, and Thomas Gottron. 2013. Structural dynamics of knowledge networks. In Seventh International AAAI Conference on Weblogs and Social Media.Google Scholar
- Aleksandar Prokopec, Andrea Rosà, David Leopoldseder, Gilles Duboscq, Petr Tuma, Martin Studener, Lubomír Bulej, Yudi Zheng, Alex Villazón, and Doug Simon. 2019. Renaissance: Benchmarking suite for parallel applications on the jvm. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation. 31–47.Google ScholarDigital Library
- Moinuddin K Qureshi, Vijayalakshmi Srinivasan, and Jude A Rivers. 2009. Scalable high performance main memory system using phase-change memory technology. In Proceedings of the 36th annual international symposium on Computer architecture. 24–33.Google ScholarDigital Library
- Amanda Raybuck, Tim Stamler, Wei Zhang, Mattan Erez, and Simon Peter. 2021. HeMem: Scalable Tiered Memory Management for Big Data Applications and Real NVM. In Proceedings of the ACM SIGOPS 28th Symposium on Operating Systems Principles. 392–407.Google ScholarDigital Library
- Thomas Shull, Jian Huang, and Josep Torrellas. 2019. AutoPersist: an easy-to-use Java NVM framework based on reachability. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation. 316–332.Google ScholarDigital Library
- Konstantin Taranov, Rodrigo Bruno, Gustavo Alonso, and Torsten Hoefler. 2021. Naos: Serialization-free $RDMA$ networking in Java. In 2021 $USENIX$ Annual Technical Conference ($USENIX$$ATC$ 21). 1–14.Google Scholar
- Chenxi Wang, Huimin Cui, Ting Cao, John Zigman, Haris Volos, Onur Mutlu, Fang Lv, Xiaobing Feng, and Guoqing Harry Xu. 2019. Panthera: holistic memory management for big data processing over hybrid memories. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation. 347–362.Google ScholarDigital Library
- Chenxi Wang, Haoran Ma, Shi Liu, Yuanqi Li, Zhenyuan Ruan, Khanh Nguyen, Michael D Bond, Ravi Netravali, Miryung Kim, and Guoqing Harry Xu. 2020. Semeru: A memory-disaggregated managed runtime. In 14th $USENIX$ Symposium on Operating Systems Design and Implementation ($OSDI$ 20). 261–280.Google Scholar
- Mingyu Wu, Haibo Chen, Hao Zhu, Binyu Zang, and Haibing Guan. 2020. GCPersist: an efficient GC-assisted lazy persistency framework for resilient Java applications on NVM. In Proceedings of the 16th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments. 1–14.Google ScholarDigital Library
- Mingyu Wu, Ziming Zhao, Haoyu Li, Heting Li, Haibo Chen, Binyu Zang, and Haibing Guan. 2018. Espresso: Brewing java for more non-volatility with non-volatile memory. In ACM SIGPLAN Notices. 53, 70–83.Google ScholarDigital Library
- Fei Xia, Dejun Jiang, Jin Xiong, and Ninghui Sun. 2017. HiKV: A Hybrid Index Key-Value Store for DRAM-NVM Memory Systems. In 2017 USENIX Annual Technical Conference (USENIX ATC 17). USENIX Association, Santa Clara, CA. 349–362. isbn:978-1-931971-38-6Google Scholar
- Hao Xu, Yanmin Zhu, Yuting Chen, Linpeng Huang, Tianyou Li, and Pan Deng. 2018. Jsnvm: supporting data persistence in javascript using non-volatile memory. In 2018 IEEE 24th International Conference on Parallel and Distributed Systems (ICPADS). 457–464.Google ScholarCross Ref
- Albert Mingkun Yang, Erik Österlund, Jesper Wilhelmsson, Hanna Nyblom, and Tobias Wrigstad. 2020. ThinGC: complete isolation with marginal overhead. In Proceedings of the 2020 ACM SIGPLAN International Symposium on Memory Management. 74–86.Google ScholarDigital Library
- Albert Mingkun Yang, Erik Österlund, and Tobias Wrigstad. 2020. Improving program locality in the GC using hotness. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation. 301–313.Google ScholarDigital Library
- Jian Yang, Juno Kim, Morteza Hoseinzadeh, Joseph Izraelevitz, and Steve Swanson. 2020. An empirical guide to the behavior and use of scalable persistent memory. In 18th $USENIX$ Conference on File and Storage Technologies ($FAST$ 20). 169–182.Google Scholar
- Yanfei Yang, Mingyu Wu, Haibo Chen, and Binyu Zang. 2021. Bridging the performance gap for copy-based garbage collectors atop non-volatile memory. In Proceedings of the Sixteenth European Conference on Computer Systems. 343–358.Google ScholarDigital Library
- Matei Zaharia, Mosharaf Chowdhury, Michael J Franklin, Scott Shenker, and Ion Stoica. 2010. Spark: cluster computing with working sets. In Proceedings of the 2nd USENIX conference on Hot topics in cloud computing. 10–10.Google Scholar
- Matei Zaharia, Reynold S Xin, Patrick Wendell, Tathagata Das, Michael Armbrust, Ankur Dave, Xiangrui Meng, Josh Rosen, Shivaram Venkataraman, and Michael J Franklin. 2016. Apache spark: a unified engine for big data processing. Commun. ACM, 59, 11 (2016), 56–65.Google ScholarDigital Library
Index Terms
Transparent and lightweight object placement for managed workloads atop hybrid memories
Recommendations
Bridging the performance gap for copy-based garbage collectors atop non-volatile memory
EuroSys '21: Proceedings of the Sixteenth European Conference on Computer SystemsNon-volatile memory (NVM) is expected to revolutionize the memory hierarchy with not only non-volatility but also large capacity and power efficiency. Memory-intensive applications, which are often written in managed languages like Java, would run atop ...
Write-rationing garbage collection for hybrid memories
PLDI 2018: Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and ImplementationEmerging Non-Volatile Memory (NVM) technologies offer high capacity and energy efficiency compared to DRAM, but suffer from limited write endurance and longer latencies. Prior work seeks the best of both technologies by combining DRAM and NVM in hybrid ...
Managing hybrid memories by predicting object write intensity
Programming '18: Companion Proceedings of the 2nd International Conference on the Art, Science, and Engineering of ProgrammingEmerging Non-Volatile Memory (NVM) technologies offer more capacity and energy efficiency than DRAM, but their write endurance is lower and latency is higher. Hybrid memories seek the best of both worlds — scalability, efficiency, and performance — by ...
Comments