Abstract:
A system for memory allocation and deallocation with a multi-level memory map is provided. In some implementations, the system performs operations comprising allocating a memory map for addressing a plurality of memory locations in a heap, the memory map comprising a root node, one or more second-level nodes, and a plurality of third-level nodes. The plurality of third-level nodes can comprise third entries for pointing to the memory locations and/or the one or more second-level nodes can comprise a plurality of second entries corresponding to the plurality of third-level nodes. The operations can further include determining a location to store data within the heap and/or tracking the location by placing a pointer within a third-level node of the plurality of third-level nodes and incrementing a counter corresponding to the third-level node. Related systems, methods, and articles of manufacture are also described.
Abstract:
Disclosed herein are system, method, and computer program product embodiments for managing non-uniform memory access (NUMA) in a database management system. An embodiment operates by receiving a request to load data from a disk into an in-memory database. An optimal one of the plurality of nodes onto which to load the data from the disk based on a system state is determined. It is determined whether the optimal node has sufficient free local memory in a free list to store the data. If the optimal node does not have sufficient free list memory, a memory allocation is requested from an operating system. An address of the memory storing the data is provided.
Abstract:
Disclosed herein are system, method, and computer program product embodiments for managing non-uniform memory access (NUMA) in a database management system. An embodiment operates by receiving a request to load data from a disk into an in-memory database. An optimal one of the plurality of nodes onto which to load the data from the disk based on a system state is determined. It is determined whether the optimal node has sufficient free local memory in a free list to store the data. If the optimal node does not have sufficient free list memory, a memory allocation is requested from an operating system. An address of the memory storing the data is provided.
Abstract:
A computer-implemented method, system or product, the method comprising receiving, by a memory management system, a first memory request from a first thread in a multi-threaded computing environment, the memory request including a target value associated with a size of memory requested by the first thread; in response to receiving the first memory request, retrieving a header referencing a first node in a linked list data structure having a plurality of connected nodes, the header comprising a first pointer value, referring to a free first memory block, and a first size value associated with a size of the first memory block; reading, by way of an atomic operation, the first pointer value and the first size value from the linked list data structure.
Abstract:
A computer-implemented method, system or product, the method comprising receiving, by a memory management system, a first memory request from a first thread in a multi-threaded computing environment, the memory request including a target value associated with a size of memory requested by the first thread; in response to receiving the first memory request, retrieving a header referencing a first node in a linked list data structure having a plurality of connected nodes, the header comprising a first pointer value, referring to a free first memory block, and a first size value associated with a size of the first memory block; reading, by way of an atomic operation, the first pointer value and the first size value from the linked list data structure.
Abstract:
Resources are loaded into a resource container in an in-memory database system in which pages are loaded into memory and having associated physical disk storage. Each resource is assigned a new time stamp when such resource is loaded into the resource container. At least some of the references are subsequently accessed and time stamps associated with these accesses resources are selectively updated based on the type of access. These time stamps are later used to evict least recently used resources (as indicated by their time stamps) from the resource container.
Abstract:
A method for reclaiming memory resources may include segmenting a plurality of memory resources in an in-memory database into a first resource partition and a second resource partition; generating, for the first resource partition, a first heap containing a first plurality of memory resources sorted based on an age of data occupying the first plurality of memory resources; generating, for the second resource partition, a second heap containing a second plurality of memory resources sorted based on an age of data occupying the second plurality of memory resources; and when a shortage of memory resources is detected, identifying, from the first heap, a first memory resource containing a least recently used data, identifying, from the second heap, a second memory resource containing a least recently used data, and reclaiming the first memory resource and/or the second memory resource. Related systems and articles of manufacture are also disclosed.
Abstract:
Disclosed herein are system, method, and computer program product embodiments for defragmentation of persistent main memory (e.g., storage class memory). An embodiment operates by determining that a request to allocate a block of persistent main memory cannot be fulfilled, identifying the largest block of a plurality of free blocks associated with a persistent allocator, and punching a hole at the location of the block within a segment of the persistent main memory. The embodiment further operates by determining that at least one neighboring block of the largest block is also a hole, and coalescing the at least one neighboring block and the largest block.
Abstract:
Disclosed herein are system, method, and computer program product embodiments for defragmentation of persistent main memory (e.g., storage class memory). An embodiment operates by determining that a request to allocate a block of persistent main memory cannot be fulfilled, identifying the largest block of a plurality of free blocks associated with a persistent allocator, and punching a hole at the location of the block within a segment of the persistent main memory. The embodiment further operates by determining that at least one neighboring block of the largest block is also a hole, and coalescing the at least one neighboring block and the largest block.
Abstract:
A system includes a non-volatile random access memory storing a column store main fragment of a column of a database table, and a processing unit to read the column store main fragment from the non-volatile random access memory. A volatile random access memory storing a column store delta fragment of the column of the database table may also be included, in which the processing unit is to write to the column store delta fragment. According to some systems, the stored column store main fragment is byte-addressable, and is copied from the volatile random access memory to the non-volatile random access memory without using a filesystem cache.