Skip to content
Xiaoguang Wang edited this page Jan 10, 2025 · 9 revisions

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:

  • An extended CRIU/CRIT
  • Dapper 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 Dapper:

More to Read

Note: You can skip the compiler toolchain steps, as all the necessary benchmarks are provided within this repository's test directory.

Contacts

Please contact Xiaoguang Wang (xgwang9@uic.edu) or Abhishek Bapat (abapat28@vt.edu) for any questions.

Clone this wiki locally