# checkpoint-restore/criu

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/checkpoint-restore-criu).**

3,697 stars · 716 forks · C · other

## Links

- GitHub: https://github.com/checkpoint-restore/criu
- Homepage: criu.org
- awesome-repositories: https://awesome-repositories.com/repository/checkpoint-restore-criu.md

## Topics

`blcr` `checkpoint` `container` `containers` `criu` `dmtcp` `highly-available` `linux` `memory-tracking` `migration` `parasite` `post-copy` `restore` `snapshot` `suspend` `userfaultfd` `zero-downtime`

## Description

CRIU is a Linux process checkpointing tool and state manager used to freeze running applications and save their memory and state to disk for later restoration. It functions as a container migration engine and an OCI checkpoint image converter, allowing the live state of running containers to be transferred between different hosts.

The project distinguishes itself through its ability to persist network connectivity, acting as a TCP connection state persister that saves and reconstructs network socket states to maintain active communication after a restart. It further enables the distribution of process checkpoints by transforming them into annotated OCI images for use with container registries.

The system covers a broad range of capabilities, including process tree recovery, memory image deduplication, and GPU workload checkpointing. It manages low-level system state such as PID namespaces, file locks, and mount points, while providing tools for application behavior analysis and image consistency verification.

The project is implemented in C.

## Tags

### Data & Databases

- [Application State Serialization](https://awesome-repositories.com/f/data-databases/binary-serialization/application-state-serialization.md) — Converts a running application's memory, registers, and file descriptors into a persistent image for later reconstruction.
- [State Snapshots](https://awesome-repositories.com/f/data-databases/data-snapshotting/state-snapshots.md) — Saves a series of application states to disk to allow reverting to previous points for debugging. ([source](http://criu.org/Usage_scenarios))
- [Diskless Replication](https://awesome-repositories.com/f/data-databases/primary-replica-replication/diskless-replication.md) — Transfers the state of a running application directly between hosts over a network without writing local files. ([source](http://criu.org/Category:Memory))
- [Diskless Process Migration](https://awesome-repositories.com/f/data-databases/primary-replica-replication/diskless-replication/diskless-process-migration.md) — Streams process images directly between hosts over a network to bypass local filesystem storage overhead.

### DevOps & Infrastructure

- [Container Checkpointing](https://awesome-repositories.com/f/devops-infrastructure/container-checkpointing.md) — Freezes a running container process to disk to stop execution and save state for later resumption. ([source](http://criu.org/Docker))
- [Container Migration Engines](https://awesome-repositories.com/f/devops-infrastructure/container-migration-engines.md) — Functions as a container migration engine for transferring the live state of running containers between hosts.
- [Mount Namespace Dependency Resolution](https://awesome-repositories.com/f/devops-infrastructure/bind-mounts/mount-namespace-dependency-resolution.md) — Resolves mount namespace dependencies by specifying external bind mounts required to dump and restore a container. ([source](http://criu.org/When_C/R_fails))
- [Checkpoint-Based Container Restoration](https://awesome-repositories.com/f/devops-infrastructure/container-images/checkpoint-based-container-restoration.md) — Resumes a container from a saved state by specifying an OCI image containing a checkpoint annotation. ([source](http://criu.org/Kubernetes))
- [Container Restoration](https://awesome-repositories.com/f/devops-infrastructure/container-restoration.md) — Reloads a saved container state from disk to resume execution from the exact point of suspension. ([source](http://criu.org/LXC))
- [Cross-Container State Migration](https://awesome-repositories.com/f/devops-infrastructure/cross-container-state-migration.md) — Transfers a saved checkpoint from one container into a different container using a custom storage path. ([source](http://criu.org/Docker))
- [Live Container State Migration](https://awesome-repositories.com/f/devops-infrastructure/live-container-state-migration.md) — Moves the live state of running containers across hosts or clusters to maintain service availability. ([source](http://criu.org/Academic_Research))
- [Checkpoint Image Synthesis](https://awesome-repositories.com/f/devops-infrastructure/oci-container-engines/oci-image-synthesis/checkpoint-image-synthesis.md) — Transforms a checkpoint archive into an annotated OCI image for distribution via a container registry. ([source](http://criu.org/Kubernetes))
- [Checkpoint Distribution](https://awesome-repositories.com/f/devops-infrastructure/container-image-registries/checkpoint-distribution.md) — Wraps container checkpoint data into standard OCI images for distribution and restoration through container registries. ([source](http://criu.org/Podman))
- [Incremental State Persistence](https://awesome-repositories.com/f/devops-infrastructure/custom-storage-adapters/state-storage-implementations/incremental-state-persistence.md) — Saves only memory changes made since the last checkpoint to reduce storage requirements and backup time. ([source](https://criu.org/Category:HOWTO))
- [Process State Duplication](https://awesome-repositories.com/f/devops-infrastructure/fault-tolerance-mechanisms/process-state-duplication.md) — Duplicates a process onto a remote machine periodically to ensure a quick failover if the primary system crashes. ([source](http://criu.org/Usage_scenarios))
- [Checkpoint Image Conversion](https://awesome-repositories.com/f/devops-infrastructure/oci-container-engines/oci-image-synthesis/checkpoint-image-conversion.md) — Transforms process checkpoints into annotated OCI images for distribution via container registries.

### Operating Systems & Systems Programming

- [Process State Checkpointing](https://awesome-repositories.com/f/operating-systems-systems-programming/process-state-checkpointing.md) — Saves running process states to disk and restarts them later from the exact point of suspension. ([source](http://criu.org/Category:HOWTO))
- [Address Space Code Injection](https://awesome-repositories.com/f/operating-systems-systems-programming/address-space-code-injection.md) — Injects and runs binary blobs inside another running process to perform routines without disrupting the target task. ([source](https://criu.org/Parasite_code))
- [Application File State Persistence](https://awesome-repositories.com/f/operating-systems-systems-programming/application-file-state-persistence.md) — Captures and restores external bind mounts, mount devices, and file descriptors to maintain environment consistency. ([source](http://criu.org/Category:HOWTO))
- [File Descriptor Restoration](https://awesome-repositories.com/f/operating-systems-systems-programming/file-descriptor-restoration.md) — Reconstitutes open files and service descriptors during recovery to ensure the application resumes from its exact state. ([source](http://criu.org/Category:Files))
- [Process and Memory Management](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management.md) — Freezes a running application and saves its memory and registers to disk for later resumption. ([source](http://criu.org/C_API))
- [Namespace-Based Isolation](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/process-isolation/namespace-based-isolation.md) — Restores processes into dedicated PID and mount namespaces to prevent identifier conflicts and maintain environment isolation.
- [PID Namespace Isolation](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/process-and-memory-management/process-isolation/namespace-based-isolation/pid-namespace-isolation.md) — Creates a new PID namespace during restoration to prevent process ID conflicts when restarting applications. ([source](http://criu.org/Todo))
- [Live Process Code Injection](https://awesome-repositories.com/f/operating-systems-systems-programming/live-process-code-injection.md) — Inserts and executes binary blobs within live processes to extract internal state without termination.
- [Mount Point Restoration](https://awesome-repositories.com/f/operating-systems-systems-programming/mount-point-restoration.md) — Saves and recreates filesystem mount points and namespaces to ensure the correct directory structure upon restoration. ([source](http://criu.org/Category:Under_the_hood))
- [Process Checkpointing Tools](https://awesome-repositories.com/f/operating-systems-systems-programming/process-checkpointing-tools.md) — Provides the core ability to freeze running applications and save their memory and state to disk for later restoration.
- [Process Identifier Restoration](https://awesome-repositories.com/f/operating-systems-systems-programming/process-identifier-restoration.md) — Reconstructs process IDs and file descriptors to maintain the original relationship between parent and child processes. ([source](http://criu.org/Category:Under_the_hood))
- [Pending Signal Preservation](https://awesome-repositories.com/f/operating-systems-systems-programming/process-signal-management/pending-signal-preservation.md) — Captures blocked signals and metadata during a freeze and reinstates them upon restart to maintain signal queues. ([source](http://criu.org/Pending_signals))
- [Process State Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/process-state-managers.md) — Captures and restores process trees, memory maps, and file descriptors within Linux namespaces.
- [Process Tree Recovery](https://awesome-repositories.com/f/operating-systems-systems-programming/process-tree-recovery.md) — Returns a running process tree to a previously checkpointed state on the same machine. ([source](http://criu.org/Todo))
- [System Resource Serialization](https://awesome-repositories.com/f/operating-systems-systems-programming/system-resource-serialization.md) — Manages the serialization and recovery of Unix sockets, files, and network devices via plugin callbacks. ([source](http://criu.org/Plugins))
- [TCP Connection Checkpointing](https://awesome-repositories.com/f/operating-systems-systems-programming/tcp-connection-checkpointing.md) — Saves the state of network sockets and their queues to enable the resumption of active communication after a process restart. ([source](https://criu.org/Libsoccr))
- [TCP Connection Restoration](https://awesome-repositories.com/f/operating-systems-systems-programming/tcp-connection-restoration.md) — Reconstructs network sockets using saved state and queue data to resume communication from a previous point. ([source](https://criu.org/Libsoccr))
- [Boot Sequence Bypasses](https://awesome-repositories.com/f/operating-systems-systems-programming/boot-sequence-bypasses.md) — Bypasses slow startup procedures by capturing the state of a service after its initial setup for faster subsequent launches. ([source](http://criu.org/Usage_scenarios))
- [Checkpoint Operation Configuration](https://awesome-repositories.com/f/operating-systems-systems-programming/checkpoint-operation-configuration.md) — Sets parameters for dump and restore actions including process IDs, image directories, and network socket handling. ([source](http://criu.org/C_API))
- [External Network State Persistence](https://awesome-repositories.com/f/operating-systems-systems-programming/external-network-state-persistence.md) — Handles the persistence and restoration of IP addresses, UNIX sockets, and virtual Ethernet devices. ([source](http://criu.org/Category:HOWTO))
- [External State Integration](https://awesome-repositories.com/f/operating-systems-systems-programming/external-state-integration.md) — Incorporates data from third-party system tools such as network routing tables into the checkpoint image. ([source](http://criu.org/Images))
- [Filesystem Lock Preservation](https://awesome-repositories.com/f/operating-systems-systems-programming/filesystem-lock-preservation.md) — Captures held filesystem locks during a checkpoint to recreate them upon restoration of the process. ([source](http://criu.org/What_cannot_be_checkpointed))
- [GPU Workload Checkpointing](https://awesome-repositories.com/f/operating-systems-systems-programming/gpu-resource-virtualization/gpu-workload-virtualization-and-containerization/gpu-workload-checkpointing.md) — Captures and restores the state of applications using GPU acceleration to enable failure recovery and workload migration. ([source](http://criu.org/Academic_Research))
- [Iterative Memory Migration](https://awesome-repositories.com/f/operating-systems-systems-programming/iterative-memory-migration.md) — Implements iterative memory transfer to reduce the duration a process remains frozen during host migration. ([source](https://criu.org/Live_migration))
- [Memory Change Tracking](https://awesome-repositories.com/f/operating-systems-systems-programming/memory-change-tracking.md) — Monitors modifications to memory pages to optimize the dumping process and minimize the time an application remains frozen. ([source](http://criu.org/Category:Memory))
- [Memory Image Deduplication](https://awesome-repositories.com/f/operating-systems-systems-programming/memory-image-deduplication.md) — Merges identical memory pages across checkpoints to reduce the total storage space required for saved states. ([source](http://criu.org/Category:API))
- [Post-Copy Memory Restoration](https://awesome-repositories.com/f/operating-systems-systems-programming/memory-state-restoration/post-copy-memory-restoration.md) — Implements a page-server mechanism to restore process execution immediately and fetch memory pages on demand.
- [Non-Freezing Memory Capture](https://awesome-repositories.com/f/operating-systems-systems-programming/non-freezing-memory-capture.md) — Reads process memory using system calls to prevent task freezes and memory exhaustion during the data dump phase. ([source](http://criu.org/Todo))
- [Process Restorability Verification](https://awesome-repositories.com/f/operating-systems-systems-programming/process-restorability-verification.md) — Checks a running process to determine if its current state can be successfully frozen and restored. ([source](http://criu.org/Usage))
- [Process Restoration Configuration](https://awesome-repositories.com/f/operating-systems-systems-programming/process-restoration-configuration.md) — Uses configuration files to set behavioral flags such as preserving established TCP connections during a restore. ([source](http://criu.org/Docker))
- [Remote System Call Execution](https://awesome-repositories.com/f/operating-systems-systems-programming/remote-system-call-execution.md) — Triggers system calls on remote targets to coordinate the transfer of process states. ([source](http://criu.org/Category:API))
- [Seamless Kernel Upgrades](https://awesome-repositories.com/f/operating-systems-systems-programming/seamless-kernel-upgrades.md) — Checkpoints active processes before a kernel replacement and restores them afterward to maintain service continuity. ([source](http://criu.org/Usage_scenarios))

### Networking & Communication

- [Network Connection Preservation](https://awesome-repositories.com/f/networking-communication/tcp-connection-lifecycles/connection-state-management/network-connection-preservation.md) — Captures and restores the state of TCP connections and Unix sockets to maintain connectivity after a restart. ([source](http://criu.org/Asciinema))
- [TCP Connection State Persisters](https://awesome-repositories.com/f/networking-communication/tcp-connection-state-persisters.md) — Saves and reconstructs network socket states to maintain active communication after a process restart.
- [TCP State Reconstruction](https://awesome-repositories.com/f/networking-communication/tcp-state-reconstruction.md) — Saves network socket queues and metadata to maintain active communication channels after a process is restored.
- [Process Network Restoration](https://awesome-repositories.com/f/networking-communication/tcp-connection-lifecycles/connection-state-management/session-restoration/process-network-restoration.md) — Re-establishes network connectivity for a restored application, including the ability to change IP addresses across hosts. ([source](https://criu.org/Category:HOWTO))
- [TCP Connection Repair](https://awesome-repositories.com/f/networking-communication/tcp-connection-repair.md) — Offloads application-level request handling to another machine by repairing network connection state during a transition. ([source](http://criu.org/Usage_scenarios))
- [Breakable Unix Socket Management](https://awesome-repositories.com/f/networking-communication/unix-domain-socket-support/breakable-unix-socket-management.md) — Marks local unix connections as breakable during a state dump so they can be re-established upon restoration. ([source](https://criu.org/When_C/R_fails))

### System Administration & Monitoring

- [Live Process Code Injection](https://awesome-repositories.com/f/system-administration-monitoring/diagnostic-tools/diagnostics/memory-profilers/live-process-code-injection.md) — Inserts and executes code within a live process to extract internal state information without terminating the application. ([source](https://cdn.jsdelivr.net/gh/checkpoint-restore/criu@criu-dev/README.md))
- [Breakable](https://awesome-repositories.com/f/system-administration-monitoring/administrative-operations/linux-system-administration/networking/socket-protocol-layering/socket-management/breakable.md) — Marks open network sockets as breakable during a state dump and reconnects them upon restoration. ([source](http://criu.org/When_C/R_fails))
- [User-Space Probe Checkpointing](https://awesome-repositories.com/f/system-administration-monitoring/logging-and-telemetry/dynamic-binary-instrumentation/dynamic-kernel-probes/user-defined-probes/user-space-probe-checkpointing.md) — Captures the state of running applications using user-space probes without losing the probe memory mapping. ([source](http://criu.org/Download/criu/4.2))
- [Process Freeze Controls](https://awesome-repositories.com/f/system-administration-monitoring/resource-batch-operations/general-batch-operations/app-freezing-batches/remote-freeze-controls/process-freeze-controls.md) — Provides a background service to trigger application freezes and restores without direct command line interaction. ([source](http://criu.org/RPC))

### Programming Languages & Runtimes

- [JVM Instance Snapshotting](https://awesome-repositories.com/f/programming-languages-runtimes/jvm-instance-snapshotting.md) — Captures the state of an executing Java program to eliminate start-up and warm-up delays during restoration. ([source](http://criu.org/Integration))

### Testing & Quality Assurance

- [Restore Image Validation](https://awesome-repositories.com/f/testing-quality-assurance/restore-image-validation.md) — Checks the integrity and availability of required files before resuming a process to prevent crashes. ([source](http://criu.org/Category:Files))
