IP Library Granted Patent US 12,223,346
Granted Patent B2
US 12,223,346 · App. 17/313,893 · Granted Feb 11, 2025

Selectively offloading the compression and decompression of files to a hardware controller

Inventors: Young Hwan Jang (Gyeonggi-do, KR); Gokul Thiruchengode Vajravel (Bangalore, IN)
Assignee: Dell Products L.P.
G06F9/4856G06F3/0608G06F3/0659G06F3/0673G06F9/505H03M7/607
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 12,223,346
App. No.
17/313,893
Granted
Feb 11, 2025
Kind
B2
Abstract

The compression and decompression of files can be selectively offloaded to a hardware controller. A hardware controller, such as the controller of an SSD or other drive, can include a compression engine that is configured to implement compression techniques. A filter driver in the I/O pathway on a computing device may be configured to intercept an application's attempt to write a file to or read a file from the SSD or other drive and to selectively offload compression or decompression of the file to a compression engine on the SSD or other drive.

Claims (90)

1. A method for selectively offloading compression or decompression of a file to a hardware controller, the method comprising:

causing a service to be executed on the computing device, the service maintaining a lookup table that defines a plurality of selective compression configurations, each selective compression configuration defining: (1) a particular application to which the selective compression configuration pertains, (2) one or more file types, (3) whether compression of files having one of the one or more file types should be offloaded to a compression engine on a drive of the computing device when the particular application attempts to write such files to the drive, and (4) one or more compression techniques that should be used when compression of such files is offloaded to the compression engine on the drive;

causing a filter driver to be loaded above a storage port driver and below a storage stack in an I/O pathway on a computing device, the storage port driver pertaining to the drive of the computing device;

after the filter driver is loaded, sending, by the service, the lookup table to the filter driver;

receiving, by the filter driver, a first write request that is being passed down the I/O pathway, the first write request attempting to write a first file to the drive;

in response to receiving the first write request, interfacing, by the filter driver, with an operating system of the computing device to identify a first application as a source of the first write request;

determining, by the filter driver, that the first file has a first file type;

querying, by the filter driver, the lookup table received from the service to identify a first selective compression configuration of the plurality of selective compression configurations that pertains to the first application and to determine, from the first selective compression configuration and based on the first file having the first file type, that compression of the first file should be offloaded to the compression engine on the drive rather than allowing the first write request to be passed further down the I/O pathway to thereby cause the first file to be compressed by a CPU or GPU of the computing device;

in response to determining, from the first selective compression configuration and based on the first file having the first file type, that compression of the first file should be offloaded to the compression engine on the drive, preventing the first write request from being sent further down the I/O pathway;

also in response to determining, from the first selective compression configuration and based on the first file having the first file type, that compression of the first file should be offloaded to the compression engine on the drive, identifying a first compression technique that is specified in the first selective compression configuration;

further in response to determining, from the first selective compression configuration and based on the first file having the first file type, that compression of the first file should be offloaded to the compression engine on the drive, sending, by the filter driver and to the compression engine, a write compress request that identifies the first file and the first selective compression configuration to thereby cause the compression engine to compress the first file using the first compression technique and then store the compressed first file on the drive;

receiving, by the filter driver, a notification from the compression engine, the notification confirming that the first file has been compressed using the first compression technique and the compressed first file has been stored on the drive; and

in response to receiving the notification from the compression engine, completing, by the filter driver, the first write request to thereby prevent the first write request from being passed further down the I/O pathway.

2. The method of claim 1 , wherein the drive is a solid-state drive.

3. The method of claim 2 , wherein the compression engine is part of a controller of the solid-state drive.

4. The method of claim 1 , wherein the service configures the first selective compression configuration to define whether compression of files having one of the one or more file types should be offloaded to the compression engine on the drive of the computing device when the first application attempts to write such files to the drive based on one or both of:

evaluating performance of the drive; or

evaluating performance of the computing device.

5. The method of claim 1 , further comprising:

intercepting, by the filter driver, a read request that is attempting to read the first file;

in response to intercepting the read request, interfacing with the operating system to identify the first application as a source of the read request;

accessing the first selective compression configuration to determine whether decompression of files read by the first application should be offloaded to the compression engine; and

in response to determining that the decompression of files read by the first application should be offloaded to the compression engine, handling the read request by sending a decompress request to the compression engine to decompress the first file and then store the decompressed first file in memory on the computing device.

6. The method of claim 5 , further comprising:

decompressing, by the compression engine, the first file.

7. The method of claim 1 , further comprising:

intercepting, at the filter driver, a second write request that is attempting to write a second file to the drive;

in response to intercepting the second write request, interfacing with the operating system to identify a second application as a source of the second write request;

accessing a second selective compression configuration of the plurality of selective compression configurations to determine whether compression of files written by the second application should be offloaded to the compression engine on the drive; and

in response to determining that the compression of files written by the second application should not be offloaded to the compression engine on the drive, passing the second write request down the I/O pathway to thereby allow the second file to be compressed by a CPU or GPU of the computing device and then written to the drive.

8. One or more computer storage media storing computer executable instructions which when executed implement a method for selectively offloading compression or decompression of a file to a hardware controller, the method comprising:

causing a service to be executed on the computing device, the service maintaining a lookup table that defines a plurality of selective compression configurations, each selective compression configuration defining: (1) a particular application to which the selective compression configuration pertains, (2) one or more file types, (3) whether compression of files having one of the one or more file types should be offloaded to a compression engine on a drive of the computing device when the particular application attempts to write such files to the drive, and (4) one or more compression techniques that should be used when compression of such files is offloaded to the compression engine on the drive;

causing a filter driver to be loaded above a storage port driver and below a storage stack in an I/O pathway on a computing device, the storage port driver pertaining to the drive of the computing device;

after the filter driver is loaded, sending, by the service, the lookup table to the filter driver;

receiving, by the filter driver, a first write request that is being passed down the I/O pathway, the first write request attempting to write a first file to the drive;

in response to receiving the first write request, interfacing, by the filter driver, with an operating system of the computing device to identify a first application as a source of the first write request;

determining, by the filter driver, that the first file has a first file type;

querying, by the filter driver, the lookup table received from the service to identify a first selective compression configuration of the plurality of selective compression configurations that pertains to the first application and to determine, from the first selective compression configuration and based on the first file having the first file type, that compression of the first file should be offloaded to the compression engine on the drive rather than allowing the first write request to be passed further down the I/O pathway to thereby cause the first file to be compressed by a CPU or GPU of the computing device;

in response to determining, from the first selective compression configuration and based on the first file having the first file type, that compression of the first file should be offloaded to the compression engine on the drive, preventing the first write request from being sent further down the I/O pathway;

also in response to determining, from the first selective compression configuration and based on the first file having the first file type, that compression of the first file should be offloaded to the compression engine on the drive, identifying a first compression technique that is specified in the first selective compression configuration;

further in response to determining, from the first selective compression configuration and based on the first file having the first file type, that compression of the first file should be offloaded to the compression engine on the drive, sending, by the filter driver and to the compression engine, a write compress request that identifies the first file and the first selective compression configuration to thereby cause the compression engine to compress the first file using the first compression technique and then store the compressed first file on the drive;

receiving, by the filter driver, a notification from the compression engine, the notification confirming that the first file has been compressed using the first compression technique and the compressed first file has been stored on the drive; and

in response to receiving the notification from the compression engine, completing, by the filter driver, the first write request to thereby prevent the first write request from being passed further down the I/O pathway.

9. The computer storage media of claim 8 , wherein the drive is a solid-state drive.

10. The computer storage media of claim 9 , wherein the compression engine is part of a controller of the solid-state drive.

11. The computer storage media of claim 8 , wherein the service configures the first selective compression configuration to define whether compression of files having one of the one or more file types should be offloaded to the compression engine on the drive of the computing device when the first application attempts to write such files to the drive based on one or both of:

evaluating performance of the drive; or

evaluating performance of the computing device.

12. The computer storage media of claim 8 , wherein the method further comprises:

intercepting, by the filter driver, a read request that is attempting to read the first file;

in response to intercepting the read request, interfacing with the operating system to identify the first application as a source of the read request;

accessing the first selective compression configuration to determine whether decompression of files read by the first application should be offloaded to the compression engine; and

in response to determining that the decompression of files read by the first application should be offloaded to the compression engine, handling the read request by sending a decompress request to the compression engine to decompress the first file and then store the decompressed first file in memory on the computing device.

13. The computer storage media of claim 12 , wherein the method further comprises:

decompressing, by the compression engine, the first file.

14. The computer storage media of claim 8 , wherein the method further comprises:

intercepting, at the filter driver, a second write request that is attempting to write a second file to the drive;

in response to intercepting the second write request, interfacing with the operating system to identify a second application as a source of the second write request;

accessing a second selective compression configuration of the plurality of selective compression configurations to determine whether compression of files written by the second application should be offloaded to the compression engine on the drive; and

in response to determining that the compression of files written by the second application should not be offloaded to the compression engine on the drive, passing the second write request down the I/O pathway to thereby allow the second file to be compressed by a CPU or GPU of the computing device and then written to the drive.

15. A computing device comprising:

one or more processors; and

one or more computer storage media storing computer executable instructions which when executed by the one or more processors implement a method for selectively offloading compression or decompression of a file to a hardware controller, the method comprising:

causing a service to be executed on the computing device, the service maintaining a lookup table that defines a plurality of selective compression configurations, each selective compression configuration defining: (1) a particular application to which the selective compression configuration pertains, (2) one or more file types, (3) whether compression of files having one of the one or more file types should be offloaded to a compression engine on a drive of the computing device when the particular application attempts to write such files to the drive, and (4) one or more compression techniques that should be used when compression of such files is offloaded to the compression engine on the drive;

causing a filter driver to be loaded above a storage port driver and below a storage stack in an I/O pathway on a computing device, the storage port driver pertaining to the drive of the computing device;

after the filter driver is loaded, sending, by the service, the lookup table to the filter driver;

receiving, by the filter driver, a first write request that is being passed down the I/O pathway, the first write request attempting to write a first file to the drive;

in response to receiving the first write request, interfacing, by the filter driver, with an operating system of the computing device to identify a first application as a source of the first write request;

determining, by the filter driver, that the first file has a first file type;

querying, by the filter driver, the lookup table received from the service to identify a first selective compression configuration of the plurality of selective compression configurations that pertains to the first application and to determine, from the first selective compression configuration and based on the first file having the first file type, that compression of the first file should be offloaded to the compression engine on the drive rather than allowing the first write request to be passed further down the I/O pathway to thereby cause the first file to be compressed by a CPU or GPU of the computing device;

in response to determining, from the first selective compression configuration and based on the first file having the first file type, that compression of the first file should be offloaded to the compression engine on the drive, preventing the first write request from being sent further down the I/O pathway;

also in response to determining, from the first selective compression configuration and based on the first file having the first file type, that compression of the first file should be offloaded to the compression engine on the drive, identifying a first compression technique that is specified in the first selective compression configuration;

further in response to determining, from the first selective compression configuration and based on the first file having the first file type, that compression of the first file should be offloaded to the compression engine on the drive, sending, by the filter driver and to the compression engine, a write compress request that identifies the first file and the first selective compression configuration to thereby cause the compression engine to compress the first file using the first compression technique and then store the compressed first file on the drive;

receiving, by the filter driver, a notification from the compression engine, the notification confirming that the first file has been compressed using the first compression technique and the compressed first file has been stored on the drive; and

in response to receiving the notification from the compression engine, completing, by the filter driver, the first write request to thereby prevent the first write request from being passed further down the I/O pathway.

16. The computing device of claim 15 , wherein the drive is a solid-state drive.

17. The computing device of claim 16 , wherein the compression engine is part of a controller of the solid-state drive.

18. The computing device of claim 15 , wherein the service configures the first selective compression configuration to define whether compression of files having one of the one or more file types should be offloaded to the compression engine on the drive of the computing device when the first application attempts to write such files to the drive based on one or both of:

evaluating performance of the drive; or

evaluating performance of the computing device.

19. The computing device of claim 15 , wherein the method further comprises:

intercepting, by the filter driver, a read request that is attempting to read the first file;

in response to intercepting the read request, interfacing with the operating system to identify the first application as a source of the read request;

accessing the first selective compression configuration to determine whether decompression of files read by the first application should be offloaded to the compression engine; and

in response to determining that the decompression of files read by the first application should be offloaded to the compression engine, handling the read request by sending a decompress request to the compression engine to decompress the first file and then store the decompressed first file in memory on the computing device.

20. The computing device of claim 15 , wherein the method further comprises:

intercepting, at the filter driver, a second write request that is attempting to write a second file to the drive;

in response to intercepting the second write request, interfacing with the operating system to identify a second application as a source of the second write request;

accessing a second selective compression configuration of the plurality of selective compression configurations to determine whether compression of files written by the second application should be offloaded to the compression engine on the drive; and

in response to determining that the compression of files written by the second application should not be offloaded to the compression engine on the drive, passing the second write request down the I/O pathway to thereby allow the second file to be compressed by a CPU or GPU of the computing device and then written to the drive.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (058014/0560) Recorded Jun 10, 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
Reel/Frame 062022/0473 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (057931/0392) Recorded Jun 10, 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
Reel/Frame 062022/0382 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (057758/0286) Recorded Jun 10, 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
Reel/Frame 061654/0064 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 058014/0560 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 057758/0286 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 057931/0392 →
SECURITY AGREEMENT Recorded Oct 1, 2021
From: DELL PRODUCTS, L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 057682/0830 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2021
From: JANG, YOUNG HWAN; VAJRAVEL, GOKUL THIRUCHENGODE
To: DELL PRODUCTS L.P.
Reel/Frame 056162/0984 →
Continuity (1)
Related Publication 20220357980A1 · Nov 10, 2022
References Cited (24)
US 9825648B1 · Gopal · 2017 [cited by examiner]
US 11231987B1 · Bose · 2022 [cited by examiner]
US 20050015528A1 · Du · 2005 [cited by examiner]
US 20120210066A1 · Joshi · 2012 [cited by examiner]
US 20120213328A1 · Dolazza · 2012 [cited by examiner]
US 20140372715A1 · Bak · 2014 [cited by examiner]
US 20150378613A1 · Koseki · 2015 [cited by examiner]
US 20170116004A1 · Devegowda · 2017 [cited by examiner]
US 20170134041A1 · Haverkamp · 2017 [cited by examiner]
US 20170235497A1 · Shih · 2017 [cited by examiner]
US 20170235752A1 · Shih · 2017 [cited by examiner]
US 20170336981A1 · Garcia · 2017 [cited by examiner]
US 20170371595A1 · De · 2017 [cited by examiner]
US 20180027062A1 · Bernat · 2018 [cited by examiner]
US 20180069568A1 · Zhang · 2018 [cited by examiner]
US 20180196755A1 · Kusuno · 2018 [cited by examiner]
US 20190079799A1 · Kumar · 2019 [cited by examiner]
US 20210036714A1 · Martin · 2021 [cited by examiner]
US 20210141723A1 · Lee · 2021 [cited by examiner]
US 20210281643A1 · Szczepanik · 2021 [cited by examiner]
US 20220086269A1 · Gao · 2022 [cited by examiner]
US 20220197551A1 · Li · 2022 [cited by examiner]
US 20220245071A1 · Vajravel · 2022 [cited by examiner]
CN 108599774A · 2018 [cited by examiner]