IP Library Granted Patent US 11,068,405
Granted Patent B2
US 11,068,405 · App. 15/957,065 · Granted Jul 20, 2021

Compression of host I/O data in a storage processor of a data storage system with selection of data compression components based on a current fullness level of a persistent cache

Inventors: Philippe Armangau (Acton, MA); Ivan Bassov (Brookline, MA); Monica Chaudhary (South Grafton, MA); Christopher A. Seibel (Walpole, MA)
Assignee: EMC IP Holding Company LLC
G06F12/0891G06F3/0608G06F3/0613G06F3/0643G06F3/0673G06F2212/604
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,068,405
App. No.
15/957,065
Granted
Jul 20, 2021
Kind
B2
Abstract

A storage processor in a data storage system includes a compression selection component that selects a data compression component to be used to compress host I/O data that is flushed from a persistent cache of the storage processor based on a current fullness level of the persistent cache. The compression selection component selects compression components implementing compression algorithms having relatively lower compression ratios for relatively higher current fullness levels of the persistent cache, and selects compression components implementing compression algorithms having relatively higher compression ratios for relatively lower current fullness levels of the persistent cache.

Claims (57)

1. A method of providing data compression in a storage processor of a data storage system, comprising the steps of:

in response to detecting a cache flush event by detecting that a predetermined time period has expired since host I/O data was previously stored into a persistent cache located in the storage processor, i) forming an aggregation set of blocks of host I/O data within host I/O data accumulated in the persistent cache, wherein the aggregation set is a set of oldest blocks of host I/O data that are stored in the persistent cache, and ii) determining a current fullness level of the persistent cache, wherein the current fullness of the persistent cache comprises a current percentage of a total size of the persistent cache that is currently used to store host I/O data;

selecting, by a compression selection component in the storage processor in response to the current fullness level of the persistent cache, from a set of available compression components contained in the storage processor, a compression component for compressing the aggregation set, wherein the compression selection component selects compression components implementing compression algorithms having relatively lower compression ratios in response to relatively higher current fullness levels of the persistent cache, and wherein the compression selection component selects compression components implementing compression algorithms having relatively higher compression ratios in response to relatively lower current fullness levels of the persistent cache; and

compressing the aggregation set using the selected compression component to obtain a compressed version of the aggregation set.

2. The method of claim 1 , further comprising:

accumulating host I/O data that is indicated by host I/O write requests that are received by the storage processor from at least one host computer into the persistent cache that is located in the storage processor; and

wherein the cache flush event indicates that a plurality of blocks of host I/O data accumulated in the persistent cache are to be flushed from the persistent cache to at least one lower deck file system that is internal to the data storage system.

3. The method of claim 2 , wherein selecting the compression component comprises selecting one of the compression components in the set of available compression components having the highest associated persistent cache fullness threshold that is less than or equal to the current fullness level of the persistent cache.

4. The method of claim 3 , wherein determining the current fullness level of the persistent cache comprises determining a current percentage of the total size of the persistent cache that is currently used to store host I/O data; and

wherein selecting the compression component comprises selecting one of the compression components in the set of available compression components in the set of available compression components having the highest associated persistent cache fullness threshold that is less than or equal to the current percentage of the total size of the persistent cache that is currently used to store host I/O data.

5. The method of claim 4 , wherein each one of the compression components in the set of available compression components is associated with a different persistent cache fullness threshold.

6. The method of claim 5 , further comprising:

determining whether the blocks of host I/O data in the aggregation set contain host I/O data that is an overwrite of host I/O data previously flushed from the persistent cache to at least one lower deck file system that is internal to the data storage system;

in response to determining that the blocks of host I/O data in the aggregation set contain host I/O data that is not an overwrite of host I/O data previously flushed from the persistent cache to at least one lower deck file system that is internal to the data storage system, allocating an extent of blocks in an address space of a lower deck file system within a compressed region of the address space of the lower deck file system; and

storing the compressed version of the aggregation set to non-volatile storage corresponding to the extent of blocks in the address space of the lower deck file system.

7. The method of claim 6 , further comprising:

determining a length of the compressed version of the aggregation set; and

wherein allocating the extent of blocks in the address space of the lower deck file system within the compressed region of the address space of the lower deck file system comprises allocating an extent of blocks in the address space of the lower deck file system having length that is greater than the length of the compressed version of the aggregation set.

8. The method of claim 5 , further comprising:

determining whether the blocks of host I/O data in the aggregation set contain host I/O data that is an overwrite of host I/O data previously flushed from the persistent cache to at least one lower deck file system that is internal to the data storage system;

in response to determining that the blocks of host I/O data in the aggregation set contain host I/O data that is an overwrite of host I/O data previously flushed from the persistent cache to at least one lower deck file system that is internal to the data storage system, comparing a length the compressed version of the aggregation set to a length of an extent of blocks in an address space of a lower deck file system within a compressed region of the address space of the lower deck file system that was used to store a previous compressed version of the blocks of host I/O data in the aggregation set; and

in response to determining that the length the compressed version of the aggregation set is greater than the length of an extent of blocks in an address space of the lower deck file system within the compressed region of the address space of the lower deck file system that was used to store the previous compressed version of the blocks of host I/O data in the aggregation set, selecting a second compression component for compressing the aggregation set, wherein the second selected compression component has a higher compression ratio than the initially selected compression component; and

recompressing the aggregation set using the second selected compression component to obtain a second compressed version of the aggregation set.

9. The method of claim 5 , wherein the lower deck file system maps files to blocks in an address space of the lower deck file system, wherein each file implements a corresponding data object that is accessible to the at least one host computer, and wherein blocks in the address space of the lower deck file system also correspond to non-volatile storage provisioned from a set of storage devices in the data storage system that provide storage for the lower deck file system.

10. A storage processor in a data storage system, the storage processor including a set of processing units and memory, coupled to the set of processing units, the memory storing instructions for providing data compression in the storage processor, wherein the instructions, when executed by the set of processing units, cause the set of processing units to:

in response to detection of a cache flush event by detecting that a predetermined time period has expired since host I/O data was previously stored into a persistent cache located in the storage processor, i) form an aggregation set of blocks of host I/O data within host I/O data accumulated in the persistent cache, wherein the aggregation set is a set of oldest blocks of host I/O data that are stored in the persistent cache, and ii) determine a current fullness level of the persistent cache, wherein the current fullness of the persistent cache comprises a current percentage of a total size of the persistent cache that is currently used to store host I/O data;

select, by a compression selection component in the storage processor in response to the current fullness level of the persistent cache, from a set of available compression components contained in the storage processor, a compression component for compressing the aggregation set, wherein the compression selection component selects compression components implementing compression algorithms having relatively lower compression ratios in response to relatively higher current fullness levels of the persistent cache, and wherein the compression selection component selects compression components implementing compression algorithms having relatively higher compression ratios in response to relatively lower current fullness levels of the persistent cache; and

compress the aggregation set using the selected compression component to obtain a compressed version of the aggregation set.

11. The storage processor of claim 10 , wherein the instructions, when executed by the set of processing units, further cause the processing units to:

accumulate host I/O data that is indicated by host I/O write requests that are received by the storage processor from at least one host computer into the persistent cache that is located in the storage processor; and

wherein the cache flush event indicates that a plurality of blocks of host I/O data accumulated in the persistent cache are to be flushed from the persistent cache to at least one lower deck file system that is internal to the data storage system.

12. The storage processor of claim 11 , wherein the instructions, when executed by the set of processing using to select the compression component, further cause the processing units to select one of the compression components in the set of available compression components having the highest associated persistent cache fullness threshold that is less than or equal to the current fullness level of the persistent cache.

13. The storage processor of claim 12 , wherein the instructions, when executed by the set of processing units, cause the set of processing units to determine the current fullness level of the persistent cache by determining a current percentage of the total size of the persistent cache that is currently used to store host I/O data; and

wherein the instructions, when executed by the set of processing units, cause the processing units to select the compression component by selecting one of the compression components in the set of available compression components in the set of available compression components having the highest associated persistent cache fullness threshold that is less than or equal to the current percentage of the total size of the persistent cache that is currently used to store host I/O data.

14. The storage processor of claim 13 , wherein each one of the compression components in the set of available compression components is associated with a different persistent cache fullness threshold.

15. The storage processor of claim 14 , wherein the instructions, when executed by the set of processing units, further cause the processing units to:

determine whether the blocks of host I/O data in the aggregation set contain host I/O data that is an overwrite of host I/O data previously flushed from the persistent cache to at least one lower deck file system that is internal to the data storage system;

in response to a determination that the blocks of host I/O data in the aggregation set contain host I/O data that is not an overwrite of host I/O data previously flushed from the persistent cache to at least one lower deck file system that is internal to the data storage system, allocate an extent of blocks in an address space of a lower deck file system within a compressed region of the address space of the lower deck file system; and

store the compressed version of the aggregation set to non-volatile storage corresponding to the extent of blocks in the address space of the lower deck file system.

16. The storage processor of claim 15 , wherein the instructions, when executed by the set of processing units, further cause the processing units to:

determine a length of the compressed version of the aggregation set; and

allocate the extent of blocks in the address space of the lower deck file system within the compressed region of the address space of the lower deck file system at least in part by allocating an extent of blocks in the address space of the lower deck file system having length that is greater than the length of the compressed version of the aggregation set.

17. The storage processor of claim 14 , wherein the instructions, when executed by the set of processing units, further cause the processing units to:

determine whether the blocks of host I/O data in the aggregation set contain host I/O data that is an overwrite of host I/O data previously flushed from the persistent cache to at least one lower deck file system that is internal to the data storage system;

in response to determining that the blocks of host I/O data in the aggregation set contain host I/O data that is an overwrite of host I/O data previously flushed from the persistent cache to at least one lower deck file system that is internal to the data storage system, compare a length the compressed version of the aggregation set to a length of an extent of blocks in an address space of a lower deck file system within a compressed region of the address space of the lower deck file system that was used to store a previous compressed version of the blocks of host I/O data in the aggregation set; and

in response to determining that the length the compressed version of the aggregation set is greater than the length of an extent of blocks in an address space of the lower deck file system within the compressed region of the address space of the lower deck file system that was used to store the previous compressed version of the blocks of host I/O data in the aggregation set, select a second compression component for compressing the aggregation set, wherein the second selected compression component has a higher compression ratio than the initially selected compression component; and

recompress the aggregation set using the second selected compression component to obtain a second compressed version of the aggregation set.

18. The storage processor of claim 14 , wherein the lower deck file system maps files to blocks in an address space of the lower deck file system, wherein each file implements a corresponding data object that is accessible to the at least one host computer, and wherein blocks in the address space of the lower deck file system also correspond to non-volatile storage provisioned from a set of storage devices in the data storage system that provide storage for the lower deck file system.

19. A non-transitory, computer-readable medium including instructions which, when executed by a set of processing units of in a storage processor in a data storage system, cause the set of processing units to perform a method of data compression in the storage processor, the method comprising the steps of:

in response to detecting a cache flush event by detecting that a predetermined time period has expired since host I/O data was previously stored into a persistent cache located in the storage processor, i) forming an aggregation set of blocks of host I/O data within host I/O data accumulated in the persistent cache, wherein the aggregation set is a set of oldest blocks of host I/O data that are stored in the persistent cache, and ii) determining a current fullness level of the persistent cache, wherein the current fullness of the persistent cache comprises a current percentage of a total size of the persistent cache that is currently used to store host I/O data;

selecting, by a compression selection component in the storage processor in response to the current fullness level of the persistent cache, from a set of available compression components contained in the storage processor, a compression component for compressing the aggregation set, wherein the compression selection component selects compression components implementing compression algorithms having relatively lower compression ratios in response to relatively higher current fullness levels of the persistent cache, and wherein the compression selection component selects compression components implementing compression algorithms having relatively higher compression ratios in response to relatively lower current fullness levels of the persistent cache; and

compressing the aggregation set using the selected compression component to obtain a compressed version of the aggregation set.

20. The method of claim 1 , further comprising:

wherein forming the aggregation set comprises selecting, as the aggregation set, the set of oldest blocks of host I/O data that are stored in the persistent cache.

21. The method of claim 1 , further comprising:

selecting compression components that implement a first compression algorithm having relatively lower compression ratios in response to relatively higher currently fullness levels of the persistent cache; and

selecting compression components that implement a second compression algorithm different from the first compression algorithm and having relatively higher compression ratios in response to relatively lower currently fullness levels of the persistent cache.

Assignments (8)
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 (046366/0014) Recorded May 20, 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 060450/0306 →
RELEASE OF SECURITY INTEREST AT REEL 046286 FRAME 0653 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0093 →
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 Jun 11, 2018
From: ARMANGAU, PHILIPPE; BASSOV, IVAN; CHAUDHARY, MONICA; SEIBEL, CHRISTOPHER A.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 046042/0208 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Jun 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046286/0653 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jun 1, 2018
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 046366/0014 →
Continuity (1)
Related Publication 20190324916A1 · Oct 24, 2019