Disaggregated Memory Pool Slice Assignment
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Data centers face inefficiencies due to resource stranding, where compute nodes are either idle or underutilized, leading to suboptimal resource allocation and high memory provisioning that exceeds actual usage, resulting in low total resource utilization.
Innovation Solution
A disaggregated memory pool is dynamically assigned to compute nodes in the form of slices, allowing flexible allocation and reallocation of memory resources, enabling efficient utilization and reducing waste through a request-based framework that manages memory allocation and deallocation without the need for hotplug protocols or additional hardware.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If memory is provisioned in advance for each compute node, then reliability is improved, but device complexity and resource waste increase
Solution Approach 1:
The memory pool is segmented into multiple slices that can be dynamically allocated to different compute nodes. Each slice represents a discrete unit of memory that can be independently managed, allowing the system to provide guaranteed memory availability while avoiding the complexity of pre-provisioning entire memory units to each node.
Solution Approach 2:
The memory allocation system transitions from static pre-provisioning to dynamic allocation. Memory slices can be assigned, unassigned, and reassigned based on actual computational needs, allowing the system to maintain reliability through on-demand allocation while reducing overall system complexity.
2Reliability
If memory is statically allocated to compute nodes, then reliability is improved, but adaptability deteriorates
Solution Approach 1:
The system implements dynamic memory slice allocation where memory assignments can be adjusted in real-time based on computational workload demands. This allows the system to maintain stable memory availability for active workloads while simultaneously adapting to changing requirements by reallocating slices to different compute nodes as needed.
Solution Approach 2:
The memory allocation system changes the parameter of memory assignment from fixed to variable. By controlling assignment and unassignment of memory slices based on computational needs, the system maintains reliability through controlled allocation while achieving adaptability through parameter adjustments in response to workload changes.
3Adaptability or versatility
If hotplug protocols are implemented for dynamic memory allocation, then adaptability is improved, but device complexity increases
Solution Approach 1:
The patent extracts the memory allocation control logic from complex hotplug protocols and implements a simplified assignment/unassignment mechanism. By removing the need for hotplug protocols entirely and using direct memory slice assignment to compute nodes, the system achieves the same adaptability with significantly reduced device complexity.
4Productivity
If memory slices are dynamically assigned and unassigned, then productivity is improved, but loss of time may increase during allocation operations
Solution Approach 1:
The system performs preliminary actions by pre-segmenting the memory pool into slices and maintaining an assignment table that tracks current allocations. This preparation allows rapid assignment and unassignment operations to proceed efficiently without requiring complex real-time negotiations or protocol handshakes, thus improving productivity while minimizing time loss.
Data Source
AI summary
Examples are disclosed that relate to a disaggregated memory pool. One example provides a memory system comprising a memory controller and memory attached to the memory controller and forming at least a portion of a disaggregated memory pool, the disaggregated memory pool including a plurality of slices that are each dynamically assigned to a respective compute node. The memory system is configured to receive a request to adjust an assignment of the memory pool to a requesting compute node, where the portion of the memory pool includes an unassigned slice that can satisfy the request, assign at least part of the unassigned portion to the requesting compute node, and where the portion of the memory pool does not include an unassigned slice that can satisfy the request, cause a request to be directed to another compute node to free at least one slice to the such compute node.


