IP Library › Granted Patent US 10,831,370
Granted Patent B1
US 10,831,370 · App. 15/396,302 · Granted Nov 10, 2020

Deduplicated and compressed non-volatile memory cache

Inventor: Philip Shilane (Newtown, PA)
Assignee: EMC IP HOLDING COMPANY LLC
G06F3/0608G06F3/0641G06F3/0661G06F3/0679
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,831,370
App. No.
15/396,302
Granted
Nov 10, 2020
Kind
B1
Abstract

One embodiment is related to a method for applying deduplication and/or compression to data stored or to be stored at a non-volatile memory (NVM) cache comprising: identifying the NVM cache; determining whether deduplication or compression, or both, is to be applied to data stored or to be stored at the NVM cache; and applying either deduplication or compression, or both, to the data stored or to be stored at the NVM cache.

Claims (38)

1. A method for applying deduplication, compression, or both, to data stored or to be stored at a non-volatile memory (NVM) cache, comprising:

identifying the NVM cache;

determining whether deduplication or compression, or both, is to be applied to data stored or to be stored at the NVM cache; and

applying either deduplication or compression, or both, to the data stored or to be stored at the NVM cache,

wherein containers are created by concatenating data directly in the NVM cache without first creating the containers in a dynamic random access memory (DRAM) when compression is applied,

wherein whether data sections are identical is determined based on cryptographic hashes when deduplication is applied, wherein in response to deduplication being applied, a first index and a second index are maintained in the NVM cache to map client keys to locations of the NVM cache, the first index mapping client keys to hashes, the second index mapping the hashes to locations of the NVM cache and including, in each entry comprising a hash-NVM cache location pair, a reference count indicative of a quantity of live client keys referencing the respective hash, wherein when a reference count reaches zero, NVM cache space associated with the respective NVM cache location is recovered for future reuse, wherein in response to deduplication not being applied, a third index is maintained to map client keys directly to locations of the NVM cache without use of hashes, each entry of the third index including a size of a corresponding data chunk, and

wherein based on a level of system computational loads at a time of data storage, deduplication, compression, or both, are applied either inline as the data is being written to the NVM cache or at a later time after the data has been written to the NVM cache.

2. The method of claim 1 , wherein deduplication, compression, or both, are applied inline as the data is being written to the NVM cache.

3. The method of claim 1 , wherein deduplication, compression, or both, are applied after the data has been written to the NVM cache.

4. The method of claim 1 , wherein deduplication is applied, and wherein whether data sections are identical is determined using byte-by-byte comparison.

5. The method of claim 1 , wherein compression is applied, and wherein log-structured storage is used to manage space of the NVM cache.

6. The method of claim 1 , wherein both deduplication and compression are applied, and deduplication is applied before compression.

7. A data processing system, comprising:

a processor; and

a memory coupled to the processor storing instructions which, when executed by the processor, cause the processor to perform testing operations, the operations including

identifying the NVM cache;

determining whether deduplication or compression, or both, is to be applied to data stored or to be stored at the NVM cache; and

applying either deduplication or compression, or both, to the data stored or to be stored at the NVM cache,

wherein containers are created by concatenating data directly in the NVM cache without first creating the containers in a dynamic random access memory (DRAM) when compression is applied,

wherein whether data sections are identical is determined based on cryptographic hashes when deduplication is applied, wherein in response to deduplication being applied, a first index and a second index are maintained in the NVM cache to map client keys to locations of the NVM cache, the first index mapping client keys to hashes, the second index mapping the hashes to locations of the NVM cache and including, in each entry comprising a hash-NVM cache location pair, a reference count indicative of a quantity of live client keys referencing the respective hash, wherein when a reference count reaches zero, NVM cache space associated with the respective NVM cache location is recovered for future reuse, wherein in response to deduplication not being applied, a third index is maintained to map client keys directly to locations of the NVM cache without use of hashes, each entry of the third index including a size of a corresponding data chunk, and

wherein based on a level of system computational loads at a time of data storage, deduplication, compression, or both, are applied either inline as the data is being written to the NVM cache or at a later time after the data has been written to the NVM cache.

8. The data processing system of claim 7 , wherein deduplication, compression, or both, are applied inline as the data is being written to the NVM cache.

9. The data processing system of claim 7 , wherein deduplication, compression, or both, are applied after the data has been written to the NVM cache.

10. The data processing system of claim 7 , wherein deduplication is applied, and wherein whether data sections are identical is determined using byte-by-byte comparison.

11. The data processing system of claim 7 , wherein compression is applied, and wherein log-structured storage is used to manage space of the NVM cache.

12. The data processing system of claim 7 , wherein both deduplication and compression are applied, and deduplication is applied before compression.

13. A non-transitory machine-readable medium having instructions stored therein which, when executed by a processor, cause the processor to perform testing operations, the operations comprising:

identifying the NVM cache;

determining whether deduplication or compression, or both, is to be applied to data stored or to be stored at the NVM cache; and

applying either deduplication or compression, or both, to the data stored or to be stored at the NVM cache,

wherein containers are created by concatenating data directly in the NVM cache without first creating the containers in a dynamic random access memory (DRAM) when compression is applied,

wherein whether data sections are identical is determined based on cryptographic hashes when deduplication is applied, wherein in response to deduplication being applied, a first index and a second index are maintained in the NVM cache to map client keys to locations of the NVM cache, the first index mapping client keys to hashes, the second index mapping the hashes to locations of the NVM cache and including, in each entry comprising a hash-NVM cache location pair, a reference count indicative of a quantity of live client keys referencing the respective hash, wherein when a reference count reaches zero, NVM cache space associated with the respective NVM cache location is recovered for future reuse, wherein in response to deduplication not being applied, a third index is maintained to map client keys directly to locations of the NVM cache without use of hashes, each entry of the third index including a size of a corresponding data chunk, and

wherein based on a level of system computational loads at a time of data storage, deduplication, compression, or both, are applied either inline as the data is being written to the NVM cache or at a later time after the data has been written to the NVM cache.

14. The non-transitory machine-readable medium of claim 13 , wherein deduplication, compression, or both, are applied inline as the data is being written to the NVM cache.

15. The non-transitory machine-readable medium of claim 13 , wherein deduplication, compression, or both, are applied after the data has been written to the NVM cache.

16. The non-transitory machine-readable medium of claim 13 , wherein deduplication is applied, and wherein whether data sections are identical is determined using byte-by-byte comparison.

17. The non-transitory machine-readable medium of claim 13 , wherein compression is applied, and wherein log-structured storage is used to manage space of the NVM cache.

18. The non-transitory machine-readable medium of claim 13 , wherein both deduplication and compression are applied, and deduplication is applied before compression.

Assignments (4)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 2, 2017
From: SHILANE, PHILIP
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041446/0710 →
Cited By (1)
US 12,632,176