Lock-Free Local Memory Pools for Multi-Processor Systems

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Traditional memory management schemes in computing systems either lead to over-provisioning or high memory contention among processes, as they either reserve fixed memory for each process or rely on a global memory pool, resulting in inefficient resource allocation and utilization.

Innovation Solution

Implementing a memory management system with a global memory pool and local memory pools for each processor, where memory is allocated and deallocated efficiently without locking, allowing processes to request memory locally and from a global pool as needed, with mechanisms to reclaim memory from idle processors to reduce contention and underutilization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a fixed amount of memory is reserved for each process, then memory allocation is simple and predictable, but memory over-provisioning occurs and other processes may exhaust memory

Engineering Contradiction:
Improvememory allocation predictabilityVSAvoidmemory utilization efficiency
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent divides the global memory pool into local memory pools for each processor. Each processor has its own local pool that it can access without locking, while the global pool remains shared. This segmentation allows processes to efficiently access memory locally without contention, while still enabling global memory sharing when needed, thus resolving the contradiction between allocation predictability and utilization efficiency.

Inventive Principle:
Principle #1Segmentation

2Quantity of substance

If a single global memory pool is used for all processes, then memory waste is minimized, but high contention occurs among processes for memory allocation

Engineering Contradiction:
Improvememory utilization efficiencyVSAvoidmemory allocation speed
Core Design Contradiction:
Quantity of substanceVSProductivity

Solution Approach 1:

The patent segments the global memory pool into processor-specific local pools. Each processor can allocate memory from its local pool without acquiring locks, eliminating contention. The global pool serves as a backup for when local pools are exhausted. This segmentation resolves the contradiction by enabling fast lock-free allocation locally while maintaining efficient global memory utilization.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements local memory pools with different access characteristics than the global pool. Local pools provide fast, lock-free access for their respective processors, while the global pool provides shared access with locking. This local quality differentiation resolves the contradiction between utilization efficiency and allocation speed by optimizing each pool's access pattern for its specific use case.

Inventive Principle:
Principle #3Local quality

3Productivity

If local memory pools are implemented for each processor, then lock contention is reduced for memory allocation, but system complexity increases

Engineering Contradiction:
Improvememory allocation speedVSAvoidmemory management structure
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent divides memory management into local and global components. Each processor manages its own local pool independently without locks, while a global pool handles overflow cases. This segmentation achieves fast local allocation while keeping the overall system manageable through clear separation of concerns, resolving the contradiction between allocation speed and system complexity.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS11494297B2Concurrent memory management in a computing system
Publication Date: 2022.11.08 VMWARE INC
  • US11494297B2 patent drawing
  • US11494297B2 patent drawing
  • US11494297B2 patent drawing

AI summary

An example method of memory management in a computing system having a plurality of processors includes: receiving a first memory allocation request at a memory manager from a process executing on a processor of the plurality of processors in the computing system; allocating a local memory pool for the processor from a global memory pool for the plurality of processors in response to the first memory allocation request; and allocating memory from the local memory pool for the processor in response to the first memory allocation request without locking the local memory pool.