Skip to content
Xiaoguang Wang edited this page May 3, 2022 · 15 revisions

Welcome to the TransProc wiki!

TransProc supports live migration of natively compiled Linux applications across CPUs of different architectures. TransProc supports live migration on VMs as well as on bare-metal.

TransProc builds on top of CRIU to dump a running Linux process, and then transforms the CRIU-generated artifacts to restore the process on a CPU of a different architecture. Currently, TransProc supports process migration across x86-64 and aarch64 CPUs. TransProc uses LLVM's stack maps to generate stack and register metadata (e.g., live variable locations at cross-architecture migration points). TransProc leverages the Popcorn Linux compiler for generating this metadata. Using the metadata, TransProc implements a cross-architecture transformation logic on the CRIU-dumped images to transform the process's stack and register format from the source ABI format to the destination ABI format. Since the CRIU-dumped images are transformed externally, the images are devoid of any embedded transformation logic, which improves security (e.g., TransProc's images are almost identical to CRIU's images).

TransProc consists of two parts:

  • An extended CRIU
  • TransProc compiler toolchain

This repository provides the CRIU wrapper. The compiler toolchain can be found on this branch of the Popcorn compiler repository.

Getting Started

To get started with TransProc:

Note: You can skip the compiler toolchain and benchmark building steps. All the necessary benchmarks are provided within the test directory of this repository.

Contacts

Please contact Abhishek Bapat ([email protected]) or Xiaoguang Wang ([email protected]) for any questions.