IP Library Granted Patent US 10,664,186
Granted Patent B2
US 10,664,186 · App. 16/197,344 · Granted May 26, 2020

Systems and methods for performing live migrations of software containers

Inventors: Gaurav Makin (Shoreview, MN); Kody Kantor (St. Paul, MN); Hao Wen (Falcon Heights, MN); Zhichao Cao (Falcon Heights, MN); Vallari Mehta (Pittsburgh, PA)
Assignee: Veritas Technologies LLC
G06F3/0647G06F3/0604G06F3/067G06F3/0644G06F9/4856H04L67/142H04L67/34G06F11/1438G06F11/1446G06F11/3688
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,664,186
App. No.
16/197,344
Granted
May 26, 2020
Kind
B2
Abstract

The disclosed computer-implemented method for performing live migrations of software containers may include (i) identifying a request to migrate a software container from a source computing system to a target computing system while a process executes within the software container, (ii) creating a checkpoint of the process in execution (iii) transferring the checkpoint to the target computing system, (iv) updating the checkpoint recurrently by recurrently creating an incremental checkpoint of the process and merging the incremental checkpoint into the checkpoint, (v) predicting, before updating the checkpoint with an iteration of the incremental checkpoint and based on a size of the iteration of the incremental checkpoint, that finalizing a migration of the software container to the target computing system would meet a predetermined time objective, and (vi) finalizing the migration of the software container to the target computing system. Various other methods, systems, and computer-readable media are also disclosed.

Claims (66)

1. A computer-implemented method, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

identifying a request to migrate a software container from a source computing system to a target computing system while at least one process executes within the software container;

creating, in response to the request, a first checkpoint of the at least one process in execution, the first checkpoint comprising a representation of a state of the at least one process;

transferring the first checkpoint to the target computing system;

creating a second checkpoint of the at least one process in execution, the second checkpoint being a representation of an incremental change in the state of the at least one process since the first checkpoint;

based on determining that a size of the second checkpoint exceeds a predetermined threshold, throttling the software container at the source computing system;

subsequent to the throttling of the software container, creating a third checkpoint of the at least one process in execution, the third checkpoint being a representation of an incremental change in the state of the at least one process since the first checkpoint; and

based on determining that a size of the third checkpoint does not exceed the predetermined threshold:

enabling a merging of the third checkpoint into the first checkpoint; and

enabling a migration of the software container to the target computing system.

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

finalizing the migration of the software container to the target computing system after merging the third checkpoint into the first checkpoint in response to predicting that the merging and the migration meet a predetermined time objective.

3. The computer-implemented method of claim 2 , wherein finalizing the migration of the software container to the target computing system comprises:

creating a fourth checkpoint for a new software container at the target computing system; and

redirecting a communication path to point to the new software container at the target computing system instead of pointing to the software container at the source computing system.

4. The computer-implemented method of claim 3 , wherein redirecting the communication path comprises reassigning, within a software defined network, an internet protocol address previously allocated to the software container at the source computing system to the new software container at the target computing system.

5. The computer-implemented method of claim 1 , wherein the migration of the software container to the target computing system comprises maintaining, by the at least one process, a stateful session with a client system that begins with the client system communicating with the at least one process at the source computing system and concludes with the client system communicating with the at least one process at the target computing system.

6. The computer-implemented method of claim 1 , wherein throttling the software container at the source computing system comprises reducing access to a computer resource for the software container.

7. The computer-implemented method of claim 6 , wherein reducing access to the computer resource for the software container comprises at least one of decreasing processor availability to one or more processes within the software container, decreasing network availability to one or more processes within the software container, decreasing storage input/output bandwidth to one or more processes within the software container, and reducing access to one or more computing resources for a control group associated with one or more processes executing within the software container.

8. The computer-implemented method of claim 1 , wherein throttling the software container at the source computing system comprises throttling storage speeds for an application within the software container.

9. The computer-implemented method of claim 8 , wherein throttling storage speeds for the application within the software container comprises changing one or more service level agreement policies for the application.

10. The computer-implemented method of claim 1 , wherein the first checkpoint comprises a stored representation of at least one of:

a state of application memory of the at least one process;

a process handle of the at least one process;

a file handle held by the at least one process; and

a socket held by the at least one process.

11. The computer-implemented method of claim 1 , wherein the software container comprises a sandboxed environment wherein the at least one process executing within the software container performs system calls to an operating system that hosts the software container.

12. A system comprising:

an identification module, stored in memory, that identifies a request to migrate a software container from a source computing system to a target computing system while at least one process executes within the software container;

a creation module, stored in memory, that creates, in response to the request, a first checkpoint of the at least one process in execution, wherein the first checkpoint comprises a representation of a state of the at least one process;

a transferring module, stored in memory, that transfers the first checkpoint to the target computing system;

an updating module, stored in memory, that:

creates a second checkpoint of the at least one process in execution, the second checkpoint being a representation of an incremental change in the state of the at least one process since the first checkpoint;

determines that a size of the second checkpoint exceeds a predetermined threshold;

throttles the software container at the source computing system based on determining that the size of the second checkpoint exceeds the predetermined threshold;

creates a third checkpoint of the at least one process in execution subsequent to the throttling of the software container, the third checkpoint being a representation of an incremental change in the state of the at least one process since the first checkpoint;

determines that a size of the third checkpoint does not exceed the predetermined threshold;

enables a merging of the third checkpoint into the first checkpoint based on determining that the size of the third checkpoint does not exceed the predetermined threshold; and

enables a migration of the software container to the target computing system based on determining that the size of the third checkpoint does not exceed the predetermined threshold; and

at least one physical processor configured to execute the identification module, the creation module, the transferring module, and the updating module.

13. The system of claim 12 ,

further comprising a finalizing module, stored in memory, that finalizes the migration of the software container to the target computing system after merging the third checkpoint into the first checkpoint in response to predicting that the merging and the migration meet a predetermined time objective; and

wherein the at least one physical processor is further configured to execute the finalization module.

14. The system of claim 13 , wherein the finalization module finalizes the migration of the software container to the target computing system by:

creating a fourth checkpoint for a new software container at the target computing system; and

redirecting a communication path to point to the new software container at the target computing system instead of pointing to the software container at the source computing system.

15. The system of claim 12 , wherein the migration of the software container to the target computing system comprises maintaining, by the at least one process, a stateful session with a client system that begins with the client system communicating with the at least one process at the source computing system and concludes with the client system communicating with the at least one process at the target computing system.

16. The system of claim 12 , wherein throttling the software container at the source computing system comprises reducing access to a computer resource for the software container.

17. The system of claim 12 , wherein the first checkpoint comprises a stored representation of at least one of:

a state of application memory of the at least one process;

a process handle of the at least one process;

a file handle held by the at least one process; and

a socket held by the at least one process.

18. The system of claim 12 , wherein the software container comprises a sandboxed environment wherein the at least one process executing within the software container performs system calls to an operating system that hosts the software container.

19. A non-transitory computer-readable medium comprising one or more computer-readable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

identify a request to migrate a software container from a source computing system to a target computing system while at least one process executes within the software container;

create, in response to the request, a first checkpoint of the at least one process in execution, the first checkpoint comprising a representation of a state of the at least one process;

transfer the first checkpoint to the target computing system;

create a second checkpoint of the process in execution, the second checkpoint being a representation of an incremental change in the state of the at least one process since the first checkpoint;

based on determining that a size of the second checkpoint exceeds a predetermined threshold, throttle the software container at the source computing system;

subsequent to the throttling of the software container, create a third checkpoint of the at least one process in execution, the third checkpoint being a representation of an incremental change in the state of the at least one process since the first checkpoint; and

based on determining that a size of the third checkpoint does not exceed the predetermined threshold:

enable a merging of the third checkpoint into the first checkpoint; and

enable a migration of the software container to the target computing system.

20. The non-transitory computer-readable medium of claim 19 , wherein the instructions further cause the computing device to:

finalize the migration of the software container to the target computing system after merging the third checkpoint into the first checkpoint in response to predicting that the merging and the migration meet a predetermined time objective.

Assignments (12)
SECURITY INTEREST Recorded Dec 12, 2025
From: ARCTERA US LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 073951/0470 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 070530/0497 Recorded Dec 1, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0730 →
SECURITY INTEREST Recorded Mar 17, 2025
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 070530/0497 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069697/0238 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 069548/0468 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 052426/0001 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0565 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Apr 16, 2020
From: VERITAS TECHNOLOGIES, LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 052426/0001 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Mar 18, 2020
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 052189/0311 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 18, 2020
From: MAKIN, GAURAV; KANTOR, KODY; WEN, HAO; CAO, ZHICHAO; MEHTA, VALLARI
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 051845/0101 →
Cited By (3)
US 12,307,277 US 12,333,299 US 12,530,245