Atomic Linked List Memory Allocation for Multi-Threaded Systems

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multi-threaded computing environments, conventional memory allocation methods lead to inefficiencies where threads may have to wait for memory access due to non-atomic operations, causing delays and potential 'out of memory' situations even when sufficient memory is available.

Innovation Solution

Implementing a linked list data structure with atomic operations for memory management, allowing simultaneous reading of pointer and size values, and using end-splitting of memory blocks to allocate memory efficiently among competing threads.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If conventional memory allocation methods are used in multi-threaded environments, then memory can be allocated to threads, but threads experience wait times and delays due to non-atomic operations

Engineering Contradiction:
Improvethread wait timeVSAvoidmemory allocation reliability
Core Design Contradiction:
Loss of timeVSReliability

Solution Approach 1:

The memory block is segmented into two parts: the original memory block and a newly allocated block. The segmentation is achieved by splitting the original block at a calculated offset position, allowing one thread to receive its required memory while the remaining portion stays available for other threads, thus eliminating wait times and improving allocation reliability

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The offset position is pre-calculated based on the required memory size before the actual memory allocation occurs. This preliminary calculation of the split position enables atomic operations to proceed efficiently without requiring threads to wait for complex allocation logic, resolving the contradiction between speed and reliability

Inventive Principle:
Principle #10Preliminary action

2Productivity

If a large memory block is allocated to satisfy one thread's request, then that thread's memory needs are met, but other threads may experience 'out of memory' situations even when total memory is sufficient

Engineering Contradiction:
Improvememory allocation efficiencyVSAvoidmemory availability for multiple threads
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

Instead of allocating an entire large memory block to a single thread, the system segments the block by creating a split at a calculated offset. The first thread receives memory up to the offset, while the remaining portion stays in the pool for other threads, thus improving both allocation efficiency and multi-thread adaptability

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The memory block is divided such that different portions serve different purposes: the allocated portion satisfies the first thread's specific memory needs, while the remaining portion remains available for other threads. This local differentiation of memory usage resolves the contradiction between productivity and adaptability

Inventive Principle:
Principle #3Local quality

3Productivity

If memory blocks are split to satisfy smaller requests, then memory is efficiently utilized, but the complexity of managing memory blocks increases

Engineering Contradiction:
Improvememory utilization efficiencyVSAvoidmemory management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The memory management system uses segmentation to divide large blocks into smaller allocatable units. By systematically splitting blocks at calculated offsets and maintaining them in a pool, the system achieves efficient memory utilization while managing complexity through structured block division rather than ad-hoc allocation

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The offset position is pre-calculated based on the required memory size before allocation occurs. This preliminary determination of split positions simplifies the management complexity by providing clear, predetermined division points, making the segmentation process more manageable while maintaining high utilization efficiency

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10908959B2Memory management in a multi-threaded computing environment
Publication Date: 2021.02.02 SAP SE
  • US10908959B2 patent drawing
  • US10908959B2 patent drawing
  • US10908959B2 patent drawing

AI summary

A computer-implemented method, system or product, the method comprising receiving, by a memory management system, a first memory request from a first thread in a multi-threaded computing environment, the memory request including a target value associated with a size of memory requested by the first thread; in response to receiving the first memory request, retrieving a header referencing a first node in a linked list data structure having a plurality of connected nodes, the header comprising a first pointer value, referring to a free first memory block, and a first size value associated with a size of the first memory block; reading, by way of an atomic operation, the first pointer value and the first size value from the linked list data structure.