Non-Uniform Memory Access (NUMA) Database Management System
First Claim
1. A computer implemented method, comprising:
- receiving a request to load data from a storage device into an in-memory database, wherein the in-memory database is distributed across a plurality of nodes, each node comprising a local memory;
determining, by at least one processor, an optimal one of the plurality of nodes onto which to load the data from the storage device based on a system state, wherein the system state indicates a concurrency of threads executing on the plurality of nodes;
determining whether the optimal node has sufficient free local memory in a free list to store the data, wherein if the optimal node does not have sufficient free list memory;
requesting an allocation of heap memory to be allocated to the optimal node,storing the data in the requested heap memory, andbinding the requested heap memory storing the data to the optimal node; and
providing, responsive to the request, an address of the allocated heap memory by which the data is accessed;
wherein at least one of the receiving, determining the optimal node, determining whether the optimal node has sufficient free memory, and providing are performed by one or more computers.
1 Assignment
0 Petitions
Accused Products
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.
-
Citations
18 Claims
-
1. A computer implemented method, comprising:
-
receiving a request to load data from a storage device into an in-memory database, wherein the in-memory database is distributed across a plurality of nodes, each node comprising a local memory; determining, by at least one processor, an optimal one of the plurality of nodes onto which to load the data from the storage device based on a system state, wherein the system state indicates a concurrency of threads executing on the plurality of nodes; determining whether the optimal node has sufficient free local memory in a free list to store the data, wherein if the optimal node does not have sufficient free list memory; requesting an allocation of heap memory to be allocated to the optimal node, storing the data in the requested heap memory, and binding the requested heap memory storing the data to the optimal node; and providing, responsive to the request, an address of the allocated heap memory by which the data is accessed; wherein at least one of the receiving, determining the optimal node, determining whether the optimal node has sufficient free memory, and providing are performed by one or more computers. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A system, comprising:
-
a memory; and at least one processor coupled to the memory and configured to; receive a request to load data from a storage device into an in-memory database, wherein the in-memory database is distributed across a plurality of nodes, each node comprising a local memory; determine, by at least one processor, an optimal one of the plurality of nodes onto which to load the data from the storage device based on a system state, wherein the system state a concurrency of threads executing on the plurality of nodes; determine whether the optimal node has sufficient free local memory in a free list to store the data, wherein if the optimal node does not have sufficient free list memory; request an allocation of heap memory to be allocated to the optimal node, store the data in the requested heap memory, and bind the requested heap memory storing the data to the optimal node; and provide, responsive to the request, an address of the allocated heap memory by which the data is accessed. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A tangible computer-readable device having instructions stored thereon that, when executed by at least one computing device, causes the at least one computing device to perform operations comprising:
-
receiving a request to load data from a disk into an in-memory database, wherein the in-memory database is distributed across a plurality of nodes, each node comprising a local memory; determining, by at least one processor, an optimal one of the plurality of nodes onto which to load the data from the disk based on a system state, wherein the system state a concurrency of threads executing on the plurality of nodes; determining whether the optimal node has sufficient free local memory to store the data, wherein if the optimal node does not have sufficient free local memory; requesting an allocation of heap memory to be allocated to the optimal node, storing the data in the requested heap memory, and binding the requested heap memory storing the data to the optimal node; and providing, responsive to the request, an address of the allocated heap memory by which the data is accessed.
-
Specification