FastBuffer Memory Pool for Real-Time Middleware Latency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Real-time data distribution systems face challenges with unpredictable and resource-intensive memory operations, such as dynamic memory allocation, which can affect timeliness and lead to memory fragmentation, deterring real-time operation.

Innovation Solution

Implementing a FastBuffer scheme that allocates large blocks of memory and manages it through a pool of fixed-size buffers, allowing threads to borrow and return buffers predictably, thereby avoiding operating system involvement in memory allocation and deallocation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If dynamic memory allocation is used in real-time data distribution systems, then memory can be allocated flexibly, but memory operations become unpredictable and resource-intensive, affecting timeliness and causing memory fragmentation

Engineering Contradiction:
Improvememory allocation flexibilityVSAvoidmemory operation predictability
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The system pre-allocates a pool of fixed-size buffers during initialization rather than allocating memory dynamically during runtime operations. This preliminary action ensures that memory is ready for immediate use without triggering unpredictable allocation operations during critical real-time data distribution tasks.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The memory pool is segmented into multiple fixed-size buffers of uniform dimension. This segmentation allows the system to manage memory as discrete, predictable units that can be allocated and returned efficiently, avoiding the fragmentation and unpredictability associated with variable-sized dynamic allocations.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If dynamic memory allocation is used, then memory can be allocated as needed, but memory operations become resource-intensive and affect real-time performance

Engineering Contradiction:
Improvememory allocation flexibilityVSAvoidreal-time data delivery speed
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The memory pool is pre-allocated during system initialization, establishing a ready-to-use buffer pool before any real-time data distribution operations begin. This eliminates the need for expensive dynamic allocation operations during critical real-time processing, thereby improving productivity and data delivery speed.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system implements self-service memory management through a simplified borrow-and-return mechanism. Threads borrow buffers from the pre-allocated pool and return them when finished, eliminating the need for complex dynamic allocation/deallocation operations and reducing CPU resource consumption during real-time operations.

Inventive Principle:
Principle #25Self-service

3Reliability

If fixed block size memory units are used from a pool, then memory management becomes predictable and efficient, but the system must manage buffer lending and returning mechanisms

Engineering Contradiction:
Improvememory management predictabilityVSAvoidbuffer management mechanism
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The memory pool is divided into homogeneous fixed-size buffer segments, simplifying management compared to variable-sized allocations. The uniform size of all buffers in the pool enables straightforward tracking and return operations, reducing the complexity of the buffer management mechanism while maintaining predictability.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a buffer pool as an intermediary layer between the operating system and application threads. This intermediary manages memory allocation centrally, providing a simplified borrow-and-return interface that reduces the complexity of individual thread memory management while ensuring predictable and reliable memory access.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS7783853B1Memory usage techniques in middleware of a real-time data distribution system
Publication Date: 2010.08.24 REAL TIME INNOVATIONS
  • US7783853B1 patent drawing
  • US7783853B1 patent drawing
  • US7783853B1 patent drawing

AI summary

A method of operating real-time middleware associated with at least one node of a data distribution system is provided. At least one pool of a plurality of fixed block size units of memory of the node is allocated (e.g., via an operating system call). Based on loan requests for dynamic memory elements on behalf of a user application executing on the node, an indication of at least one of the allocated fixed block size units to be lent is provided. A list of which allocated fixed block size units are being lent from the pool is maintained, including maintaining the list based on return requests, on behalf of the user application executing on the node, of fixed block size units of the pool. Substantially all of the dynamic memory elements of the real-time middleware associated with the node are provided from the at least one pool of allocated fixed block size units based on the loan requests on behalf of the user application.