-
Notifications
You must be signed in to change notification settings - Fork 0
Home
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.
- Extensive introduction to H-Container
- VEE 2020 paper on ACM
- Demo video on Youtube
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:
- First setup an ARM and an x86 virtual machines
-
Second run any of our Docker examples
- Hello-world (from ARM to x86)
- Redis (from x86 to ARM)
- Nginx (from x86 to ARM)
Instructions to run H-Container on bare-metal and QEMU, and without Docker, can be found on the CRIUHET Wiki.
- Popcorn Compiler “criu” branch https://github.com/systems-nuts/popcorn-compiler/tree/criu
- CRIU, two different branches based on the usage, for Docker “heterogeneous-simplified” is recommended
- Docker scripts and demo https://github.com/systems-nuts/hcontainer-tutorial
- https://github.com/systems-nuts/hcontainer-benchmark
- https://github.com/systems-nuts/hcontainer-micro_benchmark_script
- https://github.com/systems-nuts/hcontainer-nginx
- https://github.com/systems-nuts/hcontainer-game
- https://github.com/systems-nuts/hcontainer-gzip
- https://github.com/systems-nuts/hcontainer-redis
- https://github.com/systems-nuts/hcontainer-lighttpd
- https://github.com/systems-nuts/hcontainer-testscript
- We don't support mcsema at the moment due to fundamental changes in their repos
Please contact Antonio Barbalace abarbala@ed.ac.uk, or Tong Xing Tong.Xing@ed.ac.uk