- 
                Notifications
    You must be signed in to change notification settings 
- Fork 0
Home
Welcome to the Dapper project wiki!
Dapper supports live migration of natively compiled Linux applications across CPUs of different architectures.
Dapper 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, Dapper supports process migration across x86-64 and aarch64 CPUs. Dapper uses LLVM's stack maps to generate stack and register metadata (e.g., live value locations at cross-architecture migration points). Dapper leverages the Popcorn Linux compiler to generate this metadata. Using the metadata, Dapper 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., Dapper's images are almost identical to CRIU's images).
Dapper consists of two parts:
This repository provides the CRIU wrapper. The compiler toolchain can be found on this branch of the Popcorn compiler repository.
To get started with Dapper:
- Setup an x86-64+aarch64environment using virtual machines (~15-30 mins).
- Build Dapper on each VMs (~15 mins)
- 
Live migrate a simple program from x86toARM(~20 mins)
Note: You can skip the compiler toolchain steps, as all the necessary benchmarks are provided within this repository's test directory.
Please contact Xiaoguang Wang (xgwang9@uic.edu) or Abhishek Bapat (abapat28@vt.edu) for any questions.