Balanced Double Deques Eliminate Memory Fences in Garbage Collection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In multi-threaded environments, the overhead of memory fences required for managing interactions between threads' garbage collection deques can significantly burden computational efficiency, as threads wait for operations to finish before proceeding.

Innovation Solution

Implementing a system with multiple queues per garbage collection thread, including a public deque and private deques, where memory fences are not needed for access to private deques, and tasks are dynamically distributed between public and private queues to maintain load balance and reduce contention.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If memory fences are used to manage interactions between threads' garbage collection deques, then thread safety and correctness are ensured, but computational efficiency deteriorates due to significant overhead and waiting

Engineering Contradiction:
Improvethread safetyVSAvoidcomputational efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The deque is segmented into private deques (accessible without memory fences) and public deques (requiring memory fences only when full). This segmentation allows most operations to proceed without synchronization overhead while maintaining thread safety for shared resources.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Different parts of the deque structure have different access characteristics: private deques have local, fast access for the owning thread, while public deques have restricted access requiring synchronization. This local quality optimization reduces the frequency of memory fence operations.

Inventive Principle:
Principle #3Local quality

2Productivity

If threads steal work from other threads' deques, then load balance is improved, but contention increases requiring more memory fences

Engineering Contradiction:
Improveload balanceVSAvoidcontention management
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

By segmenting the deque into private and public portions, the system enables work stealing from public deques without requiring memory fences during the stealing process itself, reducing contention overhead while maintaining load balance.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system prepares for potential work stealing by maintaining public deques that are optimized for stealing operations. When a deque becomes full, it transitions to a state where it can be efficiently stolen from without requiring additional synchronization during the steal operation.

Inventive Principle:
Principle #10Preliminary action

3Device complexity

If a single deque is used per thread, then simplicity is maintained, but overhead from memory fences increases when the deque becomes full

Engineering Contradiction:
Improvequeue structureVSAvoidoperational overhead
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The queue structure is segmented into private deques for exclusive access and public deques for shared access. This segmentation allows the system to maintain simplicity for the majority of operations while optimizing the handling of full queue scenarios without requiring a complete redesign of the queue structure.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The deque structure dynamically transitions between private and public states based on capacity. When a private deque becomes full, it can be swapped with a public deque, allowing the system to adapt its structure based on operational needs rather than maintaining a fixed simple structure.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS10324836B2Balanced double deques for eliminating memory fences in garbage collection
Publication Date: 2019.06.18 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10324836B2 patent drawing
  • US10324836B2 patent drawing
  • US10324836B2 patent drawing

AI summary

Garbage collection methods include adding a data object to one of multiple queues owned by a first garbage collection thread. The queues include a public queue and multiple private queues. A task is popped from one of the plurality of queues to perform garbage collection. The public queue is swapped with one of the private plurality of private queues if there are no tasks in the public queue.