IP Library › Granted Patent US 10,346,043
Granted Patent B2
US 10,346,043 · App. 14/980,632 · Granted Jul 9, 2019

Adaptive computing for data compression

Inventors: Christopher Golden (Mountain View, CA); Richard Hankins (San Jose, CA); Aswin Karumbunathan (San Francisco, CA); Naveen Neelakantam (Mountain View, CA); Neil Vachharajani (San Francisco, CA)
Assignee: Pure Storage, Inc.
G06F3/0608G06F3/064G06F3/067G06F3/0638G06F3/0661G06F3/0689
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,346,043
App. No.
14/980,632
Granted
Jul 9, 2019
Kind
B2
Abstract

Intelligently compressing data in a storage array that includes a plurality of storage devices, including: prioritizing, in dependence upon an expected benefit to be gained from compressing each data element, one or more data elements; receiving an amount of processing resources available for compressing the one or more of the data elements; and selecting, in dependence upon the prioritization of the one or more data elements and the amount of processing resources available for compressing one or more of the data elements, a data compression algorithm to utilize on one or more of the data elements.

Claims (21)

1. A method of adaptive computing for data compression, the method comprising:

ranking portions of data in dependence upon an expected amount of time to uncompress each respective portion of data including determining the expected amount of time to uncompress each respective portion of data based on historical performance of at least one data compression algorithm;

selecting, in dependence upon the ranking of the portions of data in dependence upon the expected amount of time to uncompress each respective portion of data and upon an amount of processing resources available for compressing the portions of data, one or more portions of data and a data compression algorithm; and

compressing, in accordance with the selected data compression algorithm, the selected one or more portions of data to better utilize the amount of processing resources compared to a lower ranked portion of data.

2. The method of claim 1 , wherein ranking the portions of data is further dependent upon an expected benefit to the amount of storage to be gained from data compression, and wherein the method further comprises determining, for each of the portions of data, an amount of time that the portion of data is expected to remain stored, wherein the expected benefit is determined in dependence upon the amount of time that the data element is expected to remain stored.

3. The method of claim 2 , further comprising determining, for each of the portions of data, an expected compression ratio to be achieved by compressing the portion of data, wherein the expected benefit is determined in dependence upon the expected compression ratio to be achieved by compressing the portion of data.

4. The method of claim 1 further comprising determining, for one or more compression algorithms, an amount of processing resources required to compress one or more of the portions of data utilizing the compression algorithm.

5. A storage system controller for adaptive computing for data compression, the storage system controller including a computer processor and a computer memory, the computer memory including computer program instructions that, when executed, cause the storage system controller to carry out the steps of:

ranking portions of data in dependence upon an expected amount of time to uncompress each respective portion of data including determining the expected amount of time to uncompress each respective portion of data based on historical performance of at least one data compression algorithm;

selecting, in dependence upon the ranking of the portions of data in dependence upon the expected amount of time to uncompress each respective portion of data and upon an amount of processing resources available for compressing the plurality of data elements, one or more portions of data and a data compression algorithm; and

compressing, in accordance with the selected data compression algorithm, the selected one or more portions of data to better utilize the amount of processing resources compared to a lower ranked portion of data.

6. The storage system controller of claim 5 , wherein ranking the portions of data is further dependent upon an expected benefit to the amount of storage to be gained from data compression, and further comprising computer program instructions that, when executed, cause the storage system controller to carry out the step of determining, for each of the portions of data, an amount of time that the portion of data is expected to remain stored in storage system, wherein the expected benefit is determined in dependence upon the amount of time that the portion of data is expected to remain stored in the storage system.

7. The storage system controller of claim 6 , further comprising computer program instructions that, when executed, cause the storage system controller to carry out the step of determining, for each of the portions of data, an expected compression ratio to be achieved by compressing the portion of data, wherein the expected benefit is determined in dependence upon the expected compression ratio to be achieved by compressing the portion of data.

8. The storage system controller of claim 6 , further comprising computer program instructions that, when executed, cause the storage system controller to carry out the step of determining, for one or more compression algorithms, an amount of processing resources required to compress one or more of the portions of data utilizing the compression algorithm.

9. A computer program product for adaptive computing for data compression, the computer program product disposed on a computer readable storage medium, the computer program product comprising computer program instructions that, when executed, cause an apparatus to carry out the steps of:

ranking portions of data in dependence upon an expected amount of time to uncompress each respective portion of data including determining the expected amount of time to uncompress each respective portion of data based on historical performance of at least one data compression algorithm;

selecting, in dependence upon the ranking of the portions of data in dependence upon the expected amount of time to uncompress each respective portion of data and upon an amount of processing resources available for compressing the portions of data, one or more portions of data and a data compression algorithm; and

compressing, in accordance with the selected data compression algorithm, the selected one or more portions of data to better utilize the amount of processing resources compared to a lower ranked portion of data.

10. The computer program product of claim 9 , wherein ranking the portions of data is further dependent upon an expected benefit to the amount of storage to be gained from data compression, and further comprising computer program instructions that, when executed, cause the apparatus to carry out the step of determining, for each of the portions of data, an amount of time that the portion of data is expected to remain stored in the storage array, wherein the expected benefit is determined in dependence upon the amount of time that the portion of data is expected to remain stored in the storage array.

11. The computer program product of claim 10 , further comprising computer program instructions that, when executed, cause the apparatus to carry out the step of determining, for each of the portions of data, an expected compression ratio to be achieved by compressing the portion of data, wherein the expected benefit is determined in dependence upon the expected compression ratio to be achieved by compressing the portion of data.

12. The computer program product of claim 9 further comprising computer program instructions that, when executed, cause the apparatus to carry out the step of determining, for one or more compression algorithms, an amount of processing resources required to compress one or more of the portions of data utilizing the compression algorithm.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 28, 2015
From: GOLDEN, CHRISTOPHER; HANKINS, RICHARD; KARUMBUNATHAN, ASWIN; NEELAKANTAM, NAVEEN; VACHHARAJANI, NEIL
To: PURE STORAGE, INC.
Reel/Frame 037366/0954 →
Continuity (1)
Related Publication 20170185313A1 · Jun 29, 2017
Cited By (22)
US 12,218,695 US 12,218,697 US 12,224,775 US 12,224,776 US 12,236,089 US 12,260,086 US 12,261,632 US 12,308,864 US 12,321,596 US 12,395,185 US 12,417,136 US 12,430,026 US 12,489,459 US 12,489,460 US 12,566,548 US 12,578,856 US 12,619,546 US 12,712,568 US 12,719,496 US 12,724,977 US 12,726,213 US 12,732,208