IP Library Granted Patent US 10,042,621
Granted Patent B2
US 10,042,621 · App. 14/379,630 · Granted Aug 7, 2018

Migration of executing processes

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,042,621
App. No.
14/379,630
Granted
Aug 7, 2018
Kind
B2
Abstract

In one example embodiment, live migration in a datacenter may include JIT compiling a process that is configured to be executed on both a source instruction set architecture and a destination instruction set architecture, mapping variables and address stacks of the process on both the source instruction set architecture and the destination instruction set architecture into a labeled form thereof, and mapping the labeled form of the variables and address stacks onto the destination instruction set architecture.

Claims (66)

1. A method of live migration in a datacenter, wherein the method is performed under control of at least one hardware processor that is configured to execute instructions stored in a memory, the method comprising:

executing a process on a source instruction set architecture;

just-in-time (JIT) compiling the process,

wherein the JIT compiling includes:

performing a first JIT compilation of the process on the source instruction set architecture to generate a thin binary of the process, source variables, and function stacks of functions utilized by the thin binary on the source instruction set architecture;

storing, in accordance with the source instruction set architecture, the source variables and the function stacks of functions utilized by the thin binary on the source instruction set architecture;

performing a second JIT compilation of the process on a destination instruction set architecture to generate destination variables and function stacks of functions utilized by the thin binary on the destination instruction set architecture;

storing, in accordance with the destination instruction set architecture, the destination variables and the function stacks of functions utilized by the thin binary on the destination instruction set architecture; and

mapping the source and destination variables and address stacks of the thin binary from both the source instruction set architecture and the destination instruction set architecture into a labeled form by performing:

indirection dereferencing of source function addresses, from the function stacks of functions for the thin binary that executes on the source instruction set architecture, into a first lower level dictionary of the source instruction set architecture;

indirection dereferencing of source variable addresses, from the source variables for the thin binary that executes on the source instruction set architecture, into the first lower level dictionary of the source instruction set architecture;

indirection dereferencing of destination function addresses, from the function stacks of functions for the thin binary that executes on the destination instruction set architecture, into a second lower level dictionary stored on the destination instruction set architecture;

indirection dereferencing of destination variable addresses, from the destination variables for the thin binary that executes on the destination instruction set architecture, into the second lower level dictionary stored on the destination instruction set architecture; and

mapping, into the labeled form, the source function addresses and the source variable addresses to equivalent destination function addresses and destination variable addresses, and storing the mapped labeled form in a live migrator; and

migrating the thin binary between the source instruction set architecture and the destination instruction set architecture using the mapped labeled form,

wherein the mapping the source and destination variables and the address stacks of the thin binary facilitates transfer of state of the process, from the source instruction set architecture to the destination instruction set architecture, for migration of the thin binary between the source instruction set architecture and the destination instruction set architecture, using the mapped labeled form.

2. The method of claim 1 , wherein the mapping the source and destination variables and the address stacks includes mapping names of variables and names of functions to objects thereof in respective low level databases of a JIT compiler.

3. The method of claim 1 , wherein the source instruction set architecture includes an X86 instruction set architecture, and wherein the destination instruction set architecture includes an advanced reduced instruction set computer (RISC) machine (ARM) instruction set architecture.

4. The method of claim 1 , wherein the source instruction set architecture and the destination instruction set architecture correspond to a common datacenter.

5. A non-transitory computer-readable medium that stores executable instructions that, in response to execution, cause a virtual machine manager to perform or control performance of operations comprising:

executing a process on a source instruction set architecture;

just-in-time (JIT) compiling the process, wherein the JIT compiling includes:

performing a first JIT compilation of the process on the source instruction set architecture to generate a thin binary of the process, source variables, and function stacks of functions utilized by the thin binary on the source instruction set architecture;

storing, in accordance with the source instruction set architecture, the source variables and the function stacks of functions utilized by the thin binary on the source instruction set architecture;

performing a second JIT compilation of the process on a destination instruction set architecture to generate destination variables and function stacks of functions utilized by the thin binary on the destination instruction set architecture;

storing, in accordance with the destination instruction set architecture, the destination variables and the function stacks of functions utilized by the thin binary on the destination instruction set architecture; and

mapping source and destination variables and address stacks of the thin binary from both the source instruction set architecture and the destination instruction set architecture into a labeled form by performing:

indirection dereferencing of source function addresses, from the function stacks of functions for the thin binary that executes on the source instruction set architecture, into a first lower level dictionary of the source instruction set architecture;

indirection dereferencing of source variable addresses, from the source variables for the thin binary that executes on the source instruction set architecture, into the first lower level dictionary of the source instruction set architecture;

indirection dereferencing of destination function addresses, from the function stacks of functions for the thin binary while executing on the destination instruction set architecture, into a second lower level dictionary stored on the destination instruction set architecture;

indirection dereferencing of destination variable addresses, from the destination variables for the thin binary while executing on the destination instruction set architecture, into the second lower level dictionary stored on the destination instruction set architecture; and

mapping, into a labeled form, the source function addresses and the source variable addresses to equivalent destination function addresses and destination variable addresses, and storing the mapped labeled form in a live migrator; and

migrating the thin binary between the source instruction set architecture and the destination instruction set architecture using the mapped labeled form,

wherein the mapping the source and destination variables and the address stacks of the thin binary facilitates transfer of state of the process, from the source instruction set architecture to the destination instruction set architecture, for migration of the thin binary between the source instruction set architecture and the destination instruction set architecture, using the map labeled form.

6. A live migrator, comprising:

means for executing a process on a source instruction set architecture;

means for just-in-time (JIT) compiling the process, wherein means for JIT compiling the process includes:

means for performing a first JIT compilation of the process on the source instruction set architecture to generate a thin binary of the process, source variables, and function stacks of functions utilized by the thin binary on the source instruction set architecture;

means for storing, in accordance with the source instruction set architecture, the source variables and the function stacks of functions utilized by the thin binary on the source instruction set architecture;

means for performing a second JIT compilation of the process on a destination instruction set architecture to generate destination variables and function stacks of functions utilized by the thin binary on the destination instruction set architecture;

means for storing, in accordance with the destination instruction set architecture, the destination variables and the function stacks of functions utilized by the thin binary on the destination instruction set architecture; and

means for mapping the source and destination variables and address stacks of the thin binary from both the source instruction set architecture and the destination instruction set architecture into a labeled form, wherein the means for mapping comprises:

means for indirection dereferencing source function addresses, from the function stacks of functions for the thin binary that executes on the source instruction set architecture, into a first lower level dictionary of the source instruction set architecture;

means for indirection dereferencing source variable addresses, from the source variables for the thin binary that executes on the source instruction set architecture, into the first lower level dictionary of the source instruction set architecture;

means for indirection dereferencing destination function addresses, from the function stacks of functions for the thin binary that executes on the destination instruction set architecture, into a second lower level dictionary stored on the destination instruction set architecture;

means for indirection dereferencing destination variable addresses, from the destination variables for the thin binary that executes on the destination instruction set architecture, into the second lower level dictionary stored on the destination instruction set architecture; and

means for mapping, into a labeled form, the source function addresses and the source variable addresses to equivalent destination function addresses and destination variable addresses and storage of the mapped labeled form in the live migrator; and

means for migrating of the thin binary between the source instruction set architecture and the destination instruction set architecture by use of the mapped labeled form,

wherein the map of the source and destination variables and the address stacks of the thin binary facilitates transfer of state of the process, from the source instruction set architecture to the destination instruction set architecture, for migrating the thin binary between the source instruction set architecture and the destination instruction set architecture, using the map labeled form.

7. The live migrator of claim 6 , wherein:

the JIT compilation of the process includes production of an intermediate representation of the process on both the source instruction set architecture and the destination instruction set architecture, and

the map of the source and destination variables and the address stacks includes a map of variables and address stacks of the intermediate representation of the process from both the source instruction set architecture and the destination instruction set architecture into the labeled form thereof.

8. A live migrator, comprising:

a processor to execute a process on a source instruction set architecture; and

a just-in-time (JIT) compiler to JIT compile the process, wherein the JIT compilation of the process includes:

performance of a first JIT compilation of the process on the source instruction set architecture to generate a thin binary of the process, source variables, and function stacks of functions utilized by the thin binary on the source instruction set architecture;

storage of, in accordance with the source instruction set architecture, the source variables and the function stacks of functions utilized by the thin binary on the source instruction set architecture;

performance of a second JIT compilation of the process on a destination instruction set architecture to generate destination variables and function stacks of functions utilized by the thin binary on the destination instruction set architecture;

storage of, in accordance with the destination instruction set architecture, the destination variables and the function stacks of functions utilized by the thin binary on the destination instruction set architecture; and

map of the source and destination variables and address stacks of the thin binary from both the source instruction set architecture and the destination instruction set architecture into a labeled form by performance of:

indirection dereference of source function addresses, from the function stacks of functions for the thin binary that executes on the source instruction set architecture, into a first lower level dictionary of the source instruction set architecture;

indirection dereference of source variable addresses, from the source variables for the thin binary that executes on the source instruction set architecture, into the first lower level dictionary of the source instruction set architecture;

indirection dereference of destination function addresses, from the function stacks of functions for the thin binary that executes on the destination instruction set architecture, into a second lower level dictionary stored on the destination instruction set architecture;

indirection dereference of destination variable addresses, from the destination variables for the thin binary while executing on the destination instruction set architecture, into the second lower level dictionary stored on the destination instruction set architecture; and

map, into a labeled form, the source function addresses and the source variable addresses to equivalent destination function addresses and destination variable addresses and storage of the mapped labeled form in the live migrator,

wherein the processor is configured to migrate of the thin binary between the source instruction set architecture and the destination instruction set architecture by use of the mapped labeled form, and wherein the map of the source and destination variables and the address stacks of the thin binary facilitates transfer of state of the process, from the source instruction set architecture to the destination instruction set architecture, for migration of the thin binary between the source instruction set architecture and the destination instruction set architecture, using the map labeled form.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 15, 2021
From: EMPIRE TECHNOLOGY DEVELOPMENT LLC
To: INVINCIBLE IP LLC
Reel/Frame 055594/0500 →
RELEASE OF SECURITY INTEREST Recorded Oct 21, 2020
From: CRESTLINE DIRECT FINANCE, L.P.
To: EMPIRE TECHNOLOGY DEVELOPMENT LLC
Reel/Frame 054129/0627 →
SECURITY INTEREST Recorded Jan 29, 2019
From: EMPIRE TECHNOLOGY DEVELOPMENT LLC
To: CRESTLINE DIRECT FINANCE, L.P.
Reel/Frame 048373/0217 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 20, 2014
From: KRUGLICK, EZEKIEL
To: ARDENT RESEARCH CORPORATION
Reel/Frame 033572/0115 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 20, 2014
From: FINE, KEVIN S.
To: ARDENT RESEARCH CORPORATION
Reel/Frame 033572/0255 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 20, 2014
From: ARDENT RESEARCH CORPORATION
To: EMPIRE TECHNOLOGY DEVELOPMENT LLC
Reel/Frame 033572/0348 →