Multi-tenant memory service for memory pool architectures
Abstract
A memory management service occupies a configurable portion of an overall memory system in a disaggregate compute environment. The service provides optimized data organization capabilities over the pool of real memory accessible to the system. The service enables various types of data stores to be implemented in hardware, including at a data structure level. Storage capacity conservation is enabled through the creation and management of high-performance, re-usable data structure implementations across the memory pool, and then using analytics (e.g., multi-tenant similarity and duplicate detection) to determine when data organizations should be used. The service also may re-align memory to different data structures that may be more efficient given data usage and distribution patterns. The service also advantageously manages automated backups efficiently.
Claims
exact text as granted — not AI-modifiedThe invention claimed is:
1. A method of managing memory in a multi-tenant compute environment, comprising
providing a memory resource pool;
for a given workload, allocating memory resources from the memory resource pool to a set of processors;
organizing data for the given workload in the allocated memory resources according to a data structure; and
determining whether re-organization of the data in the data structure for the given workload would increase performance of the data structure or conserve memory used by the data structure; and
upon a determination that re-organization would increase performance or conserve memory, taking a given action to manage the data, wherein the given action detects data similarity or duplicates and, in response thereto, eliminates given data from the allocated memory resources;
wherein data similarity or duplicates are detected by:
identifying data blocks that are common to multiple tenants or multiple processes;
upon identifying common data blocks, determining whether the common data blocks are stable according to a configurable threshold;
upon a determination that the common data blocks are stable, eliminating duplicate common data blocks;
associating an instance of the common data blocks as a shared common data block; and
providing the multiple tenants or multiple processes a pointer to the shared common data block.
2. The method as described in claim 1 , further including:
determining that a value for a shared common data block has changed for a first tenant;
determining whether it is computationally less expensive to store a delta value for the shared common data block for the first tenant; and
upon a determination that it is computationally less expensive, storing the delta value for the shared common data block for the first tenant.
3. The method as described in claim 2 , further comprising:
determining whether it is computationally less expensive to store a new value for the shared common data block for the first tenant; and
upon a determination that it is computationally less expensive to store a new value, storing the new value for the shared common data block for the first the tenant.
4. The method as described in claim 1 , wherein the given action to manage the data comprises:
monitoring data distribution or usage patterns of the data; and
based on the monitoring, applying an optimization to adjust the data structure.
5. The method as described in claim 1 , further including:
profiling a data set to produce a data set schema;
periodically backing up the data set without using a processor; and
flushing cached data to main memory prior to a backup operation.
6. The method as described in claim 1 wherein the data structure organizes the data based on an access requirement of the given workload.
7. An apparatus of managing memory in a multi-tenant compute environment, comprising:
one or more hardware processors;
computer memory holding computer program instructions executed by the hardware processors and operative to:
organize a memory resource pool;
for a given workload, allocate memory resources from the memory resource pool to a set of processors;
organize data for the given workload in the allocated memory resources according to a data structure; and
determine whether re-organization of the data in the data structure for the given workload would increase performance of the data structure or conserve memory used by the data structure; and
upon a determination that re-organization would increase performance or conserve memory, take a given action to manage the data, wherein the given action detects data similarity or duplicates and, in response thereto, eliminates given data from the allocated memory resources;
wherein data similarity or duplicates are detected by:
identifying data blocks that are common to multiple tenants or multiple processes;
upon identifying common data blocks, determining whether the common data blocks are stable according to a configurable threshold;
upon a determination that the common data blocks are stable, eliminating duplicate common data blocks;
associating an instance of the common data blocks as a shared common data block; and
providing the multiple tenants or multiple processes a pointer to the shared common data block.
8. The apparatus as described in claim 7 , wherein the computer program instructions are further operative to:
determine that a value for a shared common data block has changed for a first tenant;
determine whether it is computationally less expensive to store a delta value for the shared common data block for the first tenant; and
upon a determination that it is computationally less expensive, store the delta value for the shared common data block for the first tenant.
9. The apparatus as described in claim 8 , wherein the computer program instructions are further operative to:
determine whether it is computationally less expensive to store a new value for the shared common data block for the first tenant; and
upon a determination that it is computationally less expensive to store a new value, store the new value for the shared common data block for the first the tenant.
10. The apparatus as described in claim 7 , wherein the given action to manage the data comprises:
monitoring data distribution or usage patterns of the data; and
based on the monitoring, applying an optimization to adjust the data structure.
11. The apparatus as described in claim 7 , wherein the computer program instructions are further operative to:
profile a data set to produce a data set schema;
periodically back-up the data set without using a processor; and
flush cached data to main memory prior to a backup operation.
12. The apparatus as described in claim 7 wherein the data structure organizes the data based on an access requirement of the given workload.
13. A computer program product in a non-transitory computer readable medium for use in a data processing system to manage memory in a multi-tenant compute environment, the computer program product holding computer program instructions executed in the data processing system and operative to:
organize a memory resource pool;
for a given workload, allocate memory resources from the memory resource pool to a set of processors;
organize data for the given workload in the allocated memory resources according to a data structure; and
determine whether re-organization of the data in the data structure for the given workload would increase performance of the data structure or conserve memory used by the data structure; and
upon a determination that re-organization would increase performance or conserve memory, take a given action to manage the data, wherein the given action detects data similarity or duplicates and, in response thereto, eliminates given data from the allocated memory resources;
wherein data similarity or duplicates are detected by:
identifying data blocks that are common to multiple tenants or multiple processes;
upon identifying common data blocks, determining whether the common data blocks are stable according to a configurable threshold;
upon a determination that the common data blocks are stable, eliminating duplicate common data blocks;
associating an instance of the common data blocks as a shared common data block; and
providing the multiple tenants or multiple processes a pointer to the shared common data block.
14. The computer program product as described in claim 13 , wherein the computer program instructions are further operative to:
determine that a value for a shared common data block has changed for a first tenant;
determine whether it is computationally less expensive to store a delta value for the shared common data block for the first tenant; and
upon a determination that it is computationally less expensive, store the delta value for the shared common data block for the first tenant.
15. The computer program product as described in claim 14 , wherein the computer program instructions are further operative to:
determine whether it is computationally less expensive to store a new value for the shared common data block for the first tenant; and
upon a determination that it is computationally less expensive to store a new value, store the new value for the shared common data block for the first the tenant.
16. The computer program product as described in claim 13 , wherein the given action to manage the data comprises:
monitoring data distribution or usage patterns of the data; and
based on the monitoring, applying an optimization to adjust the data structure.
17. The computer program product as described in claim 13 , wherein the computer program instructions are further operative to:
profile a data set to produce a data set schema;
periodically back-up the data set without using a processor; and
flush cached data to main memory prior to a backup operation.
18. The computer program product as described in claim 13 wherein the data structure organizes the data based on an access requirement of the given workload.
19. A data center facility, comprising:
a memory pool;
an optical interconnect; and
a memory manager executing in a hardware element and operative to manage allocation of memory resources from the memory resource pool to a set of processors for multiple tenant workloads, to organize data for a given tenant workload according to a data structure, and to selectively re-organize the data in the data structure to increase performance of the data structure or reduce memory required to service the given tenant workload by taking a given action to manage the data, wherein the given action detects data similarity or duplicates and, in response thereto, eliminates given data from allocated memory resources, wherein data similarity or duplicates are detected by:
identifying data blocks that are common to multiple tenants or multiple processes;
upon identifying common data blocks, determining whether the common data blocks are stable according to a configurable threshold;
upon a determination that the common data blocks are stable, eliminating duplicate common data blocks;
associating an instance of the common data blocks as a shared common data block; and
providing the multiple tenants or multiple processes a pointer to the shared common data block.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.