Memory allocation constructs to complement NUMA memory management

Author(s):  
R.L. Adema ◽  
C. Schlatter Ellis
2020 ◽  
Vol 14 (3) ◽  
pp. 241-254
Author(s):  
Chen Luo ◽  
Michael J. Carey

Log-Structured Merge-trees (LSM-trees) have been widely used in modern NoSQL systems. Due to their out-of-place update design, LSM-trees have introduced memory walls among the memory components of multiple LSM-trees and between the write memory and the buffer cache. Optimal memory allocation among these regions is non-trivial because it is highly workload-dependent. Existing LSM-tree implementations instead adopt static memory allocation schemes due to their simplicity and robustness, sacrificing performance. In this paper, we attempt to break down these memory walls in LSM-based storage systems. We first present a memory management architecture that enables adaptive memory management. We then present a partitioned memory component structure with new flush policies to better exploit the write memory to minimize the write cost. To break down the memory wall between the write memory and the buffer cache, we further introduce a memory tuner that tunes the memory allocation between these two regions. We have conducted extensive experiments in the context of Apache AsterixDB using the YCSB and TPC-C benchmarks and we present the results here.


Author(s):  
Da-Wei Chang ◽  
Ing-Chao Lin ◽  
Yu-Shiang Chien ◽  
Chin-Lun Lin ◽  
Alvin W.-Y Su ◽  
...  

1992 ◽  
Vol 02 (04) ◽  
pp. 391-398 ◽  
Author(s):  
THEODORE JOHNSON ◽  
TIMOTHY A. DAVIS

Shared memory multiprocessor systems need efficient dynamic storage allocators, both for system purposes and to support parallel programs. Memory managers are often based on the buddy system, which provides fast allocation and release. Previous parallel buddy memory managers made no attempt to coordinate the allocation, splitting and release of blocks, and as a result needlessly fragment memory. We present a fast and simple parallel buddy memory manager that is also as space efficient as a serial buddy memory manager. We test our algorithms using memory allocation/deallocation traces collected from a parallel sparse matrix algorithm.


Author(s):  
Yuqian Guan ◽  
Jian Guo

Embedded applications are becoming more complex and are required to utilize computing platform resources more efficiently. Existing dynamic memory allocation (DSA) schemes cannot adaptively perform memory management according to the environment in which they are located or integrate various memory allocation strategies, making it impossible to guarantee a constant execution time. Efficient memory utilization is a crucial challenge for developers, especially in embedded OSs (operating systems). In this paper, we propose an adaptive layered segregated fit (ALSF) scheme for DSA. The ALSF scheme combines dynamic two-dimensional arrays and bitmaps, completes the allocation and freeing of memory blocks within constant execution time, and uses memory splitting technology to reduce internal fragmentation. The proposed scheme also adjusts the number of segregated lists by analyzing the system’s allocation of different memory sizes, which improves the matching accuracy of memory blocks. We conducted a comparative experimental analysis and investigation of the ALSF and two-level segregated fit (TLSF) schemes in the Zephyr OS. Experiments show that the average memory utilization of the proposed ALSF scheme reaches 94.95%. Compared with the TLSF scheme, our scheme has a 12.99% higher allocation success rate in the memory-scarce environment, and the execution speeds of the two are similar.


2013 ◽  
Vol 423-426 ◽  
pp. 2746-2750
Author(s):  
Zhao Fei Meng ◽  
Shu Dong Zhang

Buddy algorithm is one of the classical algorithms for Linux Memory Management. In buddy algorithm, free memory blocks, even if they have the same size and consecutive address, they cant be combined into a larger memory space because they dont have a partnership. For these shortcomings of the algorithm, this paper proposes an improved buddy algorithm which mainly include in the main data structure adding an array and a variable respectively to record the starting address and the number of two adjacent free memory blocks which are in the linked list of last order and do not meet the partnership, at the same time, improving memory allocation management and memory recovery management.By experiment, when the memory space is insufficient and memory allocation request is frequent, the improved algorithm can effectively reduce the number of failed memory requests and improve the memory utilization.


Author(s):  
Kush Bubbar ◽  
Yang Shi

Pointers have long been the Achilles heel of mechanical engineering students attempting to master dynamic memory allocation in mechatronic applications. They are abstract and intangible, both opposing characteristics of a discipline based on the concrete (and often hands on) physical world. With this said, pointers are considered an important threshold concept opening the door to the implementation of complex microcontroller applications in our digitally connected world.One of the primary challenges in learning the application of pointers is that the programming syntax and the abstract memory management concepts are often taught simultaneously. The natural progression of learning is to first comprehend the concepts followed by the syntax. Further newer learning theories suggest a conceptual understanding can only result through abstraction of experiences using metaphorical linkages.The following research body is focused on proposing a new strategy for teaching this complex concept using low cost physical props as a palpable interactive visual medium to provide the requisite experiences for concept abstraction. The learning aids are designed to enforce a strict process flow mimicking the invisible actions occurring internal to the microprocessor. Data is collected via questionnaires administered pre and post lecture delivery. Analysis of the results suggest moderate to high improvement in student comprehension of computer memory allocation concepts


Author(s):  
Joseph F. Boudreau ◽  
Eric S. Swanson

While there is no such thing as a “typical” C++ class, several common syntactical constructs lend themselves to extremely widespread use and must be mastered by C++ programmers. To motivate the discussion of software design at the level of the C++ class, examples from computer science and optics are introduced. Important syntactical elements such as constructors, destructors, copy constructors, assignment operators, cast operators, and const qualifiers, together with function overloading, operator overloading, and dynamic memory allocation are discussed. These concepts, illustrated with examples from physics, are presented and explained. Further examples from optical and quantum mechanical problems are left to the exercises. This chapter and its exercises gives the reader sufficient information to begin developing his or her own classes and to experiment with class design through trial and error.


Sign in / Sign up

Export Citation Format

Share Document