Dynamic Memory Allocation for Big Data Aggregator Functions
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current systems inefficiently allocate memory when processing massive amounts of data, particularly in big data applications with high-cardinality dimensions, leading to significant memory waste due to the unpredictable memory requirements of aggregator functions following a power-law distribution.
Innovation Solution
A method of dynamically allocating memory to aggregator functions by initializing a minimum amount and growing based on a predefined growth factor, retaining old memory spaces until the job is complete, and managing memory externally or internally to optimize usage.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Device complexity
If fixed memory allocation is used for aggregator functions, then memory management is simple, but memory consumption increases significantly (up to 4095 times) compared to dynamic allocation
Solution Approach 1:
The patent applies dynamic memory allocation where aggregator functions start with a minimum memory size and automatically grow their memory capacity based on actual data processing needs. The memory growth follows a geometric progression with a predefined growth factor, allowing the system to adapt memory allocation to the power-law distribution of data frequencies, thereby reducing overall memory consumption while maintaining manageable complexity through automated management
Solution Approach 2:
The system changes the memory allocation parameter from a fixed value to a dynamic value that evolves during data processing. Memory allocation transitions from a static parameter to one that adjusts based on the aggregator's actual requirements, utilizing geometric growth to optimize the balance between memory usage and processing capability
2Quantity of substance
If dynamic memory allocation with geometric growth is used, then memory consumption is reduced (up to 4095 times), but memory management complexity increases
Solution Approach 1:
The aggregator functions perform self-service by automatically managing their own memory allocation and growth without external intervention. Each aggregator monitors its own memory needs and triggers geometric growth when capacity is insufficient, eliminating the need for centralized memory management complexity while achieving optimal memory consumption
Solution Approach 2:
The system implements dynamic memory management where allocation decisions are made autonomously by each aggregator based on its operational state, transforming memory management from a complex centralized control problem into simple local self-adjustment mechanisms
3Productivity
If memory is allocated for all possible aggregator functions upfront, then all functions are ready to process data, but memory waste increases due to unpredictable memory requirements following power-law distribution
Solution Approach 1:
The system performs preliminary action by pre-allocating only the minimum necessary memory for each aggregator function before data processing begins. This preliminary minimum allocation ensures all functions are ready to process data immediately, while the geometric growth mechanism activates only when actual data processing demands exceed the initial allocation, preventing memory waste on over-provisioning
4Device complexity
If geometric growth with constant factor is used, then memory allocation is simple and automated, but the system cannot handle cases where memory exceeds upper size bound
Solution Approach 1:
The system incorporates feedback mechanisms where aggregators monitor their memory usage against predefined upper size bounds and report status to the memory management system. When an aggregator approaches its memory limit, the feedback loop triggers either expansion of the upper bound (if resources are available) or termination of the aggregator (if resources are exhausted), ensuring reliable handling of memory bound conditions while maintaining allocation simplicity
Data Source
AI summary
The disclosed embodiments describe techniques for allocating memory to functions processing big data. In one embodiment, a method is disclosed comprising allocating a first memory space to a function, the memory space comprising an initial amount of memory for the function; declaring the first memory space as the current memory space; processing data using the function, the processing writing data to the current memory space; determining that the function requires additional memory space; allocating a new memory space based on the current memory space and a growth factor; copying all data in the current memory space to the new memory space; declaring the current memory space as the old memory space; declaring the new memory space as the current memory space; and not deallocating the old memory space.


