IP Library Granted Patent US 10,733,105
Granted Patent B1
US 10,733,105 · App. 15/489,003 · Granted Aug 4, 2020

Method for pipelined read optimization to improve performance of reading data from data cache and storage units

Inventors: Satish Visvanathan (San Jose, CA); Rahul B. Ugale (Santa Clara, CA)
Assignee: EMC IP HOLDING COMPANY LLC
G06F12/0868G06F3/061G06F3/0655G06F3/0688
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,733,105
App. No.
15/489,003
Granted
Aug 4, 2020
Kind
B1
Abstract

According to some embodiments, a backup storage system receives a request from a client at a storage system for accessing data segments. For each of a first groups of the data segments requested that are stored in a solid state device (SSD) cache, the system requests a first batch job for each of the first groups to retrieve the first groups of the data segments from the SSD cache via a first set of input/output (IO) threads. For each of a second groups of the data segments requested that are not stored in the SSD cache, the system requests a second batch job for each of the second groups to retrieve the second groups of the data segments from storage units of the storage system via a second set of input/output (IO) threads. The system assembles received segments and returns them to the client altogether.

Claims (41)

1. A computer-implemented method for accessing data segments stored in a storage system, the method comprising:

receiving a request from a client at the storage system for accessing a plurality of data segments associated with a file object;

for a first group of data segments of the plurality of data segments that are found to be stored in a solid state device (SSD) that is operative as a cache memory device, requesting a set of first batch jobs for the first group of data segments to retrieve each data segment of the first group of data segments from the cache memory device via a first set of one or more input/output (IO) threads wherein each of the first batch jobs consumes one of the first set of one or more IO threads;

for a second group of data segments of the plurality of data segments that are not found to be stored in the cache memory device, requesting a set of second batch jobs, concurrently with the requesting of the set of first batch jobs for the first group of data segments in the cache memory device such that the requests will be fulfilled in a time required to fulfill one request having a largest latency, for the second group of data segments to retrieve each data segment of the second group of data segments from one or more storage units of the storage system via a second set of one or more input/output (IO) threads, and populating each data segment of the second group of data segments to the cache memory device such that subsequent requests for each data segment of the second group of data segments are retrieved from the cache memory device, wherein each of the second batch jobs consumes one of the second set of one or more IO threads and input/output access paths from the client to the SSD are independent from input/output access paths from the client to the one or more storage units;

assembling each data segment of the first and second groups of data segments received via the first set and the second set of IO threads into one or more requested sequential data segments; and

returning the one or more requested sequential data segments to the client altogether.

2. The computer-implemented method of claim 1 , further comprising:

calculating a fingerprint based on a data segment of the plurality of data segments associated with the file object; and

looking up an entry in an in-memory index based on the fingerprint to determine if the data segment used for calculating the fingerprint is stored in the cache memory device.

3. The computer-implemented method of claim 2 , further comprising:

for each data segment of the second group of data segments populated to the cache memory device, inserting an entry to the in-memory index based on a fingerprint of each data segment of the second group of data segments.

4. The computer-implemented method of claim 1 , wherein one or more data segments of the first group of data segments on the cache memory device are encrypted and compressed segments.

5. The computer-implemented method of claim 1 , wherein each of the first batch jobs is independent of each of the second batch jobs.

6. A non-transitory machine-readable medium having instructions stored therein, which when executed by a processor, cause the processor to perform operations to sort data elements in a data array, the operations comprising:

receiving a request from a client at a storage system for accessing a plurality of data segments associated with a file object;

for a first group of data segments of the plurality of data segment that are found to be stored in a solid state device (SSD) that is operative as a cache memory device, requesting a set of first batch jobs for the first group of data segments to retrieve each data segment of the first group of data segments from the cache memory device via a first set of one or more input/output (IO) threads, wherein each of the first batch jobs consumes one of the first set of one or more IO threads;

for a second group of data segments of the plurality of data segments that are not found to be stored in the cache memory device, requesting a set of second batch jobs, concurrently with the requesting of the set of first batch jobs for the first group of data segments in the cache memory device such that the requests will be fulfilled in a time required to fulfill one request having a largest latency, for the second group of data segments to retrieve each data segment of the second group of data segments from one or more storage units of the storage system via a second set of one or more input/output (IO) threads, and populating each data segment of the second group of data segments to the cache memory device such that subsequent requests for each data segment of the second group of data segments are retrieved from the cache memory device, wherein each of the second batch jobs consumes one of the second set of one or more IO threads and input/output access paths from the client to the SSD are independent from input/output access paths from the client to the one or more storage units;

assembling each data segment of the first and second groups of data segments received via the first set and the second set of IO threads into one or more requested sequential data segments; and

returning the one or more requested sequential data segments to the client altogether.

7. The non-transitory machine-readable medium of claim 6 , further comprising:

calculating a fingerprint based on a data segment of the plurality of data segments associated with the file object; and

looking up an entry in an in-memory index based on the fingerprint to determine if the data segment used for calculating the fingerprint is stored in the cache memory device.

8. The non-transitory machine-readable medium of claim 7 , further comprising:

for each data segment of the second group of data segments populated to the cache memory device, inserting an entry to the in-memory index based on a fingerprint of each data segment of the second group of data segments.

9. The non-transitory machine-readable medium of claim 6 , wherein one or more data segments of the first group of data segments on the cache memory device are encrypted and compressed segments.

10. The non-transitory machine-readable medium of claim 6 , wherein each of the first batch jobs is independent of each of the second batch jobs.

11. A data processing system, comprising:

a processor; and

a memory coupled to the processor to store instructions, which when executed by the processor, cause the processor to perform operations, the operations including

receiving a request from a client at a storage system for accessing a plurality of data segments associated with a file object;

for a first group of data segments of the plurality of data segments that are stored in a solid state device SSD device that is operative as a cache memory, requesting a set of first batch jobs for the first of data segments to retrieve each data segment of the first group of the data segments from the cache memory device via a first set of one or more input/output (IO) threads, wherein each of the first batch jobs consumes one of the first set of one or more IO threads;

for a second group of data segments of the plurality of data segments that are not found to be stored in the cache memory device, requesting a set of second batch jobs, concurrently with the requesting of the set of first batch jobs for the first group of data segments in the cache memory device such that the requests will be fulfilled in a time required to fulfill one request having a largest latency, for the second group of data segments to retrieve each data segment of the second group of data segments from one or more storage units of the storage system via a second set of one or more input/output (IO) threads, and populating each data segment of the second group of data segments to the cache memory device such that subsequent requests for each data segment of the second group of data segments are retrieved from the cache memory device, wherein each of the second batch jobs consumes one of the second set of one or more IO threads and input/output access paths from the client to the SSD are independent from input/output access paths from the client to the one or more storage units;

assembling each data segment of the first and second groups of data segments received via the first set and the second set of IO threads into one or more requested sequential data segments; and

returning the one or more requested sequential data segments to the client altogether.

12. The data processing system of claim 11 , further comprising:

calculating a fingerprint based on a data segment of the plurality of data segments associated with the file object; and

looking up an entry in an in-memory index based on the fingerprint to determine if the data segment used for calculating the fingerprint is stored in the cache memory device.

13. The data processing system of claim 12 , further comprising:

for each data segment of the second group of data segments populated to the cache memory device, inserting an entry to the in-memory index based on a fingerprint of each data segment of the second group of data segments.

14. The data processing system of claim 11 , wherein one or more data segments of the first group of data segments on the cache memory device are encrypted and compressed segments.

15. The data processing system of claim 11 , wherein each of the first batch jobs is independent of each of the second batch jobs.

Assignments (8)
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 (042769/0001) Recorded Apr 26, 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 (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 059803/0802 →
RELEASE OF SECURITY INTEREST AT REEL 042768 FRAME 0585 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058297/0536 →
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 21, 2019
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 049452/0223 →
PATENT SECURITY INTEREST (NOTES) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 042769/0001 →
PATENT SECURITY INTEREST (CREDIT) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 042768/0585 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2017
From: VISVANATHAN, SATISH; UGALE, RAHUL B.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 042034/0297 →