IP Library Granted Patent US 10,162,559
Granted Patent B2
US 10,162,559 · App. 15/261,596 · Granted Dec 25, 2018

Systems and methods for performing live migrations of software containers

Inventors: Gaurav Makin (Shoreview, MN); Kody Kantor (Saint 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,162,559
App. No.
15/261,596
Granted
Dec 25, 2018
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 (61)

1. A computer-implemented method for performing live migrations of software containers, 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 checkpoint of the process in execution, wherein the checkpoint comprises a representation of a state of the process in execution;

transferring the checkpoint to the target computing system;

updating the checkpoint recurrently by recurrently creating an incremental checkpoint of the process in execution, transferring the incremental checkpoint to the target computing system, and merging the incremental checkpoint into the checkpoint;

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 a task comprising merging the iteration of the incremental checkpoint into the checkpoint and finalizing a migration of the software container to the target computing system would meet a predetermined time objective; and

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

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

determining that a size of a most recent iteration of the incremental checkpoint exceeds a predetermined threshold;

discarding the most recent iteration of the incremental checkpoint and recreating a new full version of the checkpoint in response to determining that the size of the most recent iteration of the checkpoint exceeds the predetermined threshold; and

transferring the new full version of the checkpoint to the target computing system to replace the checkpoint.

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

throttling the software container at the source computing system by reducing access to a computing resource for the software container and, thereby, reducing a maximum size of the iteration of the incremental checkpoint and enabling the task to meet the predetermined time objective.

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

a state of application memory of the process;

a process handle of the process;

a file handle held by the process; and

a socket held by the process.

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

6. The computer-implemented method of claim 1 , wherein the incremental checkpoint comprises a representation of a difference between a current state of the process and a most recent previous version of the checkpoint.

7. The computer-implemented method of claim 1 , wherein finalizing the migration comprises:

restoring the checkpoint into 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.

8. The computer-implemented method of claim 7 , 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.

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

10. A system for performing live migrations of software containers, the 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 checkpoint of the process in execution, wherein the checkpoint comprises a representation of a state of the process in execution;

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

an updating module, stored in memory, that updates the checkpoint recurrently by recurrently creating an incremental checkpoint of the process in execution, transferring the incremental checkpoint to the target computing system, and merge the incremental checkpoint into the checkpoint;

a prediction module, stored in memory, that predicts, before updating the checkpoint with an iteration of the incremental checkpoint and based on a size of the iteration of the incremental checkpoint, that a task comprising merging the iteration of the incremental checkpoint into the checkpoint and finalizing a migration of the software container to the target computing system would meet a predetermined time objective;

a finalizing module, stored in memory, that finalizes the migration of the software container to the target computing system after merging the iteration of the incremental checkpoint into the checkpoint in response to predicting that merging the iteration of the incremental checkpoint into the checkpoint and finalize the migration of the software container to the target computing system would meet the predetermined time objective; and

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

11. The system of claim 10 , wherein the updating module further:

determines that a size of a most recent iteration of the incremental checkpoint exceeds a predetermined threshold;

discards the most recent iteration of the incremental checkpoint and recreates a new full version of the checkpoint in response to determining that the size of the most recent iteration of the checkpoint exceeds the predetermined threshold; and

transfers the new full version of the checkpoint to the target computing system to replace the checkpoint.

12. The system of claim 10 , wherein the prediction module further throttles the software container at the source computing system by reducing access to a computing resource for the software container and, thereby, reduces a maximum size of the iteration of the incremental checkpoint and enabling the task to meet the predetermined time objective.

13. The system of claim 10 , wherein the checkpoint comprises a stored representation of at least one of:

a state of application memory of the process;

a process handle of the process;

a file handle held by the process; and

a socket held by the process.

14. The system of claim 10 , wherein the software container comprises a sandboxed environment wherein the process executing within the software container performs system calls to an operating system that hosts the software container.

15. The system of claim 10 , wherein the incremental checkpoint comprises a representation of a difference between a current state of the process and a most recent previous version of the checkpoint.

16. The system of claim 10 , wherein the finalizing module finalizes the migration by:

restoring the checkpoint into 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.

17. The system of claim 16 , wherein the finalizing module redirects the communication path by 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.

18. The system of claim 10 , wherein the migration of the software container comprises the process maintaining a stateful session with a client system that begins with the client system communicating with the process at the source computing system and concludes with the client system communicating with the process at the target computing system.

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 checkpoint of the process in execution, wherein the checkpoint comprises a representation of a state of the process in execution;

transfer the checkpoint to the target computing system;

update the checkpoint recurrently by recurrently creating an incremental checkpoint of the process in execution, transferring the incremental checkpoint to the target computing system, and merging the incremental checkpoint into the checkpoint;

predict, before updating the checkpoint with an iteration of the incremental checkpoint and based on a size of the iteration of the incremental checkpoint, that a task comprising merging the iteration of the incremental checkpoint into the checkpoint and finalizing a migration of the software container to the target computing system would meet a predetermined time objective; and

finalize the migration of the software container to the target computing system after merging the iteration of the incremental checkpoint into the checkpoint in response to predicting that merging the iteration of the incremental checkpoint into the checkpoint and finalizing the migration of the software container to the target computing system would meet the predetermined time objective.

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

determine that a size of a most recent iteration of the incremental checkpoint exceeds a predetermined threshold;

discard the most recent iteration of the incremental checkpoint and recreate a new full version of the checkpoint in response to determining that the size of the most recent iteration of the checkpoint exceeds the predetermined threshold; and

transfer the new full version of the checkpoint to the target computing system to replace the checkpoint.

Assignments (13)
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 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 069585/0150 Recorded Dec 1, 2025
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0848 →
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 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069632/0613 →
PATENT SECURITY AGREEMENT Recorded Dec 10, 2024
From: ARCTERA US LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069585/0150 →
SECURITY INTEREST Recorded Dec 10, 2024
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 069563/0243 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 069548/0468 →
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 Recorded Nov 23, 2016
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 040679/0466 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 9, 2016
From: MAKIN, GAURAV; KANTOR, KODY; WEN, HAO; CAO, ZHICHAO; MEHTA, VALLARI
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 039692/0152 →
Continuity (1)
Related Publication 20180074748A1 · Mar 15, 2018
Cited By (1)
US 12,307,277