Skip to content
Tong XING edited this page Sep 17, 2020 · 18 revisions

Welcome to H-Container wiki!

H-Container enables containerized applications, natively compiled for a specific ISA, to runtime migrate (similar to VM migration) across compute nodes featuring CPUs of different ISAs, such as ARM and x86. H-Container takes a natively compiled binary (for Linux) and transforms it into a natively compiled set of binaries, one per ISA. Once a binary is started and checkpointed on a machine, it can be restarted on a machine with a different ISA. Thus, enabling runtime migration of applications (note that live-migration is also supported). H-Container supports not just single applications but also entire containers.

H-Container fully integrates with Docker. However, at least at the time of writing, Docker supports container checkpoint/restart (with CRIU) on a single machine only, checkpoint/restart among different (heterogeneous-ISA) machines is completely manual. This repository provides the tools and instructions to enable Docker container migration.

How to Start?

The quicker way to start with H-Container is by using our Docker examples. To test H-Container you need an ARM plus x86 setup, either bare-metal (i.e., two different machines), emulated (using QEMU), or cloud-based (e.g., AWS). To run H-Container on AWS using Docker you need to follow the following steps:

Instructions to run H-Container on bare-metal and QEMU, and without Docker, can be found on the CRIUHET Wiki.

Repositories Organization

Core Components

Microbenchmarks

Benchmarks

Note

  • We don't support mcsema at the moment due to fundamental changes in their repos

Contacts

Please contact Antonio Barbalace abarbala@ed.ac.uk, or Tong Xing Tong.Xing@ed.ac.uk