IP Library Granted Patent US 10,509,675
Granted Patent B2
US 10,509,675 · App. 15/887,599 · Granted Dec 17, 2019

Dynamic allocation of worker nodes for distributed replication

Inventors: Atul Avinash Karmarkar (San Jose, CA); Philip Shilane (Newtown, PA); Kevin Xu (Warren, NJ); Abhinav Duggal (Milpitas, CA)
Assignee: EMC IP Holding Company LLC
G06F9/5011G06F9/546G06F16/27
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,509,675
App. No.
15/887,599
Granted
Dec 17, 2019
Kind
B2
Abstract

A set of tasks, associated with a replication job, are generated for replicating from a source to destination site. An initial number of worker nodes are allocated to process the tasks. Each task involves a first type of worker node at the source site, a second type of worker node at the destination site, and includes one or more of copying an object from the source site to the destination site, or deleting an object from the destination site. The replication job is monitored. Based on the monitoring, a number of worker nodes is adjusted from the initial number to a new number, different from the initial number.

Claims (104)

1. A method comprising:

generating a set of tasks associated with a replication job, the replication job comprising replicating from a source site to a destination site;

allocating an initial number of worker nodes to process the set of tasks, each task involving a first type of worker node at the source site, a second type of worker node at the destination site, and comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

monitoring the replication job;

based on the monitoring, adjusting at least one of a number of worker nodes of the first type or a number of worker nodes of the second type to process the set of tasks from the initial number to a new number, different from the initial number;

placing the set of tasks onto a message queue for worker nodes of the first type to retrieve and process in conjunction with worker nodes of the second type;

tracking a number of tasks remaining on the message queue; and

when the number of tasks remaining on the message queue exceeds a threshold, allocating at least one of additional worker nodes of the first type or additional worker nodes of the second type.

2. The method of claim 1 wherein the adjusting at least one of a number of worker nodes of the first type or a number of worker nodes of the second type further comprises at least one of allocating additional worker nodes of the first type or allocating additional worker nodes of the second type, the new number of worker nodes thereby being greater than the initial number of worker nodes.

3. The method of claim 1 wherein the adjusting at least one of a number of worker nodes of the first type or a number of worker nodes of the second type further comprises at least one of deallocating worker nodes of the first type or deallocating worker nodes of the second type, the new number of worker nodes thereby being less than the initial number of worker nodes.

4. A method comprising:

generating a set of tasks associated with a replication job, the replication job comprising replicating from a source site to a destination site;

allocating an initial number of worker nodes to process the set of tasks, each task involving a first type of worker node at the source site, a second type of worker node at the destination site, and comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

monitoring the replication job;

based on the monitoring, adjusting at least one of a number of worker nodes of the first type or a number of worker nodes of the second type to process the set of tasks from the initial number to a new number, different from the initial number;

receiving a constraint indicating a duration of time permitted to complete the replication job;

calculating a number and a size of objects at the source site that are to be replicated to the destination site; and

based on the number and size of objects that are to be replicated, allocating a sufficient number of worker nodes of the first type at the source site and a sufficient number of worker nodes of the second type at the destination site to complete the replication job within the permitted duration of time.

5. A method comprising:

generating a set of tasks associated with a replication job, the replication job comprising replicating from a source site to a destination site;

allocating an initial number of worker nodes to process the set of tasks, each task involving a first type of worker node at the source site, a second type of worker node at the destination site, and comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

monitoring the replication job;

based on the monitoring, adjusting at least one of a number of worker nodes of the first type or a number of worker nodes of the second type to process the set of tasks from the initial number to a new number, different from the initial number;

receiving a constraint indicating a maximum cost for the replication job; and

based on the maximum cost, allocating the initial number of worker nodes such that a total cost for the worker nodes does not exceed the maximum cost.

6. A method comprising:

generating a set of tasks associated with a replication job, the replication job comprising replicating from a source site to a destination site;

allocating an initial number of worker nodes to process the set of tasks, each task involving a first type of worker node at the source site, a second type of worker node at the destination site, and comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

monitoring the replication job;

based on the monitoring, adjusting at least one of a number of worker nodes of the first type or a number of worker nodes of the second type to process the set of tasks from the initial number to a new number, different from the initial number;

assessing a priority level of a data set to be replicated;

if the priority level of the data set is of a low priority, allocating a first initial number of worker nodes; and

if the priority level of the data set is of a high priority, allocating a second initial number of worker nodes, greater than the first initial number of worker nodes.

7. The method of claim 1 further comprising:

obtaining a metric indicating CPU utilization associated with the worker nodes; and

scaling at least one of the number of worker nodes of the first type or the number of worker nodes of the second type based on the CPU utilization being above or below a threshold.

8. A system comprising:

a processor-based system executed on a computer system and configured to:

generate a set of tasks associated with a replication job, the replication job comprising replicating from a source site to a destination site;

allocate an initial number of worker nodes to process the set of tasks, each task involving a first type of worker node at the source site, a second type of worker node at the destination site, and comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

monitor the replication job;

based on the monitoring, adjust at least one of a number of worker nodes of the first type or a number of worker nodes of the second type to process the set of tasks from the initial number to a new number, different from the initial number;

place the set of tasks onto a message queue for worker nodes of the first type to retrieve and process in conjunction with worker nodes of the second type;

track a number of tasks remaining on the message queue; and

when the number of tasks remaining on the message queue exceeds a threshold, allocate at least one of additional worker nodes of the first type or additional worker nodes of the second type.

9. A system comprising:

a processor-based system executed on a computer system and configured to:

generate a set of tasks associated with a replication job, the replication job comprising replicating from a source site to a destination site;

allocate an initial number of worker nodes to process the set of tasks, each task involving a first type of worker node at the source site, a second type of worker node at the destination site, and comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

monitor the replication job;

based on the monitoring, adjust at least one of a number of worker nodes of the first type or a number of worker nodes of the second type to process the set of tasks from the initial number to a new number, different from the initial number;

receive a constraint indicating a duration of time permitted to complete the replication job;

calculate a number and a size of objects at the source site that are to be replicated to the destination site; and

based on the number and size of objects that are to be replicated, allocate a sufficient number of worker nodes of the first type at the source site and a sufficient number of worker nodes of the second type at the destination site to complete the replication job within the permitted duration of time.

10. A system comprising:

a processor-based system executed on a computer system and configured to:

generate a set of tasks associated with a replication job, the replication job comprising replicating from a source site to a destination site;

allocate an initial number of worker nodes to process the set of tasks, each task involving a first type of worker node at the source site, a second type of worker node at the destination site, and comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

monitor the replication job;

based on the monitoring, adjust at least one of a number of worker nodes of the first type or a number of worker nodes of the second type to process the set of tasks from the initial number to a new number, different from the initial number;

receive a constraint indicating a maximum cost for the replication job; and

based on the maximum cost, allocate the initial number of worker nodes such that a total cost for the worker nodes does not exceed the maximum cost.

11. A system comprising:

a processor-based system executed on a computer system and configured to:

generate a set of tasks associated with a replication job, the replication job comprising replicating from a source site to a destination site;

allocate an initial number of worker nodes to process the set of tasks, each task involving a first type of worker node at the source site, a second type of worker node at the destination site, and comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

monitor the replication job;

based on the monitoring, adjust at least one of a number of worker nodes of the first type or a number of worker nodes of the second type to process the set of tasks from the initial number to a new number, different from the initial number;

assess a priority level of a data set to be replicated;

if the priority level of the data set is of a low priority, allocate a first initial number of worker nodes; and

if the priority level of the data set is of a high priority, allocate a second initial number of worker nodes, greater than the first initial number of worker nodes.

12. A computer program product comprising a non-transitory computer-readable medium having a computer-readable program code embodied therein, the computer-readable program code adapted to be executed by one or more processors to implement a method comprising:

generating a set of tasks associated with a replication job, the replication job comprising replicating from a source site to a destination site;

allocating an initial number of worker nodes to process the set of tasks, each task involving a first type of worker node at the source site, a second type of worker node at the destination site, and comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

monitoring the replication job;

based on the monitoring, adjusting at least one of a number of worker nodes of the first type or a number of worker nodes of the second type to process the set of tasks from the initial number to a new number, different from the initial number;

placing the set of tasks onto a message queue for worker nodes of the first type to retrieve and process in conjunction with worker nodes of the second type;

tracking a number of tasks remaining on the message queue; and

when the number of tasks remaining on the message queue exceeds a threshold, allocating at least one of additional worker nodes of the first type or additional worker nodes of the second type.

13. The computer program product of claim 12 wherein the adjusting at least one of a number of worker nodes of the first type or a number of worker nodes of the second type further comprises at least one of allocating additional worker nodes of the first type or allocating additional worker nodes of the second type, the new number of worker nodes thereby being greater than the initial number of worker nodes.

14. The computer program product of claim 12 wherein the adjusting at least one of a number of worker nodes of the first type or a number of worker nodes of the second type further comprises at least one of deallocating worker nodes of the first type or deallocating worker nodes of the second type, the new number of worker nodes thereby being less than the initial number of worker nodes.

15. A computer program product comprising a non-transitory computer-readable medium having a computer-readable program code embodied therein, the computer-readable program code adapted to be executed by one or more processors to implement a method comprising:

generating a set of tasks associated with a replication job, the replication job comprising replicating from a source site to a destination site;

allocating an initial number of worker nodes to process the set of tasks, each task involving a first type of worker node at the source site, a second type of worker node at the destination site, and comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

monitoring the replication job;

based on the monitoring, adjusting at least one of a number of worker nodes of the first type or a number of worker nodes of the second type to process the set of tasks from the initial number to a new number, different from the initial number;

receiving a constraint indicating a duration of time permitted to complete the replication job;

calculating a number and a size of objects at the source site that are to be replicated to the destination site; and

based on the number and size of objects that are to be replicated, allocating a sufficient number of worker nodes of the first type at the source site and a sufficient number of worker nodes of the second type at the destination site to complete the replication job within the permitted duration of time.

16. A computer program product comprising a non-transitory computer-readable medium having a computer-readable program code embodied therein, the computer-readable program code adapted to be executed by one or more processors to implement a method comprising:

generating a set of tasks associated with a replication job, the replication job comprising replicating from a source site to a destination site;

allocating an initial number of worker nodes to process the set of tasks, each task involving a first type of worker node at the source site, a second type of worker node at the destination site, and comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

monitoring the replication job;

based on the monitoring, adjusting at least one of a number of worker nodes of the first type or a number of worker nodes of the second type to process the set of tasks from the initial number to a new number, different from the initial number;

receiving a constraint indicating a maximum cost for the replication job; and

based on the maximum cost, allocating the initial number of worker nodes such that a total cost for the worker nodes does not exceed the maximum cost.

17. A computer program product comprising a non-transitory computer-readable medium having a computer-readable program code embodied therein, the computer-readable program code adapted to be executed by one or more processors to implement a method comprising:

generating a set of tasks associated with a replication job, the replication job comprising replicating from a source site to a destination site;

allocating an initial number of worker nodes to process the set of tasks, each task involving a first type of worker node at the source site, a second type of worker node at the destination site, and comprising one or more of copying an object from the source site to the destination site, or deleting an object from the destination site;

monitoring the replication job;

based on the monitoring, adjusting at least one of a number of worker nodes of the first type or a number of worker nodes of the second type to process the set of tasks from the initial number to a new number, different from the initial number;

assessing a priority level of a data set to be replicated;

if the priority level of the data set is of a low priority, allocating a first initial number of worker nodes; and

if the priority level of the data set is of a high priority, allocating a second initial number of worker nodes, greater than the first initial number of worker nodes.

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 (045482/0131) 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; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 061749/0924 →
RELEASE OF SECURITY INTEREST AT REEL 045482 FRAME 0395 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058298/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 18, 2020
From: KARMARKAR, ATUL AVINASH; SHILANE, PHILIP
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 053525/0992 →
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 AGREEMENT (NOTES) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 045482/0131 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Mar 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 045482/0395 →
Continuity (1)
Related Publication 20190243688A1 · Aug 8, 2019
Cited By (1)
US 12,613,884