Difference between revisions of "Integration"

From CRIU
Jump to navigation Jump to search
m
m
 
(37 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
CRIU is not so easy to be used as a standalone tool -- it works best integrated into other software. This page lists such software and provides details about the current status.
 
CRIU is not so easy to be used as a standalone tool -- it works best integrated into other software. This page lists such software and provides details about the current status.
  
== OpenVZ ==
+
== Container platforms ==
{{Status|in progress}}
 
  
Currently, vzctl supports CRIU for checkpoint/restore of upstream containers (i.e. when non-OpenVZ kernel is used). Commands <code>vzctl suspend</code> and <code>vzctl restore</code> fully work. Live migration doesn't work yet as it requires support for <code>vzctl suspend {--suspend, --dump, --kill, --restore}</code> which is not yet implemented as it requires a separate daemon to hold the state of a partially checkpointed container (or an ability from criu tool to do that).
+
=== Virtuozzo/OpenVZ ===
* [https://openvz.org Project homepage]
+
{{Status|ready}}
* [http://git.openvz.org/?p=vzctl&a=search&h=HEAD&st=commit&s=CRIU%7Ccriu%7Ccrtools&sr=1 Relevant vzctl git commits]
+
 
 +
As of Virtuozzo/OpenVZ 7, CRIU is fully integrated and supported. Older OpenVZ releases used in-kernel checkpoint/restore functionality, now superseded by CRIU.
 +
 
 +
* [https://openvz.org/ OpenVZ]
 +
* [https://virtuozzo.com/ Virtuozzo]
  
== LXC/LXD ==
+
=== LXC/LXD ===
 
{{Status|ready}}
 
{{Status|ready}}
 
* [http://linuxcontainers.org Project homepage]
 
* [http://linuxcontainers.org Project homepage]
Line 14: Line 17:
 
* [https://linuxcontainers.org/lxc/manpages/man1/lxc-checkpoint.1.html lxc-checkpoint man page]
 
* [https://linuxcontainers.org/lxc/manpages/man1/lxc-checkpoint.1.html lxc-checkpoint man page]
  
== Docker ==
+
''See also: [[LXC]]''
{{Status|in progress}}
+
 
 +
=== Docker ===
 +
{{Status|ready}}
 
* [https://docker.io Project homepage]
 
* [https://docker.io Project homepage]
* Integration [https://github.com/docker/libcontainer/pull/204 efforts] done by Saied Kazemi from Google
+
* [https://github.com/docker/libcontainer/pull/479 Merged] into libcontainer/runc
 +
* [https://github.com/docker/docker/pull/22049 Merged] into Docker itself
 +
* Preparations [https://github.com/docker/libcontainer/pull/204 efforts] done by Saied Kazemi
 +
 
 +
''See also: [[Docker]] C/R''
 +
 
 +
== Podman ==
 +
{{Status|ready}}
 +
* [https://podman.io/ Project homepage]
 +
* [https://podman.io/blogs/2018/10/10/checkpoint-restore.html Blog entry about adding the support]
 +
 
 +
== Tools and utilities ==
 +
 
 +
=== The <code>file</code> utility ===
 +
{{Status|ready}}
 +
* Starting from v1.6 new images (v1.1) will be generated
 +
* File utility starting from 5.23 [https://github.com/file/file/commit/0d76d756c5d7d5bbd4df6390b21b080f32665fd6 will support these]
  
== OpenMPI ==
+
=== Screen/TMUX ===
 +
{{Status|stalled}}
 +
 
 +
* Jerome [https://github.com/jpetazzo/critmux did] this some time ago
 +
 
 +
''See also: [[Screen]]''
 +
 
 +
=== Shell ===
 +
{{Status|not started}}
 +
 
 +
It would be nice to have bash (or other shell) to launch criu with <code>--restore-sibling</code> option and get new kid processes from it. Right now we workaround it with "[[shell jobs]]".
 +
 
 +
''See also: [[Shell jobs]]''
 +
 
 +
== Other ==
 +
 
 +
=== OpenJDK ===
 +
{{Status|started}}
 +
 
 +
The [https://openjdk.java.net/projects/crac/ CRaC] (Coordinated Restore at Checkpoint) Project researches coordination of Java programs with mechanisms to checkpoint (make an image of, snapshot) a Java instance while it is executing. Restoring from the image could be a solution to some of the problems with the start-up and warm-up times. The primary aim of the Project is to develop a new standard mechanism-agnostic API to notify Java programs about the checkpoint and restore events. Other research activities will include, but will not be limited to, integration with existing checkpoint/restore mechanisms and development of new ones, changes to JVM and JDK to make images smaller and ensure they are correct.
 +
 
 +
* [https://openjdk.java.net/projects/crac/index.html OpenJDK: CRaC Project]
 +
* [https://wiki.openjdk.java.net/display/crac CRaC Wiki]
 +
* [https://github.com/openjdk/crac CRaC Repository]
 +
 
 +
=== OpenMPI ===
 
{{Status|stalled}}
 
{{Status|stalled}}
 
* Adrian Reber [https://lisas.de/~adrian/open-mpi.git/ did] first version of patches
 
* Adrian Reber [https://lisas.de/~adrian/open-mpi.git/ did] first version of patches
  
== Wayland/Weston ==
+
=== Subgraph OS ===
{{Status|under investigation}}
+
{{Status|not started}}
* Ruslan Kuprieiev plans to [http://lists.openvz.org/pipermail/criu/2015-January/018875.html patch] the X-server to let CRIU C/R graphical apps
+
 
 +
* [https://subgraph.com/sgos/index.en.html Subgraph OS] is a desktop operation system uses containers for users applications.
 +
 
 +
=== SLURM workload manager ===
 +
{{Status|ready}}
 +
 
 +
* Project homepage [http://slurm.schedmd.com/slurm.html here]
 +
* Integration code [https://github.com/supermanue/slurm/commits/criuPlugin on the github]
 +
 
 +
=== Wayland/Weston ===
 +
{{Status|stalled}}
 +
* Ruslan Kuprieiev plans to [http://lists.openvz.org/pipermail/criu/2015-January/018875.html patch] Weston to let CRIU C/R graphical apps
 +
 
 +
''See also: [[X applications]]
 +
 
 +
=== Systemd ===
 +
{{Status|not started}}
 +
 
 +
Adrian suggested that migrating
 +
processes from one system to another works, depending on the process,
 +
pretty good. Migrating a process under systemd's control might be
 +
possible by just killing the process on the source side but it cannot
 +
become a child process of systemd on the destination of the migration
 +
without systemd knowing how to restore a process and thus making it a
 +
child process of systemd (--restore-sibling).
  
 
[[Category:Plans]]
 
[[Category:Plans]]
 +
[[Category:Development]]

Latest revision as of 10:13, 17 September 2021

CRIU is not so easy to be used as a standalone tool -- it works best integrated into other software. This page lists such software and provides details about the current status.

Container platforms[edit]

Virtuozzo/OpenVZ[edit]

Status: ready

As of Virtuozzo/OpenVZ 7, CRIU is fully integrated and supported. Older OpenVZ releases used in-kernel checkpoint/restore functionality, now superseded by CRIU.

LXC/LXD[edit]

Status: ready

See also: LXC

Docker[edit]

Status: ready

See also: Docker C/R

Podman[edit]

Status: ready

Tools and utilities[edit]

The file utility[edit]

Status: ready

  • Starting from v1.6 new images (v1.1) will be generated
  • File utility starting from 5.23 will support these

Screen/TMUX[edit]

Status: stalled

  • Jerome did this some time ago

See also: Screen

Shell[edit]

Status: not started

It would be nice to have bash (or other shell) to launch criu with --restore-sibling option and get new kid processes from it. Right now we workaround it with "shell jobs".

See also: Shell jobs

Other[edit]

OpenJDK[edit]

Status: started

The CRaC (Coordinated Restore at Checkpoint) Project researches coordination of Java programs with mechanisms to checkpoint (make an image of, snapshot) a Java instance while it is executing. Restoring from the image could be a solution to some of the problems with the start-up and warm-up times. The primary aim of the Project is to develop a new standard mechanism-agnostic API to notify Java programs about the checkpoint and restore events. Other research activities will include, but will not be limited to, integration with existing checkpoint/restore mechanisms and development of new ones, changes to JVM and JDK to make images smaller and ensure they are correct.

OpenMPI[edit]

Status: stalled

  • Adrian Reber did first version of patches

Subgraph OS[edit]

Status: not started

  • Subgraph OS is a desktop operation system uses containers for users applications.

SLURM workload manager[edit]

Status: ready

Wayland/Weston[edit]

Status: stalled

  • Ruslan Kuprieiev plans to patch Weston to let CRIU C/R graphical apps

See also: X applications

Systemd[edit]

Status: not started

Adrian suggested that migrating processes from one system to another works, depending on the process, pretty good. Migrating a process under systemd's control might be possible by just killing the process on the source side but it cannot become a child process of systemd on the destination of the migration without systemd knowing how to restore a process and thus making it a child process of systemd (--restore-sibling).