Per-Processor Memory Allocators with Local Freed Lists

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In computer systems with multiple processing resources, managing memory locality and synchronization overhead in memory allocation processes is challenging due to the need for concurrent execution across different processing resources, leading to inefficiencies and increased complexity.

Innovation Solution

Implementing a memory allocator for each processor resource with locally and remotely freed lists, where objects are allocated and freed to optimize memory locality and reduce synchronization overhead by prioritizing local allocations and using atomic swaps for remote allocations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If synchronization mechanisms are used to manage memory allocations across multiple processing resources, then memory allocation safety is ensured, but allocator overhead increases significantly

Engineering Contradiction:
Improvememory allocation safetyVSAvoidallocator overhead
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system divides memory management into separate memory allocators, each dedicated to a specific processing resource. Each allocator maintains its own freed list that is exclusively accessible by its corresponding processing resource, eliminating the need for synchronization mechanisms while ensuring memory allocation safety across multiple processing resources.

Inventive Principle:
Principle #1Segmentation

2Productivity

If memory is allocated from remote allocators across processing resources, then memory utilization is improved, but memory locality deteriorates

Engineering Contradiction:
Improvememory utilizationVSAvoidmemory access speed
Core Design Contradiction:
ProductivityVSSpeed

Solution Approach 1:

Each processing resource is pre-configured with its own dedicated memory allocator and freed list. When memory becomes available, it is allocated to the local allocator in advance, allowing the processing resource to access memory locally without needing to request from remote allocators, thus maintaining both high memory utilization and fast access speeds.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If multiple memory allocators are used to support concurrent execution, then concurrency capability is improved, but system complexity increases

Engineering Contradiction:
Improveconcurrency capabilityVSAvoidsystem complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The system implements one memory allocator per processing resource, with each allocator completely independent and maintaining its own freed list. This segmentation allows each processing resource to operate concurrently without interfering with others, providing high concurrency capability while keeping each individual allocator simple and manageable.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS8291426B2Memory allocators corresponding to processor resources
Publication Date: 2012.10.16 MICROSOFT TECHNOLOGY LICENSING LLC
  • US8291426B2 patent drawing
  • US8291426B2 patent drawing
  • US8291426B2 patent drawing

AI summary

A memory allocator is provided for each processor resource in a process of a computer system. Each memory allocator includes a set of pages, a locally freed list of objects, and a remotely freed list of objects. Each memory allocator requests the pages from an operating system and allocates objects to all execution contexts executing on a corresponding processing resource. Each memory allocator attempts to allocate an object from the locally freed list before allocating an object from the remotely freed list or an allocated page.