Application-Directed Memory De-duplication via Content-Addressable Indexing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing memory de-duplication techniques are inefficient due to the high cost of scanning all pages to find duplicates, which becomes less effective as page sizes grow, leading to delayed detection of duplicates, unnecessary CPU cycles, and difficulty in provisioning memory, especially under memory pressure.

Innovation Solution

The proposed solution involves an application-directed approach where a match_token and page range are used to identify and compare only likely duplicate pages, reducing unnecessary comparisons and enabling efficient de-duplication by passing specific information from higher layers to the virtualization control layer to direct de-duplication efforts.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If all pages are scanned to find duplicates, then duplicates can be found, but CPU cycles are consumed and the process becomes slow

Engineering Contradiction:
Improveduplicate detection accuracyVSAvoidde-duplication speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system performs preliminary actions by scanning pages in advance and building a content-addressable index before de-duplication is needed. This pre-processing stores page contents or hashes in the index, so when de-duplication is required, the system can quickly check the index rather than scanning all pages again, thus resolving the contradiction between thorough duplicate detection and fast processing

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The content-addressable index serves itself by automatically checking incoming pages against stored content. The index structure allows pages to self-verify duplication status through hash matching without requiring manual scanning or comparison algorithms, improving both accuracy and speed

Inventive Principle:
Principle #25Self-service

2Productivity

If page scanning is deferred until memory pressure occurs, then CPU cycles are saved, but memory recovery is delayed making it harder to avoid performance degradations

Engineering Contradiction:
ImproveCPU efficiencyVSAvoidmemory recovery time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system performs preliminary scanning and indexing of pages before memory pressure occurs. This pre-computation stores page information in a content-addressable index, enabling rapid de-duplication when memory pressure arises, thus resolving the contradiction between CPU efficiency and timely memory recovery

Inventive Principle:
Principle #10Preliminary action

3Productivity

If de-duplication is not implemented, then CPU cycles are saved, but memory provisioning becomes more difficult

Engineering Contradiction:
ImproveCPU cycle utilizationVSAvoidmemory provisioning complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The content-addressable index automatically identifies duplicate pages through hash matching without requiring complex provisioning logic. The system self-manages the de-duplication process by checking incoming pages against the index and automatically sharing physical pages when duplicates are found, simplifying memory provisioning while maintaining CPU efficiency

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9436614B2Application-directed memory de-duplication
Publication Date: 2016.09.06 GLOBALFOUNDRIES US INC
  • US9436614B2 patent drawing
  • US9436614B2 patent drawing
  • US9436614B2 patent drawing

AI summary

In a computing system including an application executing on top of a virtualization control layer, wherein the virtualization control layer maps portions of a virtual memory to portions of a physical memory, a method for managing memory including: identifying, by the application, a range of virtual memory whose probability of being replicated in the virtual memory exceeds a given threshold; obtaining, by the application, at least one memory address corresponding to the range of virtual memory; and passing, from the application to the virtualization control layer, an identifier for the range of virtual memory and the memory address corresponding to the range of virtual memory, wherein the identifier is useable by the virtualization control layer to identify similar ranges within the virtual memory.