IP Library Granted Patent US 12670004
Granted Patent B2
US 12670004 · App. 17/967,322 · Granted Jun 30, 2026

Fail-safe post copy migration of containerized applications

Inventors: Michael Tsirkin (Yokneam Illit, IL); Andrea Arcangeli (Mineola, NY)
Assignee: Red Hat, LLC
G06F9/45558G06F3/0608G06F3/0631G06F3/0673G06F2009/4557G06F2009/45583
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 12670004
App. No.
17/967,322
Granted
Jun 30, 2026
Kind
B2
Abstract

A supervisor on a destination host receives a request to migrate an application from a source host to the destination host and determines a total amount of memory associated with the application on the source host. The supervisor on the destination host allocates one or more memory pages in a page table on the destination host to satisfy the total amount of memory associated with the application on the source host, where the one or more memory pages are to be associated with the application on the destination host. Responsive to determining that the one or more memory pages have been allocated on the destination host, the supervisor on the destination host initiates migration of the application from the source host to the destination host.

Claims (87)

1 . A method comprising:

receiving, by a processing device executing a supervisor on a destination host, a request to migrate an application from a source host to the destination host;

prior to initiating migration of the application, determining a total amount of memory associated with the application on the source host, wherein the total amount of memory comprises a total amount of memory allocated to the application according to an initial configuration of the application, and wherein the initial configuration of the application differs from a current configuration of the application;

determining whether an available amount of memory on the destination host satisfies the total amount of memory associated with the application on the source host; and

responsive to determining that the available amount of memory on the destination host satisfies the total amount of memory associated with the application on the source host:

allocating, by the processing device, one or more memory pages in a page table on the destination host to satisfy the total amount of memory associated with the application on the source host, wherein the one or more memory pages are to be associated with the application on the destination host; and

responsive to determining that the one or more memory pages have been allocated on the destination host, initiating migration of the application from the source host to the destination host.

2 . The method of claim 1 , further comprising:

responsive to determining that the available amount of memory on the destination host does not satisfy the total amount of memory associated with the application on the source host, rejecting the request to migrate the application to the destination host.

3 . The method of claim 1 , wherein allocating the one or more memory pages further comprises:

marking the one or more memory pages as not present in the page table of the destination host.

4 . The method of claim 1 , wherein initiating the migration of the application further comprises:

copying an execution state of the application from the source host to the destination host; and

starting the application on the destination host.

5 . The method of claim 1 , further comprising:

receiving a request from the application on the destination host to access a memory page of the one or more memory pages;

determining whether the memory page of the one or more memory pages is marked as not present in the page table of the destination host; and

responsive to determining that the memory page of the one or more memory pages is marked as not present in the page table of the destination host:

pausing execution of the application on the destination host;

retrieving the memory page from the source host;

storing the memory page on the destination host;

marking the memory page as present in the page table on the destination host; and

resuming execution of the application on the destination host.

6 . The method of claim 1 , further comprising:

initiating a virtual device connection between the application on the destination host to a physical device.

7 . The method of claim 6 , further comprising:

responsive to determining that each of the one or more memory pages associated with the application has been retrieved from the source host:

performing a direct mapping of the physical device for the application on the destination host; and

terminating the virtual device connection between the application on the destination host to the physical device.

8 . A system comprising:

a memory; and

a processing device, operatively coupled to the memory, to execute a supervisor on a destination host to:

receive a request to migrate an application from a source host to the destination host;

prior to initiating migration of the application, determine a total amount of memory associated with the application on the source host, wherein the total amount of memory comprises a total amount of memory allocated to the application according to an initial configuration of the application, and wherein the initial configuration of the application differs from a current configuration of the application;

determine whether an available amount of memory on the destination host satisfies the total amount of memory associated with the application on the source host;

responsive to determining that the available amount of memory on the destination host satisfies the total amount of memory associated with the application on the source host, allocate one or more memory pages in a page table on the destination host to satisfy the total amount of memory associated with the application on the source host, wherein the one or more memory pages are to be associated with the application on the destination host; and

responsive to determining that the one or more memory pages have been allocated on the destination host, initiate migration of the application from the source host to the destination host.

9 . The system of claim 8 , wherein to allocate the one or more memory pages, the processing device is further to:

determine whether an available amount of memory on the destination host satisfies the total amount of memory associated with the application on the source host; and

allocate the one or more memory pages responsive to determining that the available amount of memory on the destination host satisfies the total amount of memory associated with the application on the source host.

10 . The system of claim 9 , wherein the processing device is further to:

responsive to determining that the available amount of memory on the destination host does not satisfy the total amount of memory associated with the application on the source host, reject the request to migrate the application to the destination host.

11 . The system of claim 8 , wherein to allocate the one or more memory pages, the processing device is further to:

mark the one or more memory pages as not present in the page table of the destination host.

12 . The system of claim 8 , wherein to initiate the migration of the application, the processing device is further to:

copy an execution state of the application from the source host to the destination host; and

start the application on the destination host.

13 . The system of claim 8 , wherein the processing device is further to:

receive a request from the application on the destination host to access a memory page of the one or more memory pages;

determine whether the memory page of the one or more memory pages is marked as not present in the page table of the destination host; and

responsive to determining that the memory page of the one or more memory pages is marked as not present in the page table of the destination host:

pause execution of the application on the destination host;

retrieve the memory page from the source host;

store the memory page on the destination host;

mark the memory page as present in the page table on the destination host; and

resume execution of the application on the destination host.

14 . The system of claim 8 , wherein the processing device is further to:

initiate a virtual device connection between the application on the destination host to a physical device.

15 . The system of claim 14 , wherein the processing device is further to:

responsive to determining that each of the one or more memory pages associated with the application has been retrieved from the source host:

perform a direct mapping of the physical device for the application on the destination host; and

terminate the virtual device connection between the application on the destination host to the physical device.

16 . A non-transitory computer readable medium comprising instructions, which when accessed by a processing device, cause the processing device to:

receive, by a supervisor on a destination host, a request to migrate an application from a source host to the destination host;

prior to initiating migration of the application, determine a total amount of memory associated with the application on the source host, wherein the total amount of memory comprises a total amount of memory allocated to the application according to an initial configuration of the application, and wherein the initial configuration of the application differs from a current configuration of the application;

determine whether an available amount of memory on the destination host satisfies the total amount of memory associated with the application on the source host; and

responsive to determining that the available amount of memory on the destination host satisfies the total amount of memory associated with the application on the source host:

allocate one or more memory pages in a page table on the destination host to satisfy the total amount of memory associated with the application on the source host, wherein the one or more memory pages are to be associated with the application on the destination host;

mark the one or more memory pages as not present in the page table of the destination host; and

responsive to determining that the one or more memory pages have been allocated on the destination host, initiate migration of the application from the source host to the destination host.

17 . The non-transitory computer readable medium of claim 16 , wherein the instructions further cause the processing device to:

responsive to determining that the available amount of memory on the destination host does not satisfy the total amount of memory associated with the application on the source host, reject the request to migrate the application to the destination host.

18 . The non-transitory computer readable medium of claim 16 , wherein the instructions further cause the processing device to:

receive a request from the application on the destination host to access a memory page of the one or more memory pages;

determine whether the memory page of the one or more memory pages is marked as not present in the page table of the destination host; and

responsive to determining that the memory page of the one or more memory pages is marked as not present in the page table of the destination host:

pause execution of the application on the destination host;

retrieve the memory page from the source host;

store the memory page on the destination host;

mark the memory page as present in the page table on the destination host; and

resume execution of the application on the destination host.

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

initiate a virtual device connection between the application on the destination host to a physical device.

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

responsive to determining that each of the one or more memory pages associated with the application has been retrieved from the source host:

perform a direct mapping of the physical device for the application on the destination host; and

terminate the virtual device connection between the application on the destination host to the physical device.