Universal Cache Management for Dynamic Memory Allocation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In multi-tenancy deployments on Symmetric Multi-Processor (SMP) hosts, memory over-provisioning limits clustered scalability as administrators must shut down less busy database instances to reallocate memory to busy ones, leading to inefficiencies and reduced availability.
Innovation Solution
Implementing a universal cache management system where each data-processing instance has a private cache and a shared common cache in volatile memory, allowing clean data items to be evicted from private caches and stored in a common cache, enabling dynamic memory allocation without instance shutdowns and improving scalability.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Quantity of substance
If all available physical memory is configured among multiple database instances on an SMP host, then memory utilization is improved, but the ability to dynamically allocate memory to instances experiencing heavier workload deteriorates
Solution Approach 1:
The patent merges multiple private caches into a unified shared cache structure. Each database instance maintains a private cache for exclusive access, while also sharing a common cache among all instances. This combination allows memory to be dynamically allocated to instances with heavier workloads by utilizing the shared cache space, thereby resolving the contradiction between high memory utilization and dynamic adaptability.
Solution Approach 2:
The shared cache serves multiple functions: it acts as additional memory for instances experiencing heavy workloads, provides a pooling mechanism for memory reuse, and enables dynamic resource allocation across multiple database instances. This multi-functional design allows the same memory resource to serve different purposes for different instances, improving both utilization and adaptability.
2Quantity of substance
If administrators shut down less busy database instances to reallocate memory to busy ones, then memory over-provisioning is reduced, but system availability and productivity deteriorate
Solution Approach 1:
The system implements automatic memory management where the shared cache dynamically allocates memory to database instances based on their workload demands without requiring administrator intervention. The cache management system automatically identifies instances needing additional memory and allocates from the shared pool, eliminating the need to shut down instances for memory reallocation while maintaining high availability.
Solution Approach 2:
The patent introduces dynamic memory allocation through the shared cache structure. Memory allocation is no longer static but changes automatically based on real-time workload conditions. Instances can dynamically access additional memory from the shared cache when needed, and the system adapts to changing conditions without requiring administrative re-provisioning or instance shutdowns.
3Adaptability or versatility
If a shared cache is introduced to enable dynamic memory allocation, then adaptability and scalability are improved, but device complexity increases
Solution Approach 1:
The cache memory is segmented into private cache portions for each database instance and a shared cache portion accessible by all instances. This segmentation provides clear boundaries and ownership while enabling controlled sharing. The modular structure simplifies management by separating instance-specific data from shared resources, reducing the complexity burden of the shared cache implementation.
Data Source
AI summary
Techniques for universal cache management are described. In an example embodiment, a plurality of caches are allocated, in volatile memory of a computing device, to a plurality of data-processing instances, where each one of the plurality of caches is exclusively allocated to a separate one of the plurality of data-processing instances. A common cache is allocated in the volatile memory of the computing device, where the common cache is shared by the plurality of data-processing instances. Each instance of the plurality of data-processing instances is configured to: identify a data block in the particular cache allocated to that instance, where the data block has not been changed since the data block was last persistently written to one or more storage devices; cause the data block to be stored in the common cache; and remove the data block from the particular cache. Data blocks in the common cache are maintained without being persistently written to the one or more storage devices.


