Selectively offloading the compression and decompression of files to a hardware controller
AssigneeDell Products L.P.
InventorsYoung Hwan Jang, Gokul Thiruchengode Vajravel
Life of this patent
Estimating the term…
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.
Claims20
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.
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.
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.
Dependencies are inferred from the claim text.