IP Library Granted Patent US 11,106,365
Granted Patent B1
US 11,106,365 · App. 16/786,422 · Granted Aug 31, 2021

Flow control of input/output (IO) in a synchronous replication session

Inventors: Svetlana Kronrod (Concord, MA); Anton Kucherov (Dudley, MA); Vladimir Shveidel (Pardes-Hana, IL); Xiangping Chen (Sherborn, MA)
Assignee: EMC IP HOLDING COMPANY LLC
G06F3/0611G06F3/065G06F3/067G06F11/2082G06F11/2089G06F16/152G06F16/2322G06F3/0653
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,106,365
App. No.
16/786,422
Granted
Aug 31, 2021
Kind
B1
Abstract

An aspect of performing flow control of IO in a synchronous replication session between a local storage and a remote storage of a storage system includes tracking an amount of time an input/output (IO) request is processed at the remote storage including an amount of time the IO request is in transmit to and from the remote storage system. The amount of time indicates a remote latency value. An aspect also includes tracking an amount of time the IO request is processed at the local storage and calculating a difference between the remote latency value and the amount of time the IO request is processed at the local storage. The difference indicates a local latency value. An aspect further includes modifying an amount of IO requests admitted at the storage system as a function of the local latency value.

Claims (58)

1. A method for performing flow control for a synchronous replication session between a local storage and a remote storage in a storage system, the method comprising:

tracking an amount of time an input/output (IO) request is processed at the remote storage including an amount of time the IO request is in transmit to and from the remote storage system, the amount of time indicating a remote latency value;

tracking an amount of time the IO request is processed at the local storage;

calculating a difference between the remote latency value and the amount of time the IO request is processed at the local storage, the difference indicating a local latency value; and

modifying an amount of IO requests admitted at the storage system as a function of the local latency value.

2. The method of claim 1 , wherein tracking the amount of time the IO request is processed at the remote storage including the amount of time the IO request is in transit includes:

recording, by the local storage, a first timestamp upon receiving the IO at the local storage;

recording, by the local storage, a second timestamp upon transmitting the IO request to the remote storage;

recording, by the local storage, a third timestamp upon receiving an acknowledgment from the remote storage that the IO request has completed at the remote storage; and

calculating a difference between the third timestamp and the second timestamp, the difference indicating the remote latency value.

3. The method of claim 2 , wherein tracking an amount of time the IO request is processed at the local storage includes:

recording, at the local storage, a fourth timestamp upon completion of processing of the IO at the local storage; and

calculating a difference between the fourth timestamp and the first timestamp.

4. The method of claim 3 , wherein calculating a difference between the remote latency value and the amount of time the IO request is processed at the local storage comprises subtracting the remote latency value from the difference between the fourth timestamp and the first timestamp.

5. The method of claim 1 , wherein modifying the amount of IO requests admitted to the storage system as a function of the local latency value comprises increasing an amount of the IO requests admitted to the storage system upon determining the local latency value is below a threshold value.

6. The method of claim 1 , wherein modifying the amount of IO requests admitted to the storage system as a function of the local latency value comprises decreasing an amount of the IO requests admitted to the storage system upon determining the local latency value exceeds a threshold value.

7. The method of claim 1 , wherein modifying the amount of IO requests admitted to the storage system as a function of the local latency value comprises maintaining an amount of the IO requests admitted to the storage system upon determining the local latency value meets a threshold value.

8. The method of claim 1 , wherein the storage system includes a content addressable storage system.

9. A system for performing flow control for a synchronous replication session between a local storage and a remote storage of a storage system, the system comprising:

a memory comprising computer-executable instructions; and

a processor operable by a storage system, the processor executing the computer-executable instructions, the computer-executable instructions when executed by the processor cause the processor to perform operations comprising:

tracking an amount of time an input/output (IO) request is processed at the remote storage including an amount of time the IO request is in transmit to and from the remote storage system, the amount of time indicating a remote latency value;

tracking an amount of time the IO request is processed at the local storage;

calculating a difference between the remote latency value and the amount of time the IO request is processed at the local storage, the difference indicating a local latency value; and

modifying an amount of IO requests admitted at the storage system as a function of the local latency value.

10. The system of claim 9 , wherein tracking the amount of time the IO request is processed at the remote storage including the amount of time the IO request is in transit includes:

recording, by the local storage, a first timestamp upon receiving the IO at the local storage;

recording, by the local storage, a second timestamp upon transmitting the IO request to the remote storage;

recording, by the local storage, a third timestamp upon receiving an acknowledgment from the remote storage that the IO request has completed at the remote storage; and

calculating a difference between the third timestamp and the second timestamp, the difference indicating the remote latency value.

11. The system of claim 10 , wherein tracking an amount of time the IO request is processed at the local storage includes:

recording, at the local storage, a fourth timestamp upon completion of processing of the IO at the local storage; and

calculating a difference between the fourth timestamp and the first timestamp.

12. The system of claim 11 , wherein calculating a difference between the remote latency value and the amount of time the IO request is processed at the local storage comprises subtracting the remote latency value from the difference between the fourth timestamp and the first timestamp.

13. The system of claim 9 , wherein modifying the amount of IO requests admitted to the storage system as a function of the local latency value comprises:

increasing an amount of the IO requests admitted to the storage system upon determining the local latency value is below a threshold value;

decreasing an amount of the IO requests admitted to the storage system upon determining the local latency value exceeds a threshold value; and

maintaining an amount of the IO requests admitted to the storage system upon determining the local latency value meets a threshold value.

14. The system of claim 9 , wherein the storage system includes a content addressable storage system.

15. A computer program product performing flow control for a synchronous replication session between a local storage and a remote storage of a storage system, the computer program product embodied on a non-transitory computer readable medium, the computer program product including instructions that, when executed by a computer, causes the computer to perform operations comprising:

tracking an amount of time an input/output (IO) request is processed at the remote storage including an amount of time the IO request is in transmit to and from the remote storage system, the amount of time indicating a remote latency value;

tracking an amount of time the IO request is processed at the local storage;

calculating a difference between the remote latency value and the amount of time the IO request is processed at the local storage, the difference indicating a local latency value; and

modifying an amount of IO requests admitted at the storage system as a function of the local latency value.

16. The computer program product of claim 15 , wherein tracking the amount of time the IO request is processed at the remote storage including the amount of time the IO request is in transit includes:

recording, by the local storage, a first timestamp upon receiving the IO at the local storage;

recording, by the local storage, a second timestamp upon transmitting the IO request to the remote storage;

recording, by the local storage, a third timestamp upon receiving an acknowledgment from the remote storage that the IO request has completed at the remote storage; and

calculating a difference between the third timestamp and the second timestamp, the difference indicating the remote latency value.

17. The computer program product of claim 16 , wherein tracking an amount of time the IO request is processed at the local storage includes:

recording, at the local storage, a fourth timestamp upon completion of processing of the IO at the local storage; and

calculating a difference between the fourth timestamp and the first timestamp.

18. The computer program product of claim 17 , wherein calculating a difference between the remote latency value and the amount of time the IO request is processed at the local storage comprises subtracting the remote latency value from the difference between the fourth timestamp and the first timestamp.

19. The computer program product of claim 15 , wherein modifying the amount of IO requests admitted to the storage system as a function of the local latency value comprises:

increasing an amount of the IO requests admitted to the storage system upon determining the local latency value is below a threshold value;

decreasing an amount of the IO requests admitted to the storage system upon determining the local latency value exceeds a threshold value; and

maintaining an amount of the IO requests admitted to the storage system upon determining the local latency value meets a threshold value.

20. The computer program product of claim 15 , wherein the storage system includes a content addressable storage system.

Assignments (13)
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 (052851/0081) 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 060436/0441 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0917) 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 060436/0509 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052852/0022) 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 060436/0582 →
RELEASE OF SECURITY INTEREST AT REEL 052771 FRAME 0906 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0298 →
SECURITY INTEREST Recorded Jun 5, 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 052852/0022 →
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 INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0081 →
SECURITY INTEREST Recorded Jun 5, 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 052851/0917 →
SECURITY AGREEMENT Recorded May 28, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052771/0906 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 18, 2020
From: KRONROD, SVETLANA; KUCHEROV, ANTON; SHVEIDEL, VLADIMIR; CHEN, XIANGPING
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 051845/0182 →