Abstract
In-memory computing has been widely used to process data quickly in memory, but it is no longer able to cope with the current data explosion. This has occurred because modern computers have structural constraints in terms of both memory capacity and bandwidth, fundamentally limiting the amount of data that can be processed in memory. In order to overcome these limitations, the memory-centric computing concept was proposed, and as an attempt to make this concept feasible, nonvolatile memory, next-generation interconnects, and memory-centric operating system technologies are being actively studied. Although, however, there have been many studies of these concepts, the essential problem of both efficiently and safely using the extremely large memory space has not been completely solved. This paper proposes what is termed Global-Heap which solves the above essential problem, thus supporting the core technology of memory-centric computing. In this technology, a heap-level abstraction which can be switched very lightly between processes is provided in an application-friendly manner as a global resource. Global-Heap also provides an effective means by which safely to use this vast address space based on Intel memory protection keys. We implemented Global-Heap on Linux and developed three useful use cases applicable to data-centric applications. Our primary evaluation shows that Global-Heap enables reorganization-free hashing. In addition, Global-Heap can improve the performance of an in-memory key-value store, Redis, by at least 7.56 times, and it can reduce the running time of graph applications executed in a pipeline approach by at least 48%.
Similar content being viewed by others
Notes
Redis-benchmark is a standalone process for measuring performance, which is included in the open-source Redis. Set/get commands are executed 100,000 times and the performance of those commands is measured in units of OPS.
References
K. Keeton, "Memory-Driven Computing," In: Keynote of the 15th USENEX Conference on File and Storage Technologies (FAST '17)
Intel (2019) The Challenge of Keeping Up with Data. https://www.intel.com/content/www/us/en/products/docs/memory-storage/optane-persistent-memory/optane-dc-persistent-memory-brief.html. Accessed Oct 2020
Gen-Z (2016) The Gen-Z Consortium. https://genzconsortium.org. Accessed Sept 2020
Gen-Z (2020) Gen-Z Core Specification 1.1. https://genzconsortium.org/specification/gen-z-core-specification-1-1. Accessed Sept 2020
CCIX (2016) CCIX. https://www.ccixconsortium.com. Accessed Oct 2020
OpenCAPI (2016) OpenCAPI. https://opencapi.org. Accessed Oct 2020
CXL (2019) CXL. https://www.computeexpresslink.org. Accessed Oct 2020
Izzat EH, Alexander M, Gerd Z, Dejan M, Reto A, Paolo F, Wen-mei H, Timothy R, Karsten S (2016) SpaceJMP: programming with multiple virtual address spaces. In: Proceedings of the Twenty-First International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS'16), pp. 353–368
Alexander M. Merritt (2017) Efficient Programming of Massive-memory Machines. Doctoral dissertation, Georgia Institute of Technology
Till S (2017) MVAS Source Code. https://github.com/l3nkz/linux/tree/mvas. Accessed Jan 2019
Joel C, Adrian MC, Ameen A, Laura MG, Rajesh KG, Ranjit J, Steven S (2011) NV-Heaps: making persistent objects fast and safe with next-generation, non-volatile memories. In: Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating (ASPLOS'11), pp. 105–118
Haris V, Andres JT, Michael MS (2011) Mnemosyne: lightweight persistent memory. In: Proceedings of the Sixteenth International Conference on Architectural Support for Programming Languages and Operating (ASPLOS'11), pp. 91–104
Yizhou S, Shin-Yeh T, Yiying Z (2017) Distributed shared persistent memory. In: Proceedings of the ACM Symposium on Cloud Computing 2017 (SoCC'17), pp. 323–337
Jonathan C (2015) Memory Protection Keys. https://lwn.net/Articles/643797. Accessed Mar 2020
Intel (2019) Intel® 64 and IA-32 Architectures software developer’s manual. https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd. pdf. Accessed Mar 2020
James L, Anjo VO, Eslam E, Deepak G, Bobby B. Peter D (2016) Light-weight contexts: an OS abstraction for safety and performance. In: Proceedings of the 12th USENIX Symposium on Operating Systems Design and Implementation (OSDI'16), pp.49–64
Andrea B, Petr M, Mark H, Brad K (2008) Wedge: splitting applications into reduced-privilege compartments. In: Proceedings of the 5th USENIX Symposium on Networked Systems Design and Implementation (NSDI'08), pp. 309–322
Robert W, Steven L, Thomas E.A, Susan L.G (1993) Efficient software-based fault isolation. In: Proceedings of the fourteenth ACM symposium on Operating systems principles (SOSP'93), pp. 203–216
Intel (2013) Introduction to intel® memory protection extensions. https://software.intel.com/content/www/us/en/develop/articles/introduction-to-intel-memory-protection-extensions.html. Accessed July 2020
Soyeon P, Sangho L, Wen X, Hyungon M, Taesoo K (2019) Libmpk: software abstraction for intel memory protection keys (Intel MPK). In: Proceedings of the 2019 USENIX Annual Technical Conference (ATC'19), pp. 241–254
Anjo V-O, Eslam E, Nuno O.D, Michael S, Peter D, Deepak G (2019) ERIM: secure, efficient in-process isolation with protection keys (MPK). In: Proceedings of the 28th USENIX Security Symposium (SEC'19), pp. 1221–1238
Koen K, Xi C, Herbert B, Cristiano G, Elias A (2017) No need to hide: protecting safe regions on commodity hardware. In: Proceedings of the Twelfth European Conference on Computer Systems (EuroSys'17), pp. 437–452
Taeho H, Jaemin J, Youjip W (2014) HEAPO: heap-based persistent object store. ACM Trans Storage. https://doi.org/10.1145/2629619
Intel (2014) Persistent memory programming. https://pmem.io. Accessed June 2020
Michael K (2020) mmap(2) – Linux manual page. https://man7.org/linux/man-pages/man2/mmap.2.html. Accessed Sept 2020
Weiwei W, Wanyuan W, Xiaolin F, Junzhou L, Athanasios V (2019) Electricity price-aware consolidation algorithms for time-sensitive VM services in cloud systems. IEEE Trans Serv Comput. https://doi.org/10.1109/TSC.2019.2894742
Jianbing N, Kuan Z, Athanasios V (2020) Security and privacy for mobile edge caching: challenges and solutions. IEEE Wireless Commun. https://doi.org/10.1109/MWC.001.2000329
Doug L (2000) A memory allocator. http://gee.cs.oswego.edu/dl/html/malloc.html. Accessed Mar 2020
Jonathan C (2016) Memory protection keys. https://lwn.net/Articles/689395. Accessed Mar 2020
Redis (2020) Redis source code. https://download.redis.io/releases/redis-5.0.9.tar.gz?_ga=2.260655629.1067659170.1603094582-547064067.1603094582. Accessed Apr 2020
David A.B, E.Jason R, Kamesh M, Pushkar RP (2013) SNAP: Large-scale graph analysis. https://sourceforge.net/projects/snap-graph. Accessed July 2020
David A.B, Kamesh M (2006) GTgraph: a suite of synthetic random graph generators. http://www.cse.psu.edu/~kxm85/software/GTgraph. Accessed July 2020
Acknowledgements
This work was supported by Institute of Information & communications Technology Planning & Evaluation (IITP) grant funded by the Korea government(MSIT) (No. 2018-0-00503, Researches on next generation memory-centric computing system architecture).
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.
Rights and permissions
About this article
Cite this article
Cha, MH., Lee, SM., An, BS. et al. Fast and secure Global-Heap for memory-centric computing. J Supercomput 77, 13262–13291 (2021). https://doi.org/10.1007/s11227-021-03806-4
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11227-021-03806-4