Parallel Marking Garbage Collector Global Bitmap Contention

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional parallel marking garbage collectors using external bitmaps face issues such as duplicate work, contention for shared cache lines, and increased instruction costs due to the need for atomic updates, leading to delays and inefficiencies in memory reclamation.

Innovation Solution

A unified external global bitmap is used, with each collector thread maintaining a private mark-cache to aggregate marks before updating the global bitmap, reducing the frequency of global bitmap updates and employing non-atomic operations for mark-cache updates and atomic operations for global bitmap updates to minimize contention and overhead.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If multiple collector threads update the global bitmap directly and frequently, then marking accuracy is improved, but contention for shared cache lines increases and performance deteriorates

Engineering Contradiction:
Improvemarking accuracyVSAvoidcollection performance
Core Design Contradiction:
Measurement precisionVSProductivity

Solution Approach 1:

The patent divides the single global bitmap into multiple per-thread bitmaps, allowing each collector thread to update its own bitmap independently without contention. The per-thread bitmaps are later merged into the global bitmap, resolving the contradiction between marking accuracy and performance by eliminating cache line contention during the frequent marking operations.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces per-thread bitmaps as intermediary structures between the collector threads and the global bitmap. Threads update their local bitmaps frequently with full accuracy, then periodically merge these intermediaries into the global bitmap, thus maintaining marking accuracy while reducing contention on the shared global structure.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If atomic operations are used for all bitmap updates to ensure thread safety, then reliability is improved, but instruction cost increases and efficiency decreases

Engineering Contradiction:
Improvethread safetyVSAvoidmarking efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent segments the bitmap update operations so that per-thread bitmap updates can be performed with simple non-atomic instructions, while only the final merge operation requires atomicity. This segmentation allows most marking operations to proceed efficiently without atomic overhead, while still ensuring reliability when threads interact with the shared global bitmap.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies atomic operations partially - only when necessary for thread safety during the merge phase - rather than excessively applying them to every bitmap update. This selective use of atomic operations maintains reliability for critical shared access while avoiding the performance penalty of atomic instructions for all marking operations.

Inventive Principle:
Principle #16Partial or excessive action

3Quantity of substance

If a single global bitmap is used by all threads, then memory usage is reduced, but cache locality deteriorates and contention increases

Engineering Contradiction:
Improvememory usageVSAvoidaccess speed
Core Design Contradiction:
Quantity of substanceVSSpeed

Solution Approach 1:

The patent segments the monolithic global bitmap into multiple smaller per-thread bitmaps, allowing each thread to work with a local copy that fits better in cache. This segmentation improves cache locality and access speed for frequent marking operations, while the total memory usage remains comparable to a single global bitmap since the per-thread structures are eventually merged.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent gives each thread its own local bitmap with optimal cache characteristics for that thread's marking pattern. This local quality allows each thread to access its bitmap with excellent cache locality, improving speed, while the overall memory consumption is managed by merging these local structures into the global bitmap periodically.

Inventive Principle:
Principle #3Local quality

4Productivity

If per-thread bitmaps are used to reduce contention, then performance is improved, but memory usage increases

Engineering Contradiction:
Improvecollection performanceVSAvoidmemory usage
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent uses periodic merging of per-thread bitmaps into the global bitmap. Between merges, threads operate on their lightweight local bitmaps with excellent performance. The periodic merge operation consolidates memory usage by copying or moving data from per-thread structures to the global structure, thus achieving good performance during marking while controlling overall memory consumption through periodic consolidation.

Inventive Principle:
Principle #19Periodic action

Data Source

PatentUS8041918B2Method and apparatus for improving parallel marking garbage collectors that use external bitmaps
Publication Date: 2011.10.18 ORACLE AMERICAN INC
  • US8041918B2 patent drawing
  • US8041918B2 patent drawing
  • US8041918B2 patent drawing

AI summary

A method for performing garbage collection involves obtaining a first reference bitmap including a block address and a set of mark bits, obtaining a first reference, identifying a mark bit of the set of mark bits based on the first reference, comparing an address associated with the mark bit with the first reference to generate a comparison, selecting an existing word from a global bit map based on the block address and the comparison, calculating a new word based on the set of mark bits and the existing word, replacing the existing word in the global bit map with the new word, and reclaiming a block of memory for reuse based on the global bit map after replacing the existing word.