Tnvmalloc: A Thread-Level-Based Wear-Aware Allocator for Nonvolatile Main Memory

Author(s):  
Chunhua Xiao ◽  
Lin Zhang ◽  
Mingliang Zhou

The nonvolatile main memory (NVMM) has the advantages of near-DRAM speed, byte-addressability, and persistence, and presents limitations in write durability. The memory allocator, a fundamental data structure of memory management, can effectively mitigate the wear speed, thereby prolonging the NVMM lifetime. Nevertheless, balancing the performance and writing reliability in single and multi-thread scenarios is still an open problem for NVMM allocators. In this paper, we propose a thread-level wear-aware allocator (Tnvmalloc) that divides the NVMM space into multiple management granularities and then dynamically selects the optimal blocks using a wear-leveling strategy based on allocation requests and wear records. Experiments show that the proposed Tnvmalloc provides more than 10 times improvement in wear-leveling than typical allocators Glibc malloc, NVMalloc, and nvm_malloc, which becomes obvious especially in multi-threaded scenarios. Moreover, when allocating large memory blocks, Tnvmalloc achieves three times faster than that of NVMalloc.

2020 ◽  
Vol 10 (3) ◽  
pp. 999
Author(s):  
Hyokyung Bahn ◽  
Kyungwoon Cho

Recently, non-volatile memory (NVM) has advanced as a fast storage medium, and legacy memory subsystems optimized for DRAM (dynamic random access memory) and HDD (hard disk drive) hierarchies need to be revisited. In this article, we explore the memory subsystems that use NVM as an underlying storage device and discuss the challenges and implications of such systems. As storage performance becomes close to DRAM performance, existing memory configurations and I/O (input/output) mechanisms should be reassessed. This article explores the performance of systems with NVM based storage emulated by the RAMDisk under various configurations. Through our measurement study, we make the following findings. (1) We can decrease the main memory size without performance penalties when NVM storage is adopted instead of HDD. (2) For buffer caching to be effective, judicious management techniques like admission control are necessary. (3) Prefetching is not effective in NVM storage. (4) The effect of synchronous I/O and direct I/O in NVM storage is less significant than that in HDD storage. (5) Performance degradation due to the contention of multi-threads is less severe in NVM based storage than in HDD. Based on these observations, we discuss a new PC configuration consisting of small memory and fast storage in comparison with a traditional PC consisting of large memory and slow storage. We show that this new memory-storage configuration can be an alternative solution for ever-growing memory demands and the limited density of DRAM memory. We anticipate that our results will provide directions in system software development in the presence of ever-faster storage devices.


Mathematics ◽  
2021 ◽  
Vol 9 (12) ◽  
pp. 1447
Author(s):  
Jose P. Suárez ◽  
Agustín Trujillo ◽  
Tania Moreno

Showing whether the longest-edge (LE) bisection of tetrahedra meshes degenerates the stability condition or not is still an open problem. Some reasons, in part, are due to the cost for achieving the computation of similarity classes of millions of tetrahedra. We prove the existence of tetrahedra where the LE bisection introduces, at most, 37 similarity classes. This family of new tetrahedra was roughly pointed out by Adler in 1983. However, as far as we know, there has been no evidence confirming its existence. We also introduce a new data structure and algorithm for computing the number of similarity tetrahedral classes based on integer arithmetic, storing only the square of edges. The algorithm lets us perform compact and efficient high-level similarity class computations with a cost that is only dependent on the number of similarity classes.


Author(s):  
Subandijo Subandijo

This article contains a descriptive comparison of four features between C++ and Java. The first feature discusses about memory management that focuses on exception safety. The second compares the C++ destructor to Java finalizer. Third feature discusses about Java finally block. The forth is about C++ and Java implementation in order to access a data structure.


2021 ◽  
Vol 11 (18) ◽  
pp. 8476
Author(s):  
June Choi ◽  
Jaehyun Lee ◽  
Jik-Soo Kim ◽  
Jaehwan Lee

In this paper, we present several optimization strategies that can improve the overall performance of the distributed in-memory computing system, “Apache Spark”. Despite its distributed memory management capability for iterative jobs and intermediate data, Spark has a significant performance degradation problem when the available amount of main memory (DRAM, typically used for data caching) is limited. To address this problem, we leverage an SSD (solid-state drive) to supplement the lack of main memory bandwidth. Specifically, we present an effective optimization methodology for Apache Spark by collectively investigating the effects of changing the capacity fraction ratios of the shuffle and storage spaces in the “Spark JVM Heap Configuration” and applying different “RDD Caching Policies” (e.g., SSD-backed memory caching). Our extensive experimental results show that by utilizing the proposed optimization techniques, we can improve the overall performance by up to 42%.


2016 ◽  
Vol 2 (2) ◽  
pp. 129-142 ◽  
Author(s):  
Chen Pan ◽  
Shouzhen Gu ◽  
Mimi Xie ◽  
Yongpan Liu ◽  
Chun Jason Xue ◽  
...  

Sign in / Sign up

Export Citation Format

Share Document