IP Library Granted Patent US 11,431,480
Granted Patent B2
US 11,431,480 · App. 16/509,307 · Granted Aug 30, 2022

Smart compressor based on adaptive CPU/QAT scheduling method

Inventors: Bing Liu (Tianjin, CN); Tao Chen (Beijing, CN); Wei Lin (Beijing, CN); Yong Zou (San Jose, CA)
Assignee: EMC IP HOLDING COMPANY LLC
H04L9/0825G06F9/30007G06F9/3877G06F16/1744H04L9/30H04L9/34
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,431,480
App. No.
16/509,307
Granted
Aug 30, 2022
Kind
B2
Abstract

A method, apparatus, and system for assigning the execution of a cryptography and/or compression operation on a data segment to either a central processing unit (CPU) or a hardware cryptography/compression accelerator is disclosed. In particular, a data segment on which a cryptography and/or compression operation is to be executed is received. Status information relating to a CPU and a hardware cryptography/compression accelerator is determined. Whether the operation is to be executed on the CPU or on the hardware accelerator is determined based at least in part on the status information. In response to determining that the operation is to be executed on the CPU, the data segment is forwarded to the CPU for execution of the operation. On the other hand, in response to determining that the operation is to be executed on the hardware accelerator, the data segment is forwarded to the hardware accelerator for execution of the operation.

Claims (62)

1. A computer-implemented method for offloading a cryptography and/or compression operation to a hardware accelerator, comprising:

obtaining a data file and dividing the data file into a plurality of data segments for deduplicated storage,

wherein the plurality of data segments are grouped into buckets for the cryptography and/or compression operation prior to being deduplicatively stored based on a size of each of the plurality of data segments, the plurality of data segments of a similar size being grouped into a same bucket;

obtaining a data segment of the plurality of data segments and on which the cryptography and/or compression operation is to be executed to deduplicatively store the plurality of data segments against other data segments deduplicatively stored;

determining status information relating to a central processing unit (CPU) and the hardware accelerator for use in the deduplicative storage of the plurality of data segments,

wherein the status information relating to the CPU and the hardware accelerator comprises utilization ratios of the CPU and the hardware accelerator;

determining whether the cryptography and/or compression operation on the data segment is to be executed on the CPU or on the hardware accelerator based at least in part on a data segment size threshold and the status information relating to the CPU and the hardware accelerator to meet a compression performance goal,

wherein the data segment size threshold is one of a plurality of data segment size thresholds that are respectively mapped to one or more of the utilization ratios of the CPU and the hardware accelerator;

in response to determining that the cryptography and/or compression operation on the data segment is to be executed on the CPU:

forwarding the data segment to the CPU for execution of the cryptography and/or compression operation to obtain a processing result;

in response to determining that the cryptography and/or compression operation on the data segment is to be executed on the hardware accelerator:

forwarding the data segment to the hardware accelerator for execution of the cryptography and/or compression operation to obtain the processing result; and

deduplicatively storing the data file in one or more deduplicated storage units of a storage system using the processing result,

wherein a first portion of the plurality of data segments are stored in the storage system and copies of a second portion of the plurality of data segments were previously stored in the storage system,

wherein new copies of the second portion of the plurality of data segments are discarded without any new copies of the second portion being stored in the storage system to deduplicatively store the data file when it is determined that the copies of the second portion have been previously stored,

wherein the data segment size threshold is set to 0 when the utilization ratio of the CPU exceeds a first alarm level, wherein the data segment size threshold is set to a maximum value when the utilization ratio of the hardware accelerator exceeds a second alarm level, and wherein when the utilization ratio of the CPU does not exceed the first alarm level and the utilization ratio of the hardware accelerator does not exceed the second alarm level, a lookup operation in a CPU utilization to data segment size threshold mapping table is performed, and a data segment size threshold is set.

2. The method of claim 1 , wherein determining whether the cryptography and/or compression operation on a data segment is to be executed on the CPU or on the hardware accelerator based at least in part on the status information relating to the CPU and the hardware accelerator further comprises:

determining the data segment size threshold based at least in part on the utilization ratios of the CPU and hardware accelerator;

determining a size of the data segment;

when the size of the data segment is below the data segment size threshold, determining that the cryptography and/or compression operation on the data segment is to be executed on the CPU; and

when the size of the data segment is above the data segment size threshold, determining that the cryptography and/or compression operation on the data segment is to be executed on the hardware accelerator.

3. The method of claim 2 , wherein determining the data segment size threshold based at least in part on the utilization ratios of the CPU and hardware accelerator comprises performing a lookup operation in the CPU utilization to data segment size threshold mapping table, and wherein the data segment size threshold increases as the utilization ratio of the CPU decreases, and vice versa.

4. The method of claim 1 , wherein the CPU utilization to data segment size threshold mapping table, the first alarm level, and the second alarm level are user-defined and configured via user configuration interfaces.

5. The method of claim 1 , wherein the hardware accelerator is a companion chip to the CPU.

6. The method of claim 1 , wherein the second portion of the plurality of data segments is obtained by generating a fingerprint for each data segment of the second portion of the plurality of data segments using the hardware accelerator, performing a match of each respective fingerprint associated with each data segment of the second portion of the plurality of data segments to fingerprints of other data segments deduplicatively stored in the storage system, and identifying the second portion based on the match.

7. A non-transitory machine-readable medium for offloading a cryptography and/or compression operation to a hardware accelerator having instructions stored therein, which when executed by a processor, cause the processor to perform data processing operations, the operations comprising:

obtaining a data file and dividing the data file into a plurality of data segments for deduplicated storage, wherein the plurality of data segments are grouped into buckets for the cryptography and/or compression operation prior to being deduplicatively stored based on a size of each of the plurality of data segments, the plurality of data segments of a similar size being grouped into a same bucket;

obtaining a data segment of the plurality of data segments and on which the cryptography and/or compression operation is to be executed to deduplicatively store the plurality of data segments against other data segments deduplicatively stored;

determining status information relating to a central processing unit (CPU) and the hardware accelerator for use in the deduplicative storage of the plurality of data segments, wherein the status information relating to the CPU and the hardware accelerator comprises utilization ratios of the CPU and the hardware accelerator;

determining whether the cryptography and/or compression operation on the data segment is to be executed on the CPU or on the hardware accelerator based at least in part on a data segment size threshold and the status information relating to the CPU and the hardware accelerator to meet a compression performance goal, wherein the data segment size threshold is one of a plurality of data segment size thresholds that are respectively mapped to one or more of the utilization ratios of the CPU and the hardware accelerator;

in response to determining that the cryptography and/or compression operation on the data segment is to be executed on the CPU: forwarding the data segment to the CPU for execution of the cryptography and/or compression operation to obtain a processing result;

in response to determining that the cryptography and/or compression operation on the data segment is to be executed on the hardware accelerator: forwarding the data segment to the hardware accelerator for execution of the cryptography and/or compression operation to obtain the processing result; and

deduplicatively storing the data file in one or more deduplicated storage units of a storage system using the processing result, wherein a first portion of the plurality of data segments are stored in the storage system and copies of a second portion of the plurality of data segments were previously stored in the storage system, wherein new copies of the second portion of the plurality of data segments are discarded without any new copies of the second portion being stored in the storage system to deduplicatively store the data file when it is determined that the copies of the second portion have been previously stored,

wherein the data segment size threshold is set to 0 when the utilization ratio of the CPU exceeds a first alarm level,

wherein the data segment size threshold is set to a maximum value when the utilization ratio of the hardware accelerator exceeds a second alarm level, and wherein when the utilization ratio of the CPU does not exceed the first alarm level and the utilization ratio of the hardware accelerator does not exceed the second alarm level, a lookup operation in a CPU utilization to data segment size threshold mapping table is performed, and a data segment size threshold is set.

8. The non-transitory machine-readable medium of claim 7 , wherein determining whether the cryptography and/or compression operation on a data segment is to be executed on the CPU or on the hardware accelerator based at least in part on the status information relating to the CPU and the hardware accelerator further comprises:

determining the data segment size threshold based at least in part on the utilization ratios of the CPU and hardware accelerator;

determining a size of the data segment;

when the size of the data segment is below the data segment size threshold, determining that the cryptography and/or compression operation on the data segment is to be executed on the CPU; and

when the size of the data segment is above the data segment size threshold, determining that the cryptography and/or compression operation on the data segment is to be executed on the hardware accelerator.

9. The non-transitory machine-readable medium of claim 8 , wherein determining the data segment size threshold based at least in part on the utilization ratios of the CPU and hardware accelerator comprises performing a lookup operation in the CPU utilization to data segment size threshold mapping table, and wherein the data segment size threshold increases as the utilization ratio of the CPU decreases, and vice versa.

10. The non-transitory machine-readable medium of claim 7 , wherein the CPU utilization to data segment size threshold mapping table, the first alarm level, and the second alarm level are user-defined and configured via user configuration interfaces.

11. The non-transitory machine-readable medium of claim 7 wherein the hardware accelerator is a companion chip to the CPU.

12. The non-transitory machine-readable medium of claim 7 , wherein the second portion of the plurality of data segments is obtained by generating a fingerprint for each data segment of the second portion of the plurality of data segments using the hardware accelerator, performing a match of each respective fingerprint associated with each data segment of the second portion of the plurality of data segments to fingerprints of other data segments deduplicatively stored in the storage system, and identifying the second portion based on the match.

13. A data processing system for offloading a cryptography and/or compression operation to a hardware accelerator, comprising: a processor; and a memory coupled to the processor to store instructions, which when executed by the processor, cause the processor to perform data processing operations, the operations including:

obtaining a data file and dividing the data file into a plurality of data segments for deduplicated storage, wherein the plurality of data segments are grouped into buckets for the cryptography and/or compression operation prior to being deduplicatively stored based on a size of each of the plurality of data segments, the plurality of data segments of a similar size being grouped into a same bucket;

obtaining a data segment of the plurality of data segments and on which the cryptography and/or compression operation is to be executed to deduplicatively store the plurality of data segments against other data segments deduplicatively stored;

determining status information relating to a central processing unit (CPU) and the hardware accelerator for use in the deduplicative storage of the plurality of data segments, wherein the status information relating to the CPU and the hardware accelerator comprises utilization ratios of the CPU and the hardware accelerator;

determining whether the cryptography and/or compression operation on the data segment is to be executed on the CPU or on the hardware accelerator based at least in part on a data segment size threshold and the status information relating to the CPU and the hardware accelerator to meet a compression performance goal, wherein the data segment size threshold is one of a plurality of data segment size thresholds that are respectively mapped to one or more of the utilization ratios of the CPU and the hardware accelerator;

in response to determining that the cryptography and/or compression operation on the data segment is to be executed on the CPU: forwarding the data segment to the CPU for execution of the cryptography and/or compression operation to obtain a processing result;

in response to determining that the cryptography and/or compression operation on the data segment is to be executed on the hardware accelerator: forwarding the data segment to the hardware accelerator for execution of the cryptography and/or compression operation to obtain the processing result; and

deduplicatively storing the data file in one or more deduplicated storage units of a storage system using the processing result, wherein a first portion of the plurality of data segments are stored in the storage system and copies of a second portion of the plurality of data segments were previously stored in the storage system, wherein new copies of the second portion of the plurality of data segments are discarded without any new copies of the second portion being stored in the storage system to deduplicatively store the data file when it is determined that the copies of the second portion have been previously stored,

wherein the data segment size threshold is set to 0 when the utilization ratio of the CPU exceeds a first alarm level, wherein the data segment size threshold is set to a maximum value when the utilization ratio of the hardware accelerator exceeds a second alarm level, and wherein when the utilization ratio of the CPU does not exceed the first alarm level and the utilization ratio of the hardware accelerator does not exceed the second alarm level, a lookup operation in a CPU utilization to data segment size threshold mapping table is performed, and a data segment size threshold is set.

14. The data processing system of claim 13 , wherein determining whether the cryptography and/or compression operation on a data segment is to be executed on the CPU or on the hardware accelerator based at least in part on the status information relating to the CPU and the hardware accelerator further comprises:

determining the data segment size threshold based at least in part on the utilization ratios of the CPU and hardware accelerator;

determining a size of the data segment;

when the size of the data segment is below the data segment size threshold, determining that the cryptography and/or compression operation on the data segment is to be executed on the CPU; and

when the size of the data segment is above the data segment size threshold, determining that the cryptography and/or compression operation on the data segment is to be executed on the hardware accelerator.

15. The data processing system of claim 14 , wherein determining the data segment size threshold based at least in part on the utilization ratios of the CPU and hardware accelerator comprises performing a lookup operation in the CPU utilization to data segment size threshold mapping table, and wherein the data segment size threshold increases as the utilization ratio of the CPU decreases, and vice versa.

16. The data processing system of claim 13 , wherein the CPU utilization to data segment size threshold mapping table, the first alarm level, and the second alarm level are user-defined defined and configured via user configuration interfaces.

17. The data processing system of claim 13 , wherein the second portion of the plurality of data segments is obtained by generating a fingerprint for each data segment of the second portion of the plurality of data segments using the hardware accelerator, performing a match of each respective fingerprint associated with each data segment of the second portion of the plurality of data segments to fingerprints of other data segments deduplicatively stored in the storage system, and identifying the second portion based on the match.

18. The data processing system of claim 13 , wherein the cryptography and/or compression operation on the data segment comprises one of: a symmetric cryptography function applied to the data segment, an asymmetric cryptography function applied to the data segment, a compression function applied to the data segment, or a decompression function applied to the data segment.

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 (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 IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0571) 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 060436/0088 →
RELEASE OF SECURITY INTEREST AT REEL 050406 FRAME 421 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 058213/0825 →
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 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
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 050724/0571 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050406/0421 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 11, 2019
From: LIU, BING; CHEN, TAO; LIN, WEI; ZOU, YONG
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 049731/0033 →