IP Library › Granted Patent US 11,226,774
Granted Patent B2
US 11,226,774 · App. 16/656,046 · Granted Jan 18, 2022

Deep data-compression

Inventors: Vamsi K. Vankamamidi (Hopkinton, MA); Philippe Armangau (Acton, MA); Daniel E. Cummins (Hudson, NH); Steven A. Morley (Mendon, MA)
Assignee: EMC IP Holding Company LLC
G06F3/0661G06F3/0608G06F3/0689G06F12/0253G06F2212/1044
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 11,226,774
App. No.
16/656,046
Filed
Oct 17, 2019
Granted
Jan 18, 2022
Kind
B2
Art Unit
2133
USPC
711/154
Abstract

Host data stored in one or more source physical extents of non-volatile data storage is identified as valid and determined to be infrequently written by host I/O requests, and is therefore compressed to generate a highly compressed version of the valid host data. The highly compressed version is then stored into at least one target physical extent. The valid host data may be initially compressed before it is stored in the source physical extent(s), and may be re-compressed to generate the highly compressed version. If the valid host data is also infrequently read, it may be recompressed using larger blocks of host data than were used to perform the initial compression. The performance tier of the target physical extent may be different from (e.g. lower than) the performance tier of the source physical extent. The technology may be embodied in a background process such as a garbage collector.

Claims (63)

1. A method comprising:

initially compressing valid host data by a first compression logic located in a storage processor, upon receipt of the valid host data by the storage processor from the an application that issues host I/O requests to the storage processor, prior to the valid host data being stored by the storage processor into non-volatile data storage, to generate an initially compressed version of the valid host data that is stored into the non-volatile data storage, wherein the valid host data is initially compressed by the first compression logic in blocks of host data having a first size that is equal to a page-size granularity of the application that issues the host I/O requests;

identifying the initially compressed version of the valid host data stored in at least one source physical extent of the non-volatile data storage;

determining whether the initially compressed version of the valid host data is infrequently accessed by host I/O write requests; and

in response to determining that the initially compressed version of the valid host data is infrequently accessed by the host I/O write requests, recompressing the valid host data by a second compression logic located in the storage processor, in blocks of host data having a second size, wherein the second size is a multiple of the first size, to generate a highly compressed version of the valid host data, and storing the highly compressed version of the valid host data into at least one target physical extent of non-volatile data storage, wherein the highly compressed version of the valid host data is smaller than the initially compressed version of the valid host data stored in the non-volatile data storage.

2. The method of claim 1 , further comprising:

further in response to determining that the initially compressed version of the valid host data is infrequently accessed by host I/O write requests, determining whether the valid host data is also infrequently accessed by host I/O read requests; and

wherein recompressing the valid host data by the second compression logic located in the storage processor is performed in response to determining that the valid host data is also infrequently accessed by host I/O read requests.

3. The method of claim 2 , wherein the non-volatile data storage comprises multiple performance tiers of non-volatile data storage devices, including a first performance tier containing one or more non-volatile data storage devices and a second performance tier containing one or more other non-volatile data storage devices, wherein the non-volatile data storage devices in the second performance tier have lower performance than the non-volatile data storage devices in the first performance tier, and wherein the at least one source physical extent is located on at least one non-volatile data storage device in the first performance tier, the method further comprising:

further in response to determining that the initially compressed version of the valid host data is infrequently accessed by host I/O write requests, allocating the at least one target physical extent from the second performance tier, such that the at least one target physical extent is located on at least one non-volatile data storage device in the second performance tier.

4. The method of claim 1 , wherein determining whether the initially compressed version of the valid host data is infrequently accessed by host I/O requests comprises:

determining an amount of time since host data stored in the source physical extent was last modified;

comparing the amount of time since host data stored in the source physical extent was last modified to a threshold amount of time; and

determining that the valid host data is infrequently accessed by host I/O write requests in response to the amount of time since host data stored in the source physical extent was last modified exceeding the threshold amount of time.

5. The method of claim 4 , further comprising consolidating the valid host data in the non-volatile data storage at least in part by:

identifying the initially compressed version of the valid host data in multiple source physical extents; and

storing the highly compressed version of the valid host data into a total number of target physical extents that is less than a total number of the source physical extents.

6. The method of claim 1 , further comprising:

storing the initially compressed version of the valid host data into the source physic al extent; and

each time a portion of initially compressed version of the valid host data stored in the source physical extent is modified:

marking as invalid that portion of the initially compressed version of the valid host data in the source physical extent, and

storing a modified version of that portion of the initially compressed version of the valid host data into a different physical extent.

7. The method of claim 6 , wherein identifying the initially compressed version of the valid host data comprises identifying those portions of the initially compressed version of the valid host data in the source physical extent that were not modified since the initially compressed version of the valid host data was stored into the source physic al extent.

8. The method of claim 1 , further comprising:

executing garbage collection logic as a background process in the storage processor; and

performing the steps of identifying the initially compressed version of the valid host data, determining whether the initially compressed version of the valid host data is infrequently accessed by host I/O write requests, and recompressing the valid host data to generate the highly compressed version of the valid host data, by execution of the garbage collection logic.

9. A data storage system, comprising:

processing circuitry and memory coupled to the processing circuitry, the memory storing instructions, wherein the instructions, when executed by the processing circuitry, cause the processing circuitry to:

initially compress valid host data by a first compression logic located in a storage processor, upon receipt of the valid host data by the storage processor from the an application that issues host I/O requests to the storage processor, prior to the valid host data being stored by the storage processor into non-volatile data storage, to generate an initially compressed version of the valid host data that is stored into the non-volatile data storage, wherein the valid host data is initially compressed by the first compression logic in blocks of host data having a first size that is equal to a page-size granularity of the application that issues the host I/O requests;

identify the initially compressed version of the valid host data stored in at least one source physical extent of the non-volatile data storage;

determine whether the initially compressed version of the valid host data is infrequently accessed by host I/O write requests; and

in response to a determination that the initially compressed version of the valid host data is infrequently accessed by the host I/O write requests,

recompressing the valid host data by a second compression logic located in the storage processor, in blocks of host data having a second size, wherein the second size is a multiple of the first size, to generate a highly compressed version of the valid host data, and storing the highly compressed version of the valid host data into at least one target physical extent of non-volatile data storage, wherein the highly compressed version of the valid host data is smaller than the initially compressed version of the valid host data stored in the non-volatile data storage.

10. The data storage system of claim 9 , wherein the instructions, when executed by the processing circuitry, further cause the processing circuitry to:

further in response to a determination that the initially compressed version of the valid host data is infrequently accessed by host I/O write requests, determine whether the valid host data is also infrequently accessed by host I/O read requests; and

wherein the valid host data is recompressed by the second compression logic located in the storage processor in response to a determination that the valid host data is also infrequently accessed by host I/O read requests.

11. The data storage system of claim 10 , wherein the non-volatile data storage comprises multiple performance tiers of non-volatile data storage devices, including a first performance tier containing one or more non-volatile data storage devices and a second performance tier containing one or more other non-volatile data storage devices, wherein the non-volatile data storage devices in the second performance tier have lower performance than the non-volatile data storage devices in the first performance tier, and wherein the at least one source physical extent is located on at least one non-volatile data storage device in the first performance tier, and wherein the instructions, when executed by the processing circuitry, further cause the processing circuitry to:

further in response to a determination that the initially compressed version of the valid host data is infrequently accessed by host I/O write requests, allocate the at least one target physical extent from the second performance tier, such that the at least one target physical extent is located on at least one non-volatile data storage device in the second performance tier.

12. The data storage system of claim 9 , wherein execution of the instructions by the processing circuitry causes the processing circuitry to determine whether the initially compressed version of the valid host data is infrequently accessed by host I/O requests at least in part by causing the processing circuitry to:

determine an amount of time since host data stored in the source physical extent was last modified;

compare the amount of time since host data stored in the source physical extent was last modified to a threshold amount of time; and

determine that the valid host data is infrequently accessed by host I/O write requests in response to the amount of time since host data stored in the source physical extent was last modified exceeding the threshold amount of time.

13. The data storage system of claim 12 , wherein the instructions, when executed by the processing circuitry, further cause the processing circuitry to consolidate the valid host data in the non-volatile data storage at least in part by causing the processing circuitry to:

identify the initially compressed version of the valid host data in multiple source physical extents; and

store the highly compressed version of the valid host data into a total number of target physical extents that is less than a total number of the source physical extents.

14. The data storage system of claim 9 , wherein the instructions, when executed by the processing circuitry, further cause the processing circuitry to:

store the initially compressed version of the valid initial version host data into the source physical extent; and

each time a portion of the initially compressed version of the valid host data stored in the source physical extent is modified:

mark as invalid that portion of the initially compressed version of the valid host data in the source physical extent, and

store a modified version of that portion of the initially compressed version of the valid host data into a different physical extent.

15. The data storage system of claim 14 , wherein the instructions, when executed by the processing circuitry, cause the processing circuitry to identify the initially compressed version of the valid host data at least in part by causing the processing circuitry to identify those portions of the initially compressed version of the valid host data in the source physical extent that were not modified since the initially compressed version of the valid host data was stored into the source physical extent.

16. The data storage system of claim 9 , wherein the instructions include garbage collection logic, and wherein executing the instructions by the processing circuitry further causes the processing circuitry to:

execute the garbage collection logic as a background process in the storage processor; and

wherein execution of the garbage collection logic by the processing circuitry causes the processing circuitry to identify the initially compressed version of the valid host data, determine whether the initially compressed version of the valid host data is infrequently accessed by host I/O write requests, and recompress the valid host data to generate the highly compressed version of the valid host data.

17. A computer program product, comprising:

a non-transitory, computer-readable medium having instructions stored thereon that, when executed by processing circuitry in a data storage system, cause the processing circuitry to perform a method comprising the steps of:

initially compress valid host data by a first compression logic located in a storage processor, upon receipt of the valid host data by the storage processor from the an application that issues host I/O requests to the storage processor, prior to the valid host data being stored by the storage processor into non-volatile data storage, to generate an initially compressed version of the valid host data that is stored into the non-volatile data storage, wherein the valid host data is initially compressed by the first compression logic in blocks of host data having a first size that is equal to a page-size granularity of the application that issues the host I/O requests;

identifying the initially compressed version of the valid host data stored in at least one source physical extent of the non-volatile data storage,

determining whether the initially compressed version of the valid host data is infrequently accessed by host I/O write requests, and

in response to determining that the initially compressed version of the valid host data is infrequently accessed by the host I/O write requests, recompressing the valid host data by a second compression logic located in the storage processor, in blocks of host data having a second size, wherein the second size is a multiple of the first size, to generate a highly compressed version of the valid host data, and storing the highly compressed version of the valid host data into at least one target physical extent of non-volatile data storage, wherein the highly compressed version of the valid host data is smaller than the initially compressed version of the valid host data stored in the non-volatile data storage.

18. The method of claim 1 , wherein the non-volatile data storage comprises multiple performance tiers of non-volatile data storage devices, including a first performance tier containing one or more non-volatile data storage devices and a second performance tier containing one or more other non-volatile data storage devices, wherein the non-volatile data storage devices in the second performance tier have lower performance than the non-volatile data storage devices in the first performance tier;

wherein the initially compressed version of the valid host data is stored in the non-volatile data storage devices in the first performance tier; and

wherein the highly compressed version of the valid host data is stored in the non-volatile data storage devices in the second performance tier.

Assignments (9)
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 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (051302/0528) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.); SECUREWORKS CORP.
Reel/Frame 060438/0593 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST AT REEL 051449 FRAME 0728 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
Reel/Frame 058002/0010 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
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 Dec 31, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 051449/0728 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Dec 16, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 051302/0528 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 20, 2019
From: VANKAMAMIDI, VAMSI K.; ARMANGAU, PHILIPPE; CUMMINS, DANIEL E.; MORLEY, STEVEN A.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 051060/0310 →
Continuity (1)
Related Publication 20210117132A1 · Apr 22, 2021
Cited By (1)
US 12,405,743