IP Library Granted Patent US 10,705,753
Granted Patent B2
US 10,705,753 · App. 15/971,310 · Granted Jul 7, 2020

Fan-out asynchronous replication logical level caching

Inventors: Anton Kucherov (Dudley, MA); David Meiri (Somerville, MA)
Assignee: EMC IP Holding Company LLC
G06F3/065G06F3/0619G06F3/0631G06F3/0641G06F3/0689G06F11/108G06F11/1092G06F11/2094G06F16/137G06F16/27G06F2201/84
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,705,753
App. No.
15/971,310
Granted
Jul 7, 2020
Kind
B2
Abstract

A response is provided to a request to replicate a long hash from a production system to a plurality of target systems. Replication of the long hash to each target systems is associated with a corresponding replication session. The production system comprises a processor and a memory storing a plurality of long hashes, each long hash computed based on a data packet. A replication session is established for each target system. The long hash is retrieved for one of the replication sessions and stored in a logical cache configured as part of a logical layer of a computer system and to allow other replication sessions to access the long hash stored therein. Dynamic tracking of when each of the replication sessions accesses the long hash stored in the logical cache, takes place. The long hash is cleared from the logical cache when all replication sessions have accessed it.

Claims (73)

1. A computer-implemented method, comprising:

responding to a request to replicate one or more pages of data from a production system to a plurality of target systems, wherein the replication of the pages of data to the plurality of target systems is associated with a corresponding replication session to each of the plurality of respective target systems, wherein the production system comprises a processor having access to a memory and to a physical cache, wherein the physical cache is configured for storing a plurality of pages of data needed for the replication of the one or more pages of data to the plurality of target systems, each respective page of data having a respective hash signature computed based on the respective page of data and a respective hash handle that is used to access the respective hash signature;

determining, for each of the one or more pages, a total number of corresponding replications needed to replicate the respective page of data to the plurality of target systems;

establishing the corresponding replication session for each of the plurality of target systems;

receiving a request for the respective page of data based on a first hash handle;

determining a type of the received request, wherein the type indicates whether the request is for one of a replication session and a non-replication session;

if it is the first time the first hash handle has been requested, then:

retrieving the respective page of data associated with the first hash handle;

storing the respective page of data in the physical cache;

dynamically tracking when each of the corresponding replication sessions requests the respective page of data based on the first hash handle, to determine when the total number of corresponding replications has taken place, wherein, as part of the dynamic tracking, request types corresponding to non-replication sessions are not counted towards the total number of corresponding replications;

if it is not the first time the first hash handle has been requested then:

retrieving the respective page of data from the physical cache; and

based on the dynamic tracking, clearing the respective page of data from the physical cache when all of the corresponding replication sessions have requested the respective page of data based on the first hash handle; and

clearing the respective page of data from the physical cache when a determination is made that at least one of the following conditions exists: all of the corresponding replication sessions that require the respective page of data in the physical cache, have accessed the respective page in the physical cache and the total number of corresponding replications has been reached;

wherein at least one of the determination of the type of received request, the dynamic tracking of the requests for the respective page of data and the clearing of the respective page of data from the physical cache, is configured so that the processor requires only one physical cache to respond to the request to replicate the one or more pages of data from the production system to the plurality of target systems.

2. The method of claim 1 , wherein the corresponding replication sessions are configured to begin at substantially the same time.

3. The method of claim 1 , wherein retrieving the respective page of data further comprises retrieving the respective page of data for the one of the corresponding replication sessions that is the first of the corresponding replication sessions that is ready to receive the respective page of data.

4. The method of claim 1 , wherein dynamically tracking further comprises:

setting a counter to track when each corresponding replication session has requested the respective page of data, the counter having a counter value;

changing the counter value upon each subsequent replication session accessing the respective page of data stored in the physical cache; and

clearing the respective page of data from the physical cache when the counter value indicates that all replication sessions have accessed the respective page of data.

5. The method of claim 1 , wherein the plurality of target systems correspond to a predetermined number of target systems and the predetermined number is the same as the total number of corresponding replications.

6. The method of claim 1 , wherein the physical cache is configured to perform the dynamic tracking.

7. The method of claim 1 , wherein the physical cache is configured to dynamically track at least one of: the type of the received request and the total number of replications.

8. A computer program product including a non-transitory computer readable storage medium having computer program code encoded thereon that when executed on a processor of a computer causes the computer to operate a storage system, the computer program product comprising:

computer program code for responding to a request to replicate one or more pages of data from a production system to a plurality of target systems, wherein the replication of the pages of data to the plurality of target systems is associated with a corresponding replication session to each of the plurality of respective target systems, wherein the production system comprises a processor having access to a memory and to a physical cache, wherein the physical cache is configured for storing a plurality of pages of data needed for the replication of the one or more pages of data to the plurality of target systems, each respective page of data having a respective hash signature computed based on the respective page of data and a respective hash handle that is used to access the respective hash signature;

computer program code for determining, for each of the one or more pages, a total number of corresponding replications needed to replicate the respective page of data to the plurality of target systems;

computer program code for establishing the corresponding replication session for each of the plurality of target systems;

computer program code for receiving a request for the respective page of data based on a first hash handle;

computer program code for determining a type of the received request, wherein the type indicates whether the request is for one of a replication session and a non-replication session;

computer program code for determining if it is the first time the first hash handle has been requested, and if it is the first time the given hash handle has been requested then:

computer program code for retrieving the respective page of data associated with the first hash handle;

computer program code for storing the respective page of data in a physical cache;

computer program code for dynamically tracking when each of the corresponding replication sessions requests the respective page of data based on the first hash handle, to determine when the total number of corresponding replications has taken place, wherein, as part of the dynamic tracking, request types corresponding to non-replication sessions are not counted towards the total number of corresponding replications;

computer program code for determining if it is not the first time the first hash handle has been requested, and if it is not the first time the first hash handle has been requested, then:

computer program code for retrieving the respective page of data from the physical cache; and

computer program code for clearing the respective page of data from the physical cache when all of the corresponding replication sessions have requested the respective page of data based on the first hash handle, based on the dynamic tracking; and

computer program code for clearing the respective page of data from the physical cache when a determination is made that at least one of the following conditions exists: all of the corresponding replication sessions that require the respective page of data in the physical cache, have accessed the respective page in the physical cache and the total number of corresponding replications has been reached;

wherein at least one of the determination of the type of received request, the dynamic tracking of the requests for the respective page of data and the clearing of the respective page of data from the physical cache, is configured so that the processor requires only one physical cache to respond to the request to replicate the one or more pages of data from the production system to the plurality of target systems.

9. The computer program product of claim 8 , further comprising computer program code for retrieving the respective page of data for the one of the corresponding replication sessions that is the first of the corresponding replication sessions that is ready to receive the respective page of data.

10. The computer program product of claim 8 , further comprising:

computer program code for setting a counter to track when each corresponding replication session has requested the respective page of data, the counter having a counter value;

computer program code for changing the counter value upon each subsequent replication session accessing the respective page of data stored in the physical cache; and

computer program code for clearing the respective page of data from the physical cache when the counter value indicates that all replication sessions have accessed the respective page of data.

11. The computer program product of claim 10 wherein the plurality of target systems correspond to a predetermined number of target systems and the predetermined number is the same as the total number of corresponding replications.

12. The computer program product of claim 8 further comprising computer program code to configure the physical cache to perform the dynamic tracking.

13. The computer program product of claim 8 , further comprising computer program code for configuring the physical cache to dynamically track at least one of: the type of the received request and the total number of replications.

14. A system, comprising;

a processor; and

a non-volatile first memory in operable communication with the processor and storing computer program code that when executed on the processor causes the processor to execute a process operable to perform the operations of:

responding to a request to replicate one or more pages of data from a production system to a plurality of target systems, wherein the replication of the pages of data to the plurality of target systems is associated with a corresponding replication session to each of the plurality of respective target systems, wherein the production system comprises a processor having access to a second memory and to a physical cache, wherein the physical cache is configured for storing a plurality of pages of data needed for the replication of the one or more pages of data to the plurality of target systems, each respective page of data having a respective hash signature computed based on the respective page of data and a respective hash handle that is used to access the respective hash signature;

determining, for each of the one or more pages, a total number of corresponding replications needed to replicate the respective page of data to the plurality of target systems;

establishing the corresponding replication session for each of the plurality of target systems;

receiving a request for the respective page of data based on a first hash handle;

determining a type of the received request, wherein the type indicates whether the request is for one of a replication session and a non-replication session;

if it is the first time the first hash handle has been requested, then:

retrieving the respective page of data associated with the first hash handle;

storing the respective page of data in a physical cache;

dynamically tracking when each of the corresponding replication sessions requests the respective page of data based on the first hash handle, to determine when the total number of corresponding replications has taken place, wherein, as part of the dynamic tracking, request types corresponding to non-replication sessions are not counted towards the total number of corresponding replications;

if it is not the first time the first hash handle has been requested then:

retrieving the respective page of data from the physical cache; and

based on the dynamic tracking, clearing the respective page of data from the physical cache when all of the corresponding replication sessions have requested the respective page of data based on the first hash handle; and

clearing the respective page of data from the physical cache when a determination is made that at least one of the following conditions exists: all of the corresponding replication sessions that require the respective page of data in the physical cache, have accessed the respective page in the physical cache and the total number of corresponding replications has been reached;

wherein at least one of the determination of the type of received request, the dynamic tracking of the requests for the respective page of data and the clearing of the respective page of data from the physical cache, is configured so that the processor requires only one physical cache to respond to the request to replicate the one or more pages of data from the production system to the plurality of target systems.

15. The system of claim 14 , wherein the corresponding replication sessions are configured to begin at substantially the same time.

16. The system of claim 14 , wherein retrieving the respective page of data further comprises retrieving the respective page of data for the one of the corresponding replication sessions that is the first of the corresponding replication sessions that is ready to receive the respective page of data.

17. The system of claim 14 , wherein dynamically tracking further comprises computer program code that when executed on the processor causes the process to execute a process operable to perform the operations of:

setting a counter to track when each corresponding replication session has requested the respective page of data, the counter having a counter value;

changing the counter value upon each subsequent replication session accessing the respective page of data stored in the physical cache; and

clearing the respective page of data from the physical cache when the counter value indicates that all replication sessions have accessed the respective page of data.

18. The system of claim 14 , wherein the plurality of target systems correspond to a predetermined number of target systems and the predetermined number is the same as the total number of corresponding replications.

19. The system of claim 14 , wherein the physical cache is configured to perform the dynamic tracking.

20. The system of claim 14 , wherein the physical cache is configured to dynamically track at least one of: the type of the received request and the total number of replications.

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 (046366/0014) Recorded May 20, 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 060450/0306 →
RELEASE OF SECURITY INTEREST AT REEL 046286 FRAME 0653 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0093 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2018
From: KUCHEROV, ANTON; MEIRI, DAVID
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 046154/0319 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Jun 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046286/0653 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jun 1, 2018
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 046366/0014 →
Continuity (1)
Related Publication 20190339871A1 · Nov 7, 2019