Difference between revisions of "Integration"
(+ rocket) |
m |
||
(36 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. | ||
− | == | + | == Container platforms == |
− | |||
− | + | === Virtuozzo/OpenVZ === | |
− | * [https://openvz.org | + | {{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. | ||
+ | |||
+ | * [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| | + | |
+ | === Docker === | ||
+ | {{Status|ready}} | ||
* [https://docker.io Project homepage] | * [https://docker.io Project homepage] | ||
− | * | + | * [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] | ||
+ | |||
+ | === Screen/TMUX === | ||
+ | {{Status|stalled}} | ||
+ | |||
+ | * Jerome [https://github.com/jpetazzo/critmux did] this some time ago | ||
+ | |||
+ | ''See also: [[Screen]]'' | ||
− | == | + | === Shell === |
{{Status|not started}} | {{Status|not started}} | ||
− | == OpenMPI == | + | 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| | + | {{Status|not started}} |
− | * Ruslan Kuprieiev plans to [http://lists.openvz.org/pipermail/criu/2015-January/018875.html patch] | + | |
+ | * [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
- Project homepage
- The tools version 1.1.0 fully supports CRIU to C/R LXC containers
- lxc-checkpoint man page
See also: LXC
Docker[edit]
Status: ready
- Project homepage
- Merged into libcontainer/runc
- Merged into Docker itself
- Preparations efforts done by Saied Kazemi
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
- Project homepage here
- Integration code on the github
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).