IP Library › Granted Patent US 9,875,057
Granted Patent B2
US 9,875,057 · App. 14/760,211 · Granted Jan 23, 2018

Method of live migration

Inventors: Amir Roozbeh (Kista, SE); Joao Monteiro Soares (Solna, SE); Daniel Turull (Sundbyberg, SE)
Assignee: Telefonaktiebolaget LM Ericsson (publ)
G06F3/0647G06F3/067G06F3/0617G06F3/0605G06F3/0629G06F3/0658G06F3/0683
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 9,875,057
App. No.
14/760,211
Granted
Jan 23, 2018
Kind
B2
Abstract

A method of migrating of an application from a source host to a destination host, wherein the application is associated with a plurality of memory pages, the source host comprises a first instance of the application and a source memory region, and each memory page has an associated source memory block in the source memory region, the method comprising: at the destination host, reserving a destination memory region such that each memory page has an associated destination memory block in the destination memory region, a second instance of the application at the destination host; on receipt of an input to the application, processing the input in parallel at the first and second instances at respective source and destination hosts: at the source host, if the processing requires a read or a write call to a memory page, respectively reading from or writing to the associated source memory block; the destination host, if the processing requires a write call to a memory page, writing to the associated destination memory block and if the processing requires a read call to a memory page, sending the read call to the source host requesting that the source host read the memory page from the associated source memory block and provide the memory page to the destination host, and, on receipt of the memory page by the destination host, writing the memory page to the associated destination memory block.

Claims (64)

1. A method of live migration of an application from a source host to a destination host, wherein the application is associated with a plurality of memory pages, the source host comprises a first instance of the application and a source memory region, and each memory page has an associated source memory block in the source memory region, the method comprising:

at the destination host, reserving a destination memory region such that each memory page has an associated destination memory block in the destination memory region, and launching a second instance of the application at the destination host;

on receipt of an input to the application, processing the input in parallel at the first and second instances of the application at respective source and destination hosts;

at the source host, if the processing requires a read or a write call to a memory page, respectively reading from or writing to the associated source memory block; and

at the destination host, if the processing requires a write call to a memory page, writing to the associated destination memory block and if the processing requires a read call to a memory page, sending the read call to the source host requesting that the source host read the memory page from the associated source memory block and provide the memory page to the destination host, and, on receipt of the memory page by the destination host, writing the memory page to the associated destination memory block.

2. The method as claimed in claim 1 , further comprising:

at the destination host, on receipt of an input whose processing requires a read call to a memory page:

determining whether the read call is a first access of a memory page by the second instance of the application and either:

reading the associated destination memory block, if the read call is not the first access, or

reading the associated source memory block, if the read call is the first access; and

recording the memory access.

3. The method as claimed in claim 1 , further comprising at the source host:

tracking read calls to source memory blocks; and

on receipt of an input the processing of which requires a write instruction to a source memory block:

determining whether a read call has been made for the block by the first instance;

determining whether a read call has been made for the block by the second instance; and

if a read call has been made by the first instance but not by the second instance:

postpone execution of the write call; and

on receipt of a read call from the second instance:

execute the read call from the second instance; and

execute the write call.

4. The method of claim 1 , wherein a subset of the plurality of memory pages are copied from the source memory region to the destination memory region prior to the launching of the second instance.

5. The method according to claim 4 , wherein the subset of memory pages is selected based on the results of a statistical analysis of one or more of the network load, memory usage and data usage.

6. The method according to claim 1 , wherein a statistical analysis of one or more of the network load, memory usage and data usage is used to determine an opportunistic time.

7. The method as claimed in claim 6 , wherein the opportunistic start time is determined by selecting a period of low activity.

8. The method according to claim 6 , wherein the first instance is terminated upon completion of transfer of all memory pages to the destination memory region.

9. The method according to claim 6 , wherein the migration is controlled by a migration layer located on one or both of the source and destination hosts.

10. A destination host comprising:

a central processing unit; and

a memory containing instructions that, when executed by the central processing unit, cause the destination host to perform the following steps in response to an instruction to commence live migration from a source host to the destination host, in parallel with the source host:

launch an instance of an application, the application being associated with a plurality of memory pages in the source host corresponding to another instance of the application;

reserve a destination memory region such that every memory page associated with the application has an associated memory block in the destination memory region; and

in response to an input to the application:

process the input; and

if the processing requires a read call to a memory page:

read from an associated source memory block at the source host; and

write data acquired from the associated source memory block to the associated destination memory block;

if the processing requires a write call to a memory page:

write to the associated destination memory block.

11. The destination host as claimed in claim 10 , wherein the instructions contained in the memory, when executed, further cause the destination host to:

track read and write calls to the destination memory blocks: and

wherein processing the read call to a memory page further comprises:

determine whether a read call is a first access of a memory page during the live migration; and either:

read the associated destination memory block, if the read call is not the first access; or

read the associated source memory block, if the read call is the first access.

12. A source host comprising:

a central processing unit; and

a memory containing instructions that, when executed by the central processing unit, cause the source host to perform the following steps in response to an instruction to commence live migration from the source host to a destination host, in parallel with the destination host:

host a first instance of an application;

host memory pages associated with the application in a source memory region, each memory page being stored in a source memory block;

track read calls to the source memory blocks;

receive and execute read calls to the source memory region from a second instance of the application located at the destination host;

in response to an input to the application, the processing of which requires a write call to a source memory block:

determine whether a read call has been made for the source memory block by the first instance;

determine whether a read call has been made for the source memory block by the second instance; and

if the source memory block has been read by the first instance but not by the second instance:

postpone execution of the write call; and

on receipt of a read call from the second instance:

execute the read call from the second instance: and execute the write call.

13. A non-transitory computer readable medium having stored thereon computer program instructions for implementing live migration of an application from a source host to a destination host, wherein the application is associated with a plurality of memory pages, the source host comprises a first instance of the application and a source memory region, and each memory page has an associated source memory block in the source memory region, wherein the instructions, when executed on at least one processor, cause the at least one processor to carry out a method comprising:

at a destination host, reserving a destination memory region such that each memory page has an associated destination memory block in the destination memory region, and launching a second instance of the application at the destination host;

on receipt of an input to the application, processing the input in parallel at the first and second instances of the application at respective source and destination hosts;

at the source host, if the processing requires a read or a write call to a memory page, respectively reading from or writing to the associated source memory block; and

at the destination host, if the processing requires a write call to a memory page, writing to the associated destination memory block and if the processing requires a read call to a memory page, sending the read call to the source host requesting that the source host read the memory page from the associated source memory block and provide the memory page to the destination host, and, on receipt of the memory page by the destination host, writing the memory page to the associated destination memory block.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 7, 2016
From: MONTEIRO SOARES, JOAO; ROOZBEH, AMIR; TURULL, DANIEL
To: TELEFONAKTIEBOLAGET L M ERICSSON (PUBL)
Reel/Frame 037431/0921 →
Continuity (1)
Related Publication 20170139637A1 · May 18, 2017