-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Welcome to the TransProc wiki!
TransProc supports live migration of natively compiled Linux applications across CPUs of different architectures.
TransProc leverages CRIU to dump a running Linux process. Our extended CRIT tool can transform the CRIU-generated process image into a format that can run on another architecture. The transformed process image can then be restored 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 value 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.
To get started with TransProc:
- Setup an x86-64 + aarch64 environment either using virtual machines (recommended) or on bare-metal (a RaspberryPi + a x86-64 server)
- Install TransProc within the setup
- Install the TransProc compiler toolchain to generate tranform-able binaries (optional)
- Build the benchmarks (optional)
- Migrate a "Hello World" program (recommended)
- Migrate processes across architectures (advanced)
- Stack shuffle process
Note: It is recommended to try the simple "Hello World" program migration on VMs provided by us before moving on to the advanced ones. Once this is done, the user will have a decent understanding on how the setup is supposed to be done and they can start migrating advanced tests on custom built kernels.
Note: You can skip the compiler toolchain and benchmark building steps. All the necessary benchmarks are provided within the test
directory of this repository.
Please contact Abhishek Bapat (abapat28@vt.edu) or Xiaoguang Wang (xiaoguang@vt.edu) for any questions.