IP Library Granted Patent US 11,409,666
Granted Patent B2
US 11,409,666 · App. 16/692,145 · Granted Aug 9, 2022

Techniques for providing I/O hints using I/O flags

Inventors: Gabriel Benhanokh (Tel-Aviv, IL); Sanjib Mallick (Bangalore, IN); Arieh Don (Newton, MA)
Assignee: EMC IP Holding Company LLC
G06F12/122G06F3/0656G06F12/0868G06F3/061G06F12/126
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,409,666
App. No.
16/692,145
Granted
Aug 9, 2022
Kind
B2
Abstract

Techniques for processing I/O operations may include: issuing, by a process of an application on a host, an I/O operation; determining, by a driver on the host, that the I/O operation is a read operation directed to a logical device used as a log to log writes performed by the application, wherein the read operation reads first data stored at one or more logical addresses of the logical device; storing, by the driver, an I/O flag in the I/O operation, wherein the I/O flag has a first flag value denoting an expected read frequency associated with the read operation; sending the I/O operation from the host to the data storage system; and performing first processing of the I/O operation on the data storage system, wherein said first processing includes using the first flag value in connection with caching the first data in a cache of the data storage system.

Claims (45)

1. A method of processing I/O operations comprising:

issuing, by a process of an application on a host, a plurality of I/O operations;

determining, by a driver on the host, that the plurality of I/O operations are a plurality of read operations that read first data from logical addresses of a logical device that is a block-based logical device exposed, by a data storage array to the host, over a network through at least one path between the host and the data storage array, wherein the logical device is used as a log to record writes performed by the application, and wherein the logical device is configured and provisioned from physical non-volatile storage of one or more backend physical storage devices of the data storage array;

determining, by the driver on the host, that a read data payload of each of the plurality of read operations is larger than a specified threshold size, that the application is a database application reading data from the logical device used as a database log device, and that the plurality of read operations denote a sequential read pattern of read operations that read data from the logical device in a logical sequential order based on consecutive logical addresses of the logical device; and

responsive to determining that a read data payload of each of the plurality of read operations is larger than the specified threshold size, that the application is the database application reading data from the logical device used as the database log device, and that the plurality of read operations denote the sequential read pattern, performing first processing comprising:

storing, by the driver, an I/O flag in each of the plurality of read operations, wherein the I/O flag of said each read operation has a first flag value denoting an expected read frequency associated with a portion of the first data read by said each read operation;

sending the plurality of read operations, each including the I/O flag, over the network on the at least one path from the host to the data storage array; and

performing second processing of the plurality of read operations on the data storage array, wherein said second processing includes using the first flag value included in each of the plurality of read operations in connection with caching, in a cache of the data storage array, the first data that is read by the plurality of read operations from the log of recorded writes performed by the application.

2. The method of claim 1 , wherein the driver is a multi-path I/O driver of the host.

3. The method of claim 1 , wherein the driver determines that the plurality of read operations are directed to the logical device used as the database log device to log writes performed by the database application based on a process name associated with the process that issued the plurality of read operations.

4. The method of claim 3 , wherein the process name includes a first portion and a second portion, and wherein the first portion denotes a particular process of the database application and the second portion is a customized portion denoting a particular instance of the database application.

5. The method of claim 4 , wherein the first portion of the process name includes a predetermined string used to identify the process that reads records from the database log device for the database application.

6. The method of claim 1 , wherein the first flag value is one of a plurality of predefined flag values, and wherein the first flag value indicates that the first data, stored at the logical addresses of the logical device, is expected to be read once by the database application.

7. The method of claim 6 , wherein the method includes:

storing the first data at a one or more first cache locations in the cache of the data storage array;

returning the first data to the host; and

responsive to returning the first data to the host, evicting the first data from the one or more first cache locations.

8. The method of claim 7 , wherein said evicting includes marking each of the one or more first cache locations as free and available for use.

9. The method of claim 1 , further comprising:

issuing one or more additional I/O operations by a client performing a data service on the data storage array.

10. The method of claim 9 , wherein the client is an internal client of the data storage array and wherein the internal client includes code that performs processing for a data storage system service or function and wherein the code of the internal client is internally located within the data storage array.

11. The method of claim 10 , wherein the internal client performs backend verification processing of data and associated metadata stored on non-volatile physical storage devices of the data storage array, and wherein the one or more additional I/O operations includes a second read operation that reads second data from a target location, wherein the second read operation includes an I/O flag having a flag value indicating that the second data, stored at the target location, is expected to be read once by the internal client.

12. The method of claim 10 , wherein the internal client performs compressibility check processing that determines whether data stored on non-volatile physical storage devices of the data storage array is compressible, and wherein the one or more additional I/O operations includes a second read operation that reads second data from a target location, wherein the second read operation includes an I/O flag having a flag value indicating that the second data, stored at the target location, is expected to be read once by the internal client.

13. The method of claim 10 , wherein the internal client performs relocation of data portions among non-volatile physical storage devices of the data storage array, and wherein the one or more additional I/O operations includes a second read operation and a write operation, wherein the second read operation reads second data from a source location of a source device and wherein the write operation writes the second data to a target location of a target device, wherein each of the second read operation and the write operation includes an I/O flag having a flag value indicating that the second data is expected to be read and written infrequently by the internal client.

14. The method of claim 10 , wherein the internal client performs processing to rebuild a failed drive of a RAID (Redundant Array of Independent Disks) group, and wherein the one or more additional I/O operations includes one or more read operations that read data from at one or more healthy drives of the RAID group, and wherein the one or more additional I/O operations includes one or more write operations that write data to a replacement drive that replaces the failed drive, wherein each of the one or more read operations and each of the one or more write operations includes an I/O flag having a flag value indicating that the data associated with said each operation is expected to be read and written infrequently by the internal client.

15. The method of claim 10 , wherein the internal client performs recovery processing in connection with recovering from a power failure experienced by the data storage array, wherein the one or more additional I/O operations includes a second read operation that reads recovery information, and wherein the second read operation includes an I/O flag having a flag value indicating that the data associated with the second read operation is expected to be infrequently read.

16. The method of claim 1 , wherein the database application issues said plurality of read operations that read log data from the logical device used as the database log device in connection with performing data verification and consistency checking of the log data.

17. A system comprising:

one or more processors; and

one or more memories comprising code stored thereon that, when executed, performs a method of processing I/O operations comprising:

issuing, by a process of an application on a host, a plurality of I/O operations;

determining, by a driver on the host, that the plurality of I/O operations are a plurality of read operations that read first data from logical addresses of a logical device that is a block-based logical device exposed, by a data storage array to the host, over a network through at least one path between the host and the data storage array, wherein the logical device is used as a log to record writes performed by the application, and wherein the logical device is configured and provisioned from physical non-volatile storage of one or more backend physical storage devices of the data storage array;

determining, by the driver on the host, that a read data payload of each of the plurality of read operations is larger than a specified threshold size, that the application is a database application reading data from the logical device used as a database log device, and that the plurality of read operations denote a sequential read pattern of read operations that read data from the logical device in a logical sequential order based on consecutive logical addresses of the logical device; and

responsive to determining that a read data payload of each of the plurality of read operations is larger than the specified threshold size, that the application is the database application reading data from the logical device used as the database log device, and that the plurality of read operations denote the sequential read pattern, performing first processing comprising:

storing, by the driver, an I/O flag in each of the plurality of read operations, wherein the I/O flag of said each read operation has a first flag value denoting an expected read frequency associated with a portion of the first data read by said each read operation;

sending the plurality of read operations, each including the I/O flag, over the network on the at least one path from the host to the data storage array; and

performing second processing of the plurality of read operations on the data storage array, wherein said second processing includes using the first flag value included in each of the plurality of read operations in connection with caching, in a cache of the data storage array, the first data that is read by the plurality of read operations from the log of recorded writes performed by the application.

18. A non-transitory computer readable medium comprising code stored thereon that, when executed, performs a method of processing I/O operations comprising:

issuing, by a process of an application on a host, a plurality of I/O operations;

determining, by a driver on the host, that the plurality of I/O operations are a plurality of read operations that read first data from logical addresses of a logical device that is a block-based logical device exposed, by a data storage array to the host, over a network through at least one path between the host and the data storage array, wherein the logical device is used as a log to record writes performed by the application, and wherein the logical device is configured and provisioned from physical non-volatile storage of one or more backend physical storage devices of the data storage array;

determining, by the driver on the host, that a read data payload of each of the plurality of read operations is larger than a specified threshold size, that the application is a database application reading data from the logical device used as a database log device, and that the plurality of read operations denote a sequential read pattern of read operations that read data from the logical device in a logical sequential order based on consecutive logical addresses of the logical device; and

responsive to determining that a read data payload of each of the plurality of read operations is larger than the specified threshold size, that the application is the database application reading data from the logical device used as the database log device, and that the plurality of read operations denote the sequential read pattern, performing first processing comprising:

storing, by the driver, an I/O flag in each of the plurality of read operations, wherein the I/O flag of said each read operation has a first flag value denoting an expected read frequency associated with a portion of the first data read by said each read operation;

sending the plurality of read operations, each including the I/O flag, over the network on the at least one path from the host to the data storage array; and

performing second processing of the plurality of read operations on the data storage array, wherein said second processing includes using the first flag value included in each of the plurality of read operations in connection with caching, in a cache of the data storage array, the first data that is read by the plurality of read operations from the log of recorded writes performed by the application.

Assignments (9)
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 (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 (052216/0758) 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 IP HOLDING COMPANY LLC
Reel/Frame 060438/0680 →
RELEASE OF SECURITY INTEREST AF REEL 052243 FRAME 0773 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0152 →
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 →
SECURITY AGREEMENT Recorded Mar 26, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052243/0773 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 24, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052216/0758 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 22, 2019
From: BENHANOKH, GABRIEL; MALLICK, SANJIB; DON, ARIEH
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 051087/0452 →