CRaC Engines
Creating and restoring a checkpoint is performed by a component called the "CRaC Engine". This engine performs all the heavy lifting of recording the state of the process and its reconstruction on restore. The engine also defines the image storage format and can provide extra features such as image compression and decompression.
The first engine that has been developed within the CRaC project was based on CRIU. This is a standard Linux Checkpoint/Restore In Userspace feature. The CRIU-based engine has some limitations, such as the requirement for root privileges.
The goal of the CRaC-project is to eventually provide different engines for all platforms. As such, Warp has been added as an alternative CRaC engine for Linux systems within the Azul Zulu Builds of OpenJDK.
CRIU Based Engine
The default engine in CRaC is CRIU-based. This engine must be run as root user, usually achieved through ownership with the SUID bit, as described here.
To perform a checkpoint in a containerized environment, the engine must be granted the CHECKPOINT_RESTORE
and SYS_PTRACE
capabilities, as described on Starting an Application in a Docker Container, which might be a limiting factor for the deployment.
This engine can be enabled with the VM option -XX:CRaCEngine=criu
(which is also the default option).
Warp Engine
With the release of October '24, an alternative, CRIU-independent engine for checkpoint and restore, Warp, has been added. This engine doesn’t require any additional privileges, neither for checkpoint nor for restore. This new engine can be enabled with the VM option -XX:CRaCEngine=warp
.
An application that gets restored with -XX:CRaCEngine=warp
doesn’t run with the same PID and TIDs as the original process. If the application relies on these values, a Resource must be defined to handle this during the restore. Additionaly, if any file descriptors were ignored through FD policies, these might not be restored the same way.
Warp also brings additional optimizations, useful mainly when the image is compressed, as described in Using Image Compression on Checkpoint. See CRaC Command-Line Options and System Properties > Command Line Options for more information.
Note
|
These additional optimizations as well as image compression with Warp are only available in the Subscriber Availability (SA) builds as a preview (EA). |