<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://criu.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Radostin</id>
	<title>CRIU - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://criu.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Radostin"/>
	<link rel="alternate" type="text/html" href="https://criu.org/Special:Contributions/Radostin"/>
	<updated>2026-05-13T14:22:29Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.6</generator>
	<entry>
		<id>https://criu.org/index.php?title=Articles&amp;diff=5896</id>
		<title>Articles</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Articles&amp;diff=5896"/>
		<updated>2026-04-17T13:46:05Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;This is a collection of external articles regarding the CRIU project, sorted by date.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
   NOTE this page is included into [[Main Page]] (look for External articles)&lt;br /&gt;
        so please make sure that Main Page looks good after your edits!&lt;br /&gt;
&lt;br /&gt;
   PLEASE keep the lists sorted by date, newest ones on top.&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
* 2026-07-27, [https://radostin.io/files/stoyanov-dfrws-usa-2026.pdf Forensic Analysis of Container Snapshot Chains for Post-Event Reconstruction]&lt;br /&gt;
* 2026-04-27, [https://radostin.io/files/stoyanov-euromlsys-2026.pdf Towards On-the-Fly Snapshot Memory Compression for Low-Latency Elastic Inference Serving Systems]&lt;br /&gt;
* 2026-02-24, [https://www.usenix.org/conference/fast26/presentation/zeng GPU Checkpoint/Restore Made Fast and Lightweight]&lt;br /&gt;
* 2026-01-21, [https://kubernetes.io/blog/2026/01/21/introducing-checkpoint-restore-wg/ Announcing the Checkpoint/Restore Working Group]&lt;br /&gt;
* 2025-11-17, [https://radostin.io/files/stoyanov-canopie-hpc-2025.pdf Engine-Agnostic Model Hot-Swapping for Cost-Effective LLM Inference]&lt;br /&gt;
* 2025-09-16, [https://www.idt.mdu.se/~aps01/research/2025_Johansson/2025-JSA-Johansson.pdf Checkpointing and State Transfer for Industrial Controller Redundancy]&lt;br /&gt;
* 2025-08-13, [https://www.usenix.org/conference/usenixsecurity25/presentation/li-ao Software Availability Protection in Cyber-Physical Systems]&lt;br /&gt;
* 2025-07-14, [https://arxiv.org/abs/2405.12079 PhoenixOS: Concurrent OS-level GPU Checkpoint and Restore with Validated Speculation]&lt;br /&gt;
&amp;lt;!------------------------------------------------&lt;br /&gt;
   This is to cut the rest of it for Main Page,&lt;br /&gt;
   adding the More... link instead.&lt;br /&gt;
   Make sure to move this whole block up from time to time.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;: '''[[Articles|More external articles...]]'''&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
     the below stuff is now shown on the Main Page&lt;br /&gt;
--------------------------------------------------&amp;gt;&lt;br /&gt;
* 2025-06-18, [https://is.muni.cz/th/ekn8q/ Improving Checkpoint/Restore Functionality in Kubernetes]&lt;br /&gt;
* 2025-06-17, LWN.net: [https://lwn.net/Articles/1024747/ A parallel path for GPU restore in CRIU]&lt;br /&gt;
* 2025-06-13, [https://doi.org/10.1007/978-3-032-10507-3_3 Kubernetes Scheduling with Checkpoint/Restore: Challenges and Open Problems]&lt;br /&gt;
* 2025-06-12, [https://doi.org/10.1109/TNSM.2025.3579051 MOSE: A Novel Orchestration Framework for Stateful Microservice Migration at the Edge]&lt;br /&gt;
* 2025-05-14, [https://doi.org/10.1145/3672608.3707723 Elastic Vertical Memory Management for Container-based Stateful Applications in Kubernetes]&lt;br /&gt;
* 2025-05-02, [https://doi.org/10.1007/s42514-025-00227-0 Practice and Observation: Live Migration for MPI Workload]&lt;br /&gt;
* 2025-04-28, [https://www.usenix.org/conference/nsdi25/presentation/segarra GRANNY: Granular Management of Compute-Intensive Applications in the Cloud]&lt;br /&gt;
* 2025-04-28, [https://ieeexplore.ieee.org/abstract/document/10979504 KubeSPT: Stateful Pod Teleportation for Service Resilience with Live Migration]&lt;br /&gt;
* 2025-04-04, [https://doi.org/10.1109/ICIN64016.2025.10942720 Optimizing Stateful Microservice Migration in Kubernetes with MS2M and Forensic Checkpointing]&lt;br /&gt;
* 2025-03-30, [https://doi.org/10.1145/3676641.3715988 CXLfork: Fast Remote Fork over CXL Fabrics]&lt;br /&gt;
* 2025-02-23, [https://arxiv.org/abs/2502.16631 CRIUgpu: Transparent Checkpointing of GPU-Accelerated Workloads]&lt;br /&gt;
* 2025-02-05, [https://doi.org/10.1007/s00607-025-01447-6 A Comprehensive Performance Evaluation of Container Migration Strategies]&lt;br /&gt;
* 2024-11-21, [https://dl.acm.org/doi/10.1145/3698038.3698510 On-demand and Parallel Checkpoint/Restore for GPU Applications]&lt;br /&gt;
* 2024-11-20, [https://dl.acm.org/doi/10.1145/3698038.3698513 Snapipeline: Accelerating Snapshot Startup for FaaS Containers]&lt;br /&gt;
* 2024-09-06, [https://dl.acm.org/doi/10.1145/3660319.3660330 Live Migration of Multi-Container Kubernetes Pods in Multi-Cluster Serverless Edge Systems]&lt;br /&gt;
* 2024-09-04, [https://dl.acm.org/doi/10.1145/3678015.3680477 Towards Efficient End-to-End Encryption for Container Checkpointing Systems]&lt;br /&gt;
* 2024-09-02, [https://doi.org/10.1016/j.future.2024.107495 CSMD: Container state management for deployment in cloud data centers]&lt;br /&gt;
* 2024-08-21, [https://ieeexplore.ieee.org/abstract/document/10628207 The State of Container Checkpointing with CRIU: A Multi-Case Experience Report]&lt;br /&gt;
* 2024-08-04, [https://dl.acm.org/doi/abs/10.1145/3672197.3673432 Custom Page Fault Handling With eBPF]&lt;br /&gt;
* 2024-08-03, [https://dl.acm.org/doi/10.1145/3663408.3663416 Software-based Live Migration for Containerized RDMA]&lt;br /&gt;
* 2024-07-30, [https://ieeexplore.ieee.org/abstract/document/10606135 Packet Buffering to Minimize Service Downtime and Packet Loss During Redundancy Switchover]&lt;br /&gt;
* 2024-07-30, [https://dl.acm.org/doi/abs/10.1145/3664476.3670895 Don't, Stop, Drop, Pause: Forensics of CONtainer CheckPOINTs (ConPoint)]&lt;br /&gt;
* 2024-07-25, [https://doi.org/10.1186/s13677-024-00687-9 MDB-KCP: persistence framework of in-memory database with CRIU-based container checkpoint in Kubernetes]&lt;br /&gt;
* 2024-07-23, [https://ieeexplore.ieee.org/abstract/document/10631042 Dapper: A Lightweight and Extensible Framework for Live Program State Rewriting]&lt;br /&gt;
* 2024-07-07, [https://ieeexplore.ieee.org/abstract/document/10643902 FastMig: Leveraging FastFreeze to Establish Robust Service Liquidity in Cloud 2.0]&lt;br /&gt;
* 2024-07-02, [https://developer.nvidia.com/blog/checkpointing-cuda-applications-with-criu/ Checkpointing CUDA Applications with CRIU]&lt;br /&gt;
* 2024-06-19, [https://arxiv.org/abs/2406.13856 Kishu: Time-Traveling for Computational Notebooks]&lt;br /&gt;
* 2024-06-09, [https://dl.acm.org/doi/abs/10.1145/3626246.3654752 Demonstration of ElasticNotebook: Migrating Live Computational Notebook States]&lt;br /&gt;
* 2024-05-30, [https://is.muni.cz/th/tadf0/phd-thesis-proposal-digital.pdf In the Container Era: A Coup in Reliable Computing Over Unreliable Infrastructure]&lt;br /&gt;
* 2024-05-20, [https://arxiv.org/abs/2405.12079v1 ParallelGPUOS: A Concurrent OS-level GPU Checkpoint and Restore System using Validated Speculation]&lt;br /&gt;
* 2024-05-09, [https://www.sciencedirect.com/science/article/pii/S1383762124000948 Practicable live container migrations in high performance computing clouds: Diskless, iterative, and connection-persistent]&lt;br /&gt;
* 2024-05-06, [https://ieeexplore.ieee.org/abstract/document/10701375 Workload-Aware Live Migratable Cloud Instance Detector]&lt;br /&gt;
* 2024-05-06, [https://ieeexplore.ieee.org/abstract/document/10707218 Migration of Isolated Application Across Heterogeneous Edge Systems]&lt;br /&gt;
* 2024-04-26, [https://fis.tu-dresden.de/portal/files/53673228/planeta_bearb_pref2b_20240912193924.pdf Fine-grained OS Control over High-performance Networking]&lt;br /&gt;
* 2024-04-22, [https://dl.acm.org/doi/abs/10.1145/3627703.3650085 Just-In-Time Checkpointing: Low Cost Error Recovery from Deep Learning Training Failures]&lt;br /&gt;
* 2024-04-22, [https://dl.acm.org/doi/10.1145/3627703.3629556 Pronghorn: Effective Checkpoint Orchestration for Serverless Hot-Starts]&lt;br /&gt;
* 2024-02-09, [https://ejournal.unitomo.ac.id/index.php/inform/article/view/7498/3738 Forensic Analysis of Podman Container Towards Metasploit Backdoor Using Checkpointctl]&lt;br /&gt;
* 2024-01-29, [https://www.sciencedirect.com/science/article/pii/S0167739X24000190 Prebaking runtime environments to improve the FaaS cold start latency]&lt;br /&gt;
* 2023-11-27, [https://dl.acm.org/doi/abs/10.1145/3590140.3629121 DynaCut: A Framework for Dynamic and Adaptive Program Customization]&lt;br /&gt;
* 2023-11-12, [https://dl.acm.org/doi/10.1145/3624062.3624254 Checkpoint/Restart for CUDA Kernels]&lt;br /&gt;
* 2023-11-10, [https://ieeexplore.ieee.org/abstract/document/10314806 Design, Modeling, and Implementation of Robust Migration of Stateful Edge Microservices]&lt;br /&gt;
* 2023-10-23, [https://dl.acm.org/doi/10.1145/3605181.3626289 Evicting for the greater good: The Case for Reactive Checkpointing in Serverless Computing]&lt;br /&gt;
* 2023-10-01, [https://dl.acm.org/doi/10.14778/3626292.3626296 ElasticNotebook: Enabling Live Migration for Computational Notebooks]&lt;br /&gt;
* 2023-09-25, [https://ieeexplore.ieee.org/abstract/document/10419298 Transparent Fault Tolerance for Stateful Applications in Kubernetes with Checkpoint/Restore]&lt;br /&gt;
* 2023-07-21, [https://vtechworks.lib.vt.edu/items/20cd28e6-1dba-4c21-b221-59f5f345205f CRIU-RTX: Remote Thread eXecution using Checkpoint/Restore in Userspace]&lt;br /&gt;
* 2023-07-10, [https://www.usenix.org/conference/osdi23/presentation/wei-rdma No Provisioned Concurrency: Fast RDMA-codesigned Remote Fork for Serverless Computing]&lt;br /&gt;
* 2023-07-06, [https://ieeexplore.ieee.org/abstract/document/10207336 Microservice Debugging with Checkpoint-Restart]&lt;br /&gt;
* 2023-05-28, [https://ieeexplore.ieee.org/abstract/document/10278877 Processing-Aware Migration Model for Stateful Edge Microservices]&lt;br /&gt;
* 2023-04-20, [https://www.mdpi.com/2504-446X/7/5/286 A Dynamic Checkpoint Interval Decision Algorithm for Live Migration-Based Drone-Recovery System]&lt;br /&gt;
* 2023-03-10, [https://kubernetes.io/blog/2023/03/10/forensic-container-analysis/ Forensic Container Analysis]&lt;br /&gt;
* 2023-01-31, [https://vtechworks.lib.vt.edu/items/ba974ad9-eac9-4306-b3fc-5f0411b89b99 HetMigrate: Secure and Efficient Cross-architecture Process Live Migration]&lt;br /&gt;
* 2023-01-14, [https://arxiv.org/abs/2301.05861 Async-fork: Mitigating Query Latency Spikes Incurred by the Fork-based Snapshot Mechanism from the OS Level]&lt;br /&gt;
* 2023-01-10, [https://ieeexplore.ieee.org/abstract/document/10077919 A Container Pre-copy Migration Method Based on Dirty Page Prediction and Compression]&lt;br /&gt;
* 2022-12-18, [https://doi.org/10.1109/HiPC56025.2022.00023 LDT: Lightweight Dirty Tracking of Memory Pages for x86 Systems]&lt;br /&gt;
* 2022-11-13, [https://dl.acm.org/doi/abs/10.5555/3571885.3572000 Out of hypervisor (OoH): efficient dirty page tracking in userspace using hardware virtualization feature]&lt;br /&gt;
* 2022-08-07, [https://www.sciencedirect.com/science/article/pii/S1084804522001369 iContainer: Consecutive Checkpointing with Rapid Resilience for Immortal Container-based Services]&lt;br /&gt;
* 2022-08-03, [https://ieeexplore.ieee.org/document/9844071 Demonstration of Containerized Central Unit Live Migration in 5G Radio Access Network]&lt;br /&gt;
* 2022-07-11, [https://www.usenix.org/conference/atc22/presentation/zhou-diyu RRC: Responsive Replicated Containers]&lt;br /&gt;
* 2022-05-25, [https://hal.inria.fr/hal-03587358/ Good Shepherds Care For Their Cattle: Seamless Pod Migration in Geo-Distributed Kubernetes]&lt;br /&gt;
* 2022-05-06, [https://doi.org/10.1145/3477314.3507221 An architecture proposal for checkpoint/restore on stateful containers]&lt;br /&gt;
* 2022-04-24, [https://www.ndss-symposium.org/ndss-paper/auto-draft-295/ FitM: Binary-Only Coverage-Guided Fuzzing for Stateful Network Protocols]&lt;br /&gt;
* 2022-03-01, [https://systex22.github.io/papers/systex22-final71.pdf Transparent, Cross-ISA Enclave Offloading]&lt;br /&gt;
* 2022-02-25, [https://dl.acm.org/doi/abs/10.1145/3516807.3516817 Portkey: Hypervisor-Assisted Container Migration in Nested Cloud Environments]&lt;br /&gt;
* 2022-02-16, [https://arxiv.org/abs/2202.07848 Singularity: Planet-Scale, Preemptible and Elastic Scheduling of AI Workloads]&lt;br /&gt;
* 2022-02-08, [https://doi.org/10.48550/arXiv.2202.03643 SNPSFuzzer: A Fast Greybox Fuzzer for Stateful Network Protocols using Snapshots]&lt;br /&gt;
* 2021-12-17, [https://hal.archives-ouvertes.fr/hal-03487607/document Standard-compliant parallel SystemC simulation of loosely-timed transaction level models: From baremetal to Linux-based applications support]&lt;br /&gt;
* 2021-07-14, [https://www.usenix.org/conference/atc21/presentation/planeta MigrOS: Transparent Live-Migration Support for Containerised RDMA Applications]&lt;br /&gt;
* 2021-07-06, [https://onlinelibrary.wiley.com/doi/10.1002/cpe.6474 Cricket: A virtualization layer for distributed execution of CUDA applications with checkpoint/restart support]&lt;br /&gt;
* 2021-06-07, [https://ieeexplore.ieee.org/abstract/document/9469425 Extending the QUIC Protocol to Support Live Container Migration at the Edge]&lt;br /&gt;
* 2021-04-21, [https://dl.acm.org/doi/10.1145/3447786.3456258 On-demand-fork: A Microsecond Fork for Memory-intensive and Latency-sensitive Applications]&lt;br /&gt;
* 2021-01-23, [https://arxiv.org/abs/2101.09584 HyCoR: Fault-Tolerant Replicated Containers Based on Checkpoint and Replay]&lt;br /&gt;
* 2020-12-11, [https://dl.acm.org/doi/abs/10.1145/3423211.3425682 Prebaking Functions to Warm the Serverless Cold Start]&lt;br /&gt;
* 2020-07-14, [https://ieeexplore.ieee.org/abstract/document/9139863 Fault-Tolerant Containers Using NiLiCon]&lt;br /&gt;
* 2020-07-08, [https://ieeexplore.ieee.org/document/9126743 Docker Container Deployment in Distributed Fog Infrastructures with Checkpoint/Restart]&lt;br /&gt;
* 2020-04-30, [https://dl.acm.org/doi/abs/10.1145/3342195.3387555 Balancing efficiency and fairness in heterogeneous GPU clusters for deep learning]&lt;br /&gt;
* 2020-03-17, [https://www.ssrg.ece.vt.edu/papers/vee20-h-container.pdf Edge Computing -- the Case for Heterogeneous-ISA Container Migration]&lt;br /&gt;
* 2019-10-03, [https://dl.acm.org/citation.cfm?id=3357542 Fast In-Memory CRIU for Docker Containers]&lt;br /&gt;
* 2019-09-24, [https://ieeexplore.ieee.org/document/8916436 Using Container Migration for High Performance Computing (HPC) Workloads Resilience]&lt;br /&gt;
* 2019-11-18, [https://ieeexplore.ieee.org/abstract/document/8946189 Optimizing Post-Copy Live Migration with System-Level Checkpoint Using Fabric-Attached Memory]&lt;br /&gt;
* 2019-09-11, [https://arxiv.org/pdf/1909.04945.pdf Performance Estimation of Container-Based Cloud-to-Fog Offloading]&lt;br /&gt;
* 2019-07-16, [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=8754197 FastContainer: A Homeostatic System Architecture High-speed Adapting Execution Environment Changes]&lt;br /&gt;
* 2019-07-11, [https://ieeexplore.ieee.org/abstract/document/8814504 Exploring Potential for Non-Disruptive Vertical Auto Scaling and Resource Estimation in Kubernetes]&lt;br /&gt;
* 2019-07, University of Twente: [https://essay.utwente.nl/78342/1/coenen_MA_EEMCS.pdf Increasing Availability of the AEPU by Improving the Update Process]&lt;br /&gt;
* 2019-05-25, [https://dl.acm.org/citation.cfm?id=3303978 Replayable Execution Optimized for Page Sharing for a Managed Runtime Environment]&lt;br /&gt;
* 2019-04-29, Binghamton University: [http://www.cs.binghamton.edu/~huilu/pubs/mWarp.pdf mWarp: Accelerating Intra-Host Live Container Migration via Memory Warping]&lt;br /&gt;
* 2019-04-10, [https://lisas.de/~adrian/posts/2019-Apr-10-criu-and-selinux.html CRIU and SELinux]&lt;br /&gt;
* 2019-03-27, [https://www.mdpi.com/1424-8220/19/7/1488/pdf Container Migration in the Fog: A Performance Evaluation]&lt;br /&gt;
* 2019-03-25, [https://dl.acm.org/citation.cfm?id=3313947 Checkpointing and Migration of IoT Edge Functions]&lt;br /&gt;
* 2019-03-24, Future University Hakodate: [https://doi.asiabsdcon.org/10.25263/asiabsdcon2019/p07a Yet Another Container Migration on FreeBSD]&lt;br /&gt;
* 2019-03-09, [https://link.springer.com/article/10.1007/s10586-019-02920-6 Provenance-based fault tolerance technique recommendation for cloud-based scientific workflows: a practical approach]&lt;br /&gt;
* 2019-02-26, Georgia Institute of Technology / Peking University: [https://www.ndss-symposium.org/wp-content/uploads/2019/02/ndss2019_05A-3_Duan_paper.pdf Automating Patching of Vulnerable Open-Source Software Versions in Application Binaries]&lt;br /&gt;
* 2019-01-30, University West: [https://www.researchgate.net/publication/330798282_Evaluating_Distributed_MPI_Checkpoint_and_Restore_using_Docker_Containers_and_CRIU Evaluating Distributed MPI Checkpoint and Restore using Docker Containers and CRIU]&lt;br /&gt;
* 2018-12, University of Lille: [https://tel.archives-ouvertes.fr/tel-02011337/document Flexible Framework for Elasticity in Cloud Computing]&lt;br /&gt;
* 2018-12, Arizona State University: [https://search.proquest.com/openview/ef9070310256fe9ec9a663ebde537b36/1 Concurrent Checkpointing for Embedded Real-Time Systems]&lt;br /&gt;
* 2018-11-08, [https://lisas.de/~adrian/posts/2018-Nov-08-criu-configuration-files.html CRIU configuration files]&lt;br /&gt;
* 2018-11-06, [https://www.redhat.com/en/blog/using-criu-upgrade-vpn-servers-kernel-without-dropping-connections Using CRIU to upgrade a VPN server's kernel without dropping connections]&lt;br /&gt;
* 2018-10-13, [https://dl.acm.org/citation.cfm?id=3290626 Linux Process Tree Reconstruction Using The Attributed Grammar-Based Tree Transformation Model]&lt;br /&gt;
* 2018-10-10, [https://podman.io/blogs/2018/10/10/checkpoint-restore.html Adding checkpoint/restore support to Podman]&lt;br /&gt;
* 2018-10-08, [https://www.usenix.org/conference/osdi18/presentation/xiao Gandiva: Introspective Cluster Scheduling for Deep Learning]&lt;br /&gt;
* 2018-09-15, [https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8539562 Stateful Container Migration employing Checkpoint-based Restoration for Orchestrated Container Clusters]&lt;br /&gt;
* 2018-09-07, [https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8502659 Container Live Migration for Latency Critical Industrial Applications on Edge Computing]&lt;br /&gt;
* 2018-08-15, University of Maryland: [https://drum.lib.umd.edu/bitstream/handle/1903/20499/CS-TR-5056.pdf Fast and Service-preserving Recovery from Malware Infections Using CRIU]&lt;br /&gt;
* 2018-07-31, [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6131214/ Hot-starting software containers for STAR aligner]&lt;br /&gt;
* 2018-06-28, University of Aberdeen: [https://link.springer.com/chapter/10.1007/978-3-030-02465-9_13 Efficient Live Migration of Linux Containers]&lt;br /&gt;
* 2018-03-24, [https://www.smitechow.com/2018/03/compile-criu-on-centos-6.html Compile CRIU on CentOS 6]&lt;br /&gt;
* 2017-12-06, [https://lisas.de/~adrian/posts/2017-Dec-06-optimizing-live-container-migration-in-lxd.html Optimizing live container migration in LXD]&lt;br /&gt;
* 2017-10-12, Red Hat Blog: [http://rhelblog.redhat.com/2017/10/12/container-migration-around-the-world/ Container Migration Around The World]&lt;br /&gt;
* 2017-07-19, Red Hat Blog: [https://www.redhat.com/en/blog/how-can-process-snapshotrestore-help-save-your-day How can process snapshot/restore help save your day?]&lt;br /&gt;
* 2017-06-29, University West, Sweden: [http://www.diva-portal.org/smash/record.jsf?pid=diva2%3A1144045&amp;amp;dswid=4414 Distributed Checkpointing with Docker Containers in High Performance Computing]&lt;br /&gt;
* 2017-06-25, [https://ieeexplore.ieee.org/document/8030623 Autonomic Vertical Elasticity of Docker Containers with ELASTICDOCKER]&lt;br /&gt;
* 2017-06-06, [https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7980161 Voyager: Complete Container State Migration]&lt;br /&gt;
* 2017-06-06, Selectel Blog: [https://blog.selectel.com/managing-containers-runc/ Managing Containers in runC]&lt;br /&gt;
* 2016-12-16, University of Lisbon: [http://www.gsd.inesc-id.pt/~pjpf/ALMA-middleware-2016.pdf ALMA – GC-assisted JVM Live Migration for Java Server Applications]&lt;br /&gt;
* 2016-07-20, Red Hat KnowledgeBase: [https://access.redhat.com/articles/2455211 CRIU - Checkpoint/Restore in user space]&lt;br /&gt;
* 2016-07-20, LWN.net: [https://lwn.net/SubscriberLink/694593/4d6291b3f727791a/ Quality in open source: testing CRIU]&lt;br /&gt;
* 2016-06-22, Usenix: [https://www.usenix.org/conference/atc16/technical-sessions/presentation/kashyap Instant OS Updates via Userspace Checkpoint-and-Restart]&lt;br /&gt;
* 2016-05-04: [http://lisas.de/~adrian/?p=1183 Lazy Process Migration]&lt;br /&gt;
* 2015-12-31, [http://kimh.github.io/blog/jp/criu/experiment-to-suspend-and-resume-docker-container-with-criu-jp/ Use the CRIU Docker container of stop / resume to the challenge]&lt;br /&gt;
* 2015-12-31, [http://blog.codeship.com/how-containers-will-change-the-game-server-hosting-industry/ How Containers Will Change the Game Server Hosting Industry]&lt;br /&gt;
* 2015-11-24, [https://dl.acm.org/doi/10.1145/2814576.2814807 Improving Preemptive Scheduling with Application-Transparent Checkpointing in Shared Clusters]&lt;br /&gt;
* 2015-09-21, [http://blog.circleci.com/checkpoint-and-restore-docker-container-with-criu/ Checkpoint and restore Docker container with CRIU]&lt;br /&gt;
* 2015-09-21, [https://blog.docker.com/2015/09/dolly-demo-linuxcon-runc/ Dolly Demo at LinuxCon: Rapid cloning of existing services with runC]&lt;br /&gt;
* 2015-09-10, [http://blog.tonicdev.com/2015/09/10/time-traveling-in-node.js-notebooks.html Time Traveling in Node.js Notebooks]&lt;br /&gt;
* 2015-01-01, [http://www.cisco.com/c/dam/en/us/solutions/collateral/data-center-virtualization/openstack-at-cisco/linux-containers-white-paper-cisco-red-hat.pdfLinux Containers: Why They’re in Your Future and What Has to Happen First]&lt;br /&gt;
* 2015-07-01, [https://kubernetes.io/blog/2015/07/how-did-quake-demo-from-dockercon-work/ How did the Quake demo from DockerCon Work?]&lt;br /&gt;
* 2015-05-06, [https://insights.ubuntu.com/2015/05/06/live-migration-in-lxd/ Live Migration in LXD] Ubuntu Insignts&lt;br /&gt;
* 2015-04-22, TuxDiary [http://tuxdiary.com/2015/04/22/dump-debug-resume-process-criu/ Dump, debug, resume process with criu]&lt;br /&gt;
* 2014-12-12, Symposium on Information and Communication Systems (SInCom 2014) [https://lisas.de/~adrian/proceedingsSInCom2014.pdf Checkpoint/Restore in User-Space with Open MPI]&lt;br /&gt;
* 2014-11-03, [https://dl.acm.org/doi/10.1145/2660267.2660329 From Patches to Honey-Patches: Lightweight Attacker Misdirection, Deception, and Disinformation]&lt;br /&gt;
* 2014-09-31, [http://www.reuters.com/article/wa-parallels-idUSnBw035202a+100+BSW20141103 Parallels Surpasses One Million Deployed Virtual Containers]&lt;br /&gt;
* 2014-08-01, ADMIN magazine: [http://www.admin-magazine.com/Archive/2014/22/Save-and-Restore-Linux-Processes-with-CRIU Save and Restore Linux Processes with CRIU]&lt;br /&gt;
* 2014-02-15, OCCAM Reproduce: [http://heirman.net/papers/reproduce2014.pdf Efficient, Accurate and Reproducible Simulation of Multi-Threaded Workloads] ([http://www.occamportal.org/slides/reproduce/reproduce14_slides_05.pdf slides])&lt;br /&gt;
* 2013-11-25, Phoronix: [http://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTUyNjE Checkpoint-Restore Hits v1.0: Freeze Your Linux Apps]&lt;br /&gt;
* 2013-11-25, LWN: [http://lwn.net/Articles/574918/ A note about 1.0]&lt;br /&gt;
* 2013-10-29, LWN: [http://lwn.net/Articles/572125/ Kernel summit report]&lt;br /&gt;
* 2013-02-01, A blog [http://www.anchor.com.au/blog/2013/02/overview-of-checkpoint-and-restore-live-migrating-processes-on-a-linux-system/ post] upon LCA-2013 talk.&lt;br /&gt;
* 2013-01-09, LWN: [http://lwn.net/Articles/531939/ Checkpoint/restore and signals]&lt;br /&gt;
* 2012-11-20, LWN: [http://lwn.net/Articles/525675/ LCE: Checkpoint/restore in user space: are we there yet?]&lt;br /&gt;
* 2012-07-24, OpenVZ blog: [http://openvz.livejournal.com/42414.html CRtools 0.1 released!]&lt;br /&gt;
* 2012-05-01, LWN: [http://lwn.net/Articles/495304/ TCP connection repair]&lt;br /&gt;
* 2012-02-26, The International Symposium on Grids and Clouds (ISGC) [https://lisas.de/~adrian/ISGC-2012_031.pdf Pos (isgc 2012) 031 live process migration for load balancing and/or fault tolerance]&lt;br /&gt;
* 2012-01-31, LWN: [http://lwn.net/Articles/478111/ Preparing for user-space checkpoint/restore]&lt;br /&gt;
* 2011-07-19, LWN: [http://lwn.net/Articles/452184/ Checkpoint/restart (mostly) in user space]&lt;br /&gt;
&lt;br /&gt;
=== In Russian ===&lt;br /&gt;
* 13.05.2016, Habrahabr: [https://habrahabr.ru/post/283504/ Особенности тестирования технологии C/R в Linux]&lt;br /&gt;
* 09.03.2016, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=44015 Выпуск CRIU 2.0, системы для сохранения и восстановления состояния процессов в Linux]&lt;br /&gt;
* 18.12.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=43539 CRIU, путь от вызывающей непонимание разработки до интеграции в Red Hat Enterprise Linux] &lt;br /&gt;
* 09.12.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=43489 Выпуск CRIU 1.8, системы для сохранения и восстановления состояния процессов в Linux] &lt;br /&gt;
* 09.09.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=42939 Выпуск CRIU 1.7, системы для сохранения и восстановления состояния процессов в Linux]&lt;br /&gt;
* 25.08.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=42850 Проект OpenVZ анонсировал новый компонент для миграции Linux контейнеров - P.Haul]&lt;br /&gt;
* 27.05.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=42315 Статус интеграции проектов CRIU и Docker]&lt;br /&gt;
* 25.11.2013, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=38519 Анонс выхода 1.0]&lt;br /&gt;
* 28.04.2015, Типичный программист: [http://tproger.ru/interview/pavel-emelyanov/ Разработка ядра Linux — это общение в клубе по интересам]&lt;br /&gt;
* 22.04.2013, Habrahabr: [http://habrahabr.ru/post/177499/ В преддверии очередного релиза CRIU]&lt;br /&gt;
* 04.03.2013, IT-computer: [http://www.it-computer.com/osvaivaem-sistemu-zamorozki-processov-criu Осваиваем систему заморозки процессов CRIU]&lt;br /&gt;
* 28.09.2012, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=34958 CRIU 0.2 release] &lt;br /&gt;
* 05.11.2013, Xakep: [https://xakep.ru/2013/11/05/criu-manual/ Осваиваем систему заморозки процессов CRIU]&lt;br /&gt;
* 15.08.2013, Habrahabr: [http://habrahabr.ru/company/parallels/blog/190066/ «Разработка ядра Linux — это общение в клубе по интересам»]&lt;br /&gt;
* 01.10.2012, YaC 2012: [http://events.yandex.ru/events/yac/2012/talks/352/ больше, чем живая миграция для Linux контейнеров]&lt;br /&gt;
* 24.07.2012, Habrahabr: [http://habrahabr.ru/post/148413/ CRIU — новый амбициозный проект для сохранения и восстановления состояния процессов]&lt;br /&gt;
* 24.07.2012, Ru-OpenVZ blog: [http://ru-openvz.livejournal.com/5753.html Вышел первый релиз CRtools, версия 0.1]&lt;br /&gt;
* 24.07.2012, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=34408 Первый релиз CRtools, утилиты для заморозки и восстановления состояния процессов в Linux]&lt;br /&gt;
* 24.07.2012, LOR: [http://www.linux.org.ru/news/kernel/8021514 Вышел первый релиз CRtools, версия 0.1]&lt;br /&gt;
* Копипаста о v0.1 &amp;quot;CRIU / CRtools 0.1 — создание контрольных точек Linux-приложений и восстановление с них&amp;quot;: [http://rosinvest.com/novosti/949423 Rosinvest], [http://www.nixp.ru/news/11854.html NIXP] [http://pcnews.ru/top/news/day/criu-crtools-linux-openvz-checkpoint-restore-in-userspace-cpt-system-90-10-lxc-org-398305.html PCNews]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5895</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5895"/>
		<updated>2026-04-05T12:57:42Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* DFRWS USA 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DFRWS USA 2026 ==&lt;br /&gt;
[[Image:Dfrws.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27-30 July, 2026, Arlington, Virginia, USA'''&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[https://dfrws.org/conferences/dfrws-usa-2026/ Forensic Analysis of Container Snapshot Chains for Post-Event Reconstruction]&lt;br /&gt;
&lt;br /&gt;
== EuroMLSys 2026 ==&lt;br /&gt;
[[Image:Euromlsys.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27 April, 2026, Edinburgh, United Kingdom'''&lt;br /&gt;
&lt;br /&gt;
[https://euromlsys.eu/ Towards On-the-Fly Snapshot Memory Compression for Low-Latency Elastic Inference Serving Systems]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5894</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5894"/>
		<updated>2026-04-05T12:57:06Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DFRWS USA 2026 ==&lt;br /&gt;
[[Image:Dfrws.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27-30 July, 2026, Arlington, Virginia'''&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[https://dfrws.org/conferences/dfrws-usa-2026/ Forensic Analysis of Container Snapshot Chains for Post-Event Reconstruction]&lt;br /&gt;
&lt;br /&gt;
== EuroMLSys 2026 ==&lt;br /&gt;
[[Image:Euromlsys.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27 April, 2026, Edinburgh, United Kingdom'''&lt;br /&gt;
&lt;br /&gt;
[https://euromlsys.eu/ Towards On-the-Fly Snapshot Memory Compression for Low-Latency Elastic Inference Serving Systems]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=File:Euromlsys.png&amp;diff=5893</id>
		<title>File:Euromlsys.png</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=File:Euromlsys.png&amp;diff=5893"/>
		<updated>2026-04-05T12:56:06Z</updated>

		<summary type="html">&lt;p&gt;Radostin: Radostin uploaded a new version of File:Euromlsys.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5892</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5892"/>
		<updated>2026-04-05T12:49:40Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DFRWS USA 2026 ==&lt;br /&gt;
[[Image:Dfrws.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27-30 July, 2026, Arlington, Virginia'''&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[https://dfrws.org/conferences/dfrws-usa-2026/ Forensic Analysis of Container Snapshot Chains for Post-Event Reconstruction]&lt;br /&gt;
&lt;br /&gt;
== EuroMLSys 2026 ==&lt;br /&gt;
[[Image:Euromlsys.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27 April, 2026, Edinburgh, United Kingdom'''&lt;br /&gt;
&lt;br /&gt;
[https://euromlsys.eu/ Towards On-the-Fly Snapshot Memory Compression for Low-Latency Elastic Inference Serving Systems]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5891</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5891"/>
		<updated>2026-04-05T12:49:11Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DFRWS USA 2026 ==&lt;br /&gt;
[[Image:Dfrws.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27-30 July, 2026, Arlington, Virginia'''&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[https://dfrws.org/conferences/dfrws-usa-2026/ Forensic Analysis of Container Snapshot Chains for Post-Event Reconstruction]&lt;br /&gt;
&lt;br /&gt;
== EuroMLSys 2026 ==&lt;br /&gt;
[[Image:Euromlsys.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27 April, 2026, Edinburgh, United Kingdom'''&lt;br /&gt;
&lt;br /&gt;
[https://euromlsys.eu/ Towards On-the-Fly Snapshot Memory Compression for Low-Latency Elastic Inference Serving Systems]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5890</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5890"/>
		<updated>2026-04-05T12:48:57Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DFRWS USA 2026 ==&lt;br /&gt;
[[Image:Dfrws.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27-30 July, 2026, Arlington, Virginia'''&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[https://dfrws.org/conferences/dfrws-usa-2026/ Forensic Analysis of Container Snapshot Chains for Post-Event Reconstruction]&lt;br /&gt;
&lt;br /&gt;
== EuroMLSys 2026 ==&lt;br /&gt;
[[Image:Euromlsys.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27 April, 2026, Edinburgh, United Kingdom'''&lt;br /&gt;
&lt;br /&gt;
[https://euromlsys.eu/ Towards On-the-Fly Snapshot Memory Compression for Low-Latency Elastic Inference Serving Systems]&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5889</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5889"/>
		<updated>2026-04-05T12:47:51Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* DFRWS USA 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DFRWS USA 2026 ==&lt;br /&gt;
[[Image:Dfrws.png|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27-30 July, 2026, Arlington, Virginia'''&lt;br /&gt;
&lt;br /&gt;
[https://dfrws.org/conferences/dfrws-usa-2026/ Forensic Analysis of Container Snapshot Chains for Post-Event Reconstruction]&lt;br /&gt;
&lt;br /&gt;
== EuroMLSys 2026 ==&lt;br /&gt;
[[Image:Euromlsys.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27 April, 2026, Edinburgh, United Kingdom'''&lt;br /&gt;
&lt;br /&gt;
[https://euromlsys.eu/ Towards On-the-Fly Snapshot Memory Compression for Low-Latency Elastic Inference Serving Systems]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5888</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5888"/>
		<updated>2026-04-05T12:46:23Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DFRWS USA 2026 ==&lt;br /&gt;
[[Image:Dfrws.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27-30 July, 2026, Arlington, Virginia'''&lt;br /&gt;
&lt;br /&gt;
[https://dfrws.org/conferences/dfrws-usa-2026/ Forensic Analysis of Container Snapshot Chains for Post-Event Reconstruction]&lt;br /&gt;
&lt;br /&gt;
== EuroMLSys 2026 ==&lt;br /&gt;
[[Image:Euromlsys.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27 April, 2026, Edinburgh, United Kingdom'''&lt;br /&gt;
&lt;br /&gt;
[https://euromlsys.eu/ Towards On-the-Fly Snapshot Memory Compression for Low-Latency Elastic Inference Serving Systems]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5887</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5887"/>
		<updated>2026-04-05T12:45:19Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DFRWS USA 2026 ==&lt;br /&gt;
[[Image:Dfrws.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27-30 July, 2026, Arlington, Virginia, USA'''&lt;br /&gt;
&lt;br /&gt;
[https://dfrws.org/conferences/dfrws-usa-2026/ Forensic Analysis of Container Snapshot Chains for Post-Event Reconstruction]&lt;br /&gt;
&lt;br /&gt;
== EuroMLSys 2026 ==&lt;br /&gt;
[[Image:Euromlsys.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27 April, 2026, Edinburgh, United Kingdom'''&lt;br /&gt;
&lt;br /&gt;
[https://euromlsys.eu/ Towards On-the-Fly Snapshot Memory Compression for Low-Latency Elastic Inference Serving Systems]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5886</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5886"/>
		<updated>2026-04-05T12:44:46Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DFRWS USA 2026 ==&lt;br /&gt;
[[Image:Dfrws.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27-30 July, 2026, Arlington, Virginia, USA'''&lt;br /&gt;
&lt;br /&gt;
[https://dfrws.org/conferences/dfrws-usa-2026/ Forensic Analysis of Container Snapshot Chains for Post-Event Reconstruction]&lt;br /&gt;
&lt;br /&gt;
== EuroMLSys 2026 ==&lt;br /&gt;
[[Image:Euromlsys.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27 April, 2026, Edinburgh, United Kingdom'''&lt;br /&gt;
&lt;br /&gt;
[https://euromlsys.eu/ Towards On-the-Fly Snapshot Memory Compression for Low-Latency Elastic Inference Serving Systems]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
== NVIDIA GTC 2026 ==&lt;br /&gt;
[[Image:nvidia-gtc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''17 March, 2026, San Jose, CA'''&lt;br /&gt;
&lt;br /&gt;
[https://www.nvidia.com/gtc/session-catalog/sessions/gtc26-s81424/ Achieve Truly Serverless GPUs With libfuse, CRIU, and CUDA-Checkpoint]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=File:Dfrws.png&amp;diff=5885</id>
		<title>File:Dfrws.png</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=File:Dfrws.png&amp;diff=5885"/>
		<updated>2026-04-05T12:42:11Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5884</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5884"/>
		<updated>2026-04-05T12:39:47Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== EuroMLSys 2026 ==&lt;br /&gt;
[[Image:Euromlsys.png|left|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27 April, 2026, Edinburgh, United Kingdom'''&lt;br /&gt;
&lt;br /&gt;
[https://euromlsys.eu/ Towards On-the-Fly Snapshot Memory Compression for Low-Latency Elastic Inference Serving Systems]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
== NVIDIA GTC 2026 ==&lt;br /&gt;
[[Image:nvidia-gtc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''17 March, 2026, San Jose, CA'''&lt;br /&gt;
&lt;br /&gt;
[https://www.nvidia.com/gtc/session-catalog/sessions/gtc26-s81424/ Achieve Truly Serverless GPUs With libfuse, CRIU, and CUDA-Checkpoint]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5883</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5883"/>
		<updated>2026-04-05T12:39:08Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== EuroMLSys 2026 ==&lt;br /&gt;
[[Image:Euromlsys.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27 April, 2026, Edinburgh, United Kingdom'''&lt;br /&gt;
&lt;br /&gt;
[https://euromlsys.eu/ Towards On-the-Fly Snapshot Memory Compression for Low-Latency Elastic Inference Serving Systems]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
== NVIDIA GTC 2026 ==&lt;br /&gt;
[[Image:nvidia-gtc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''17 March, 2026, San Jose, CA'''&lt;br /&gt;
&lt;br /&gt;
[https://www.nvidia.com/gtc/session-catalog/sessions/gtc26-s81424/ Achieve Truly Serverless GPUs With libfuse, CRIU, and CUDA-Checkpoint]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5882</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5882"/>
		<updated>2026-04-05T12:38:50Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== EuroMLSys 2026 ==&lt;br /&gt;
[[Image:Euromlsys.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''27 April, 2026, Edinburgh, United Kingdom'''&lt;br /&gt;
&lt;br /&gt;
[https://euromlsys.eu/ Towards On-the-Fly Snapshot Memory Compression for Low-Latency Elastic Inference Serving Systems]&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
== NVIDIA GTC 2026 ==&lt;br /&gt;
[[Image:nvidia-gtc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''17 March, 2026, San Jose, CA'''&lt;br /&gt;
&lt;br /&gt;
[https://www.nvidia.com/gtc/session-catalog/sessions/gtc26-s81424/ Achieve Truly Serverless GPUs With libfuse, CRIU, and CUDA-Checkpoint]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=File:Euromlsys.png&amp;diff=5881</id>
		<title>File:Euromlsys.png</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=File:Euromlsys.png&amp;diff=5881"/>
		<updated>2026-04-05T12:35:29Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events/past&amp;diff=5880</id>
		<title>News/events/past</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events/past&amp;diff=5880"/>
		<updated>2026-04-05T12:33:08Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ACHTUNG: please always use FULL SIGNATURE, i.e. --~~~~ as its date is used in RSS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|this page lists events that has happened already, kept here just for historical reasons. For future events, see [[News/events]].}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== NVIDIA GTC 2026 ==&lt;br /&gt;
[[Image:nvidia-gtc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''17 March, 2026, San Jose, CA'''&lt;br /&gt;
&lt;br /&gt;
[https://www.nvidia.com/gtc/session-catalog/sessions/gtc26-s81424/ Achieve Truly Serverless GPUs With libfuse, CRIU, and CUDA-Checkpoint]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2026 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2026, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2026/schedule/event/F9RANH-forensic-snapshots-in-kubernetes/ Investigating Security Incidents with Forensic Snapshots in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2026/schedule/event/DTGNQS-k8s-checkpoint-restore-wg/ Introducing the Kubernetes Checkpoint Restore Working Group]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2025 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''December 12, 2025, Tokyo, Japan, [https://lpc.events/event/19/sessions/217/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2240/ Files on Unmounted Mounts]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2237/ Guarded Control Stack on arm64: Challenges in Enabling Shadow Stack Support for CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2236/ Optimizing Checkpoints with Built-in Memory Page Compression]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CANOPIE-HPC @ Supercomputing 2025 ==&lt;br /&gt;
[[Image:Sc25_logo.png ‎|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 17, 2025, St. Louis, MO'''&lt;br /&gt;
&lt;br /&gt;
[https://sc25.conference-program.com/presentation/?id=ws_canopie105&amp;amp;sess=sess199 Engine-Agnostic Model Hot-Swapping for Cost-Effective LLM Inference]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Container Plumbing Days 2025 ==&lt;br /&gt;
[[Image:Containerplumbingdays2025.png ‎|left|180px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 28, 2025, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/26BG8 Enabling Secure Container Checkpointing for Distributed Model Training]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== High Performance Container Workshop @ ISC 2025 ==&lt;br /&gt;
[[Image:Isc-logo.png ‎|left|180px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 13, 2025, Hamburg, Germany'''&lt;br /&gt;
&lt;br /&gt;
[https://container-in-hpc.org/isc/2025/hpcw/index.html Transparent Hot-Swapping of Containerized AI/ML Workloads]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JSSPP Workshop 2025 ==&lt;br /&gt;
[[Image:Jsspp-logo.png|left|80px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 3, 2025, Milan, Italy'''&lt;br /&gt;
&lt;br /&gt;
[https://jsspp.org/index.php?page=program Kubernetes Scheduling with Checkpoint/Restore: Challenges and Open Problems]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2025 ==&lt;br /&gt;
[[Image:Kubecon.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 3, 2025, London, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1tx7i Efficient Transparent Checkpointing of AI/ML Workloads in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1tx7u Transparent, Infra-Level Checkpoint and Restore for Resilient AI/ML Workloads at Scale]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oxford e-Research Centre ==&lt;br /&gt;
[[Image:Oerc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 02, 2025, Oxford, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://oerc.ox.ac.uk/events/efficient-transparent-checkpointing-of-aiml-workloads-in-kubernetes/ Efficient Transparent Checkpointing of AI/ML Workloads in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2025 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2025, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2025/schedule/event/fosdem-2025-4326-state-of-checkpoint-restore-in-kubernetes/ State of Checkpoint/Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2025/schedule/event/fosdem-2025-4042-optimizing-resource-utilization-for-interactive-gpu-workloads-with-transparent-container-checkpointing/ Optimizing Resource Utilization for Interactive GPU Workloads with Transparent Container Checkpointing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oxford e-Research Centre ==&lt;br /&gt;
[[Image:Oerc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''January 23, 2025, Oxford, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://oerc.ox.ac.uk/news/optimizing-resource-utilization-for-interactive-gpu-workloads-with-transparent-container-checkpointing/ Optimizing Resource Utilization for Interactive GPU Workloads with Transparent Container Checkpointing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxDays 2024 ==&lt;br /&gt;
[[Image:Linux-days-cz.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''13 Oct 2024, [https://pretalx.linuxdays.cz/linuxdays-2024/talk/7MQPWQ/ On the Edge of Tomorrow: Checkpoint/Restore in Containers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kubernetes Community Days Austria ==&lt;br /&gt;
[[Image:Kcd-austria.svg|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''09 Oct 2024, [https://kcdaustria2024.sessionize.com/session/678172 Forensic container checkpointing and analysis]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2024 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''18-20 Sep 2024, [https://lpc.events/event/18/sessions/193/#20240919 Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
 Other talks:&lt;br /&gt;
 * [https://lpc.events/event/18/contributions/1729/ Userspace memory persistence over kexec]&lt;br /&gt;
 * [https://lpc.events/event/18/contributions/1812/ Checkpoint/Restore In eBPF (CRIB)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oxford e-Research Centre ==&lt;br /&gt;
[[Image:Oerc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 29, 2024, Oxford, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://oerc.ox.ac.uk/events/towards-efficient-end-to-end-encryption-for-container-checkpointing-systems/ Towards Efficient End-to-End Encryption for Container Checkpointing Systems]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CloudNativeSecurityCon North America 2024 ==&lt;br /&gt;
[[Image:CloudNativeSecurityCon.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 27, 2024, Seattle, Washington'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1dCVs End-to-End Encryption for Container Checkpointing in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://cloudnativesecurityconna24.sched.com/event/1dCUF/csi-forensics-unraveling-kubernetes-crime-scenes-alberto-pellitteri-stefano-chierici-sysdig CSI Forensics: Unraveling Kubernetes Crime Scenes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit North America 2024 ==&lt;br /&gt;
[[Image:oss-na.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 17, 2024, Seattle, Washington'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1aPu9 Investigating Checkpoint and Restore for GPU-Accelerated Containers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NVIDIA GTC 2024 ==&lt;br /&gt;
[[Image:nvidia-gtc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 21, 2024, San Jose, CA'''&lt;br /&gt;
&lt;br /&gt;
[https://www.nvidia.com/gtc/posters/#/session/1705106137731001cNAN Achieving K8S and Public Cloud Operational Efficiency using a New Checkpoint/Restart Feature for GPUs]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2024 ==&lt;br /&gt;
[[Image:Kubecon.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 22, 2024, Paris, France'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1YeP3 The Party Must Go on - Resume Pods After Spot Instance Shut Down]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1YeT4 Enabling Coordinated Checkpointing for Distributed HPC Applications]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2024 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 3, 2024, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2024/schedule/event/fosdem-2024-3454-zeroing-and-the-semantic-gap-between-host-and-guest/ Zeroing and the semantic gap between host and guest]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2024/schedule/event/fosdem-2024-1855-forensic-container-checkpointing-and-analysis/ Forensic container checkpointing and analysis]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2023 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''13 Nov 2023, [https://lpc.events/event/17/sessions/162/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/17/contributions/1572/ Introducing PAGEMAP_SCAN IOCTL for Windows syscalls translation and CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/17/contributions/1570/ Fuse mounts recovery and Checkpoint/Restore]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/17/contributions/1568/ Protecting Sensitive Data in Container Checkpoints]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit Europe 2023 ==&lt;br /&gt;
[[Image:Osseu.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Sept 20, 2023, Bilbao, Spain'''&lt;br /&gt;
&lt;br /&gt;
[https://osseu2023.sched.com/event/1OGi9/digital-forensics-with-container-checkpointing-daniel-simionato-javier-martinez-sysdig Digital Forensics with Container Checkpointing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GopherCon India 2023 ==&lt;br /&gt;
[[Image:Gopher-india.jpg|left|50px|link=https://gopherconindia.org/]]&lt;br /&gt;
&lt;br /&gt;
'''Sept 9, 2023, Pune, India'''&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=UGQgcIz9xGc Container checkpoints with Go and CRIU]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LSDS Seminar ==&lt;br /&gt;
[[Image:Lsds-logo.jpg|left|200px|link=https://lsds.doc.ic.ac.uk/]]&lt;br /&gt;
&lt;br /&gt;
'''March 9, 2023, Imperial College London'''&lt;br /&gt;
&lt;br /&gt;
[https://lsds.doc.ic.ac.uk/content/transparent-container-checkpointing-and-rollback-recovery-kubernetes-open-challenges-and Transparent Container Checkpointing and Rollback-Recovery with Kubernetes: Open Challenges and Research Directions]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2023 ==&lt;br /&gt;
[[Image:Devconf17.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''June 16, 2023'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1MYjk Forensic Analysis of Container Checkpoints]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2023 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 4, 2023, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2023/schedule/event/container_kubernetes_criu/ Kubernetes and Checkpoint/Restore]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2022 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''14 Sep 2022, [https://lpc.events/event/16/sessions/136/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/16/contributions/1241/ Restoring process trees with child-sub-reapers, nested pid-namespaces and inherit-only resources]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/16/contributions/1242/ Unprivileged CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/16/contributions/1243/ Bringing up FUSE mounts C/R support]&lt;br /&gt;
&lt;br /&gt;
== stackconf 2022 ==&lt;br /&gt;
[[Image:stackconf.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Jul 19, Berlin&lt;br /&gt;
&lt;br /&gt;
[https://stackconf.eu/talks/kubernetes-and-checkpoint-restore/ Kubernetes and Checkpoint/Restore]&lt;br /&gt;
&lt;br /&gt;
== KubeCon + CloudNativeCon North America 2021 ==&lt;br /&gt;
[[Image:kubecon-2021.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 11-15, Los Angeles, California&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/BXVyszsbYmg Container Checkpoint/Restore at Scale for Fast Pod Startup Time]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== X.Org Developer Conference 2021 ==&lt;br /&gt;
&lt;br /&gt;
'''September 15, [https://youtu.be/uTZISTjqy9Q online on the wider Internet]&lt;br /&gt;
&lt;br /&gt;
[https://indico.freedesktop.org/event/1/contributions/18/ Fast Checkpoint Restore for AMD GPUs with CRIU]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2021 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''20 Sep 2021, [https://linuxplumbersconf.org/event/11/sessions/101/#20210920 Containers and Checkpoint/Restore Microconference] ([https://www.youtube.com/watch?v=SKyxugj8rxE video recording])&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/11/contributions/891/ Fast Checkpoint Restore for GPUs]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/11/contributions/923/ Mount-v2 CRIU migration engine: status update]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/11/contributions/924/ Alternative ways to extract information about processes]&lt;br /&gt;
&lt;br /&gt;
== Container Plumbing Days 2021 ==&lt;br /&gt;
[[Image:Container_plumbing_days.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''March 09, 2021, virtual'''&lt;br /&gt;
&lt;br /&gt;
[https://containerplumbing.org/sessions/2021/containerm.html Container Migration News]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2021 ==&lt;br /&gt;
[[Image:Devconf17.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''February 19, 2021, virtual'''&lt;br /&gt;
&lt;br /&gt;
[https://devconfcz2021.sched.com/event/gmId/container-live-migration Container Live Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit Europe 2020 ==&lt;br /&gt;
[[Image:Osseu.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 26, 2020, Virtual'''&lt;br /&gt;
&lt;br /&gt;
[https://osseu2020.sched.com/event/eCDH/container-live-migration-adrian-reber-red-hat Container Live Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2020 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 24-28, [https://linuxplumbersconf.org/event/7/ online on the wider Internet]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/641/ Fast checkpointing with criu-image-streamer]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/642/ FastFreeze: Unprivileged checkpoint/restore for containerized applications]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/640/ CRIU mounts migration: problems and solutions]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/643/ Checkpoint-restoring containers with Docker inside]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Phoronix news ==&lt;br /&gt;
[[Image:phoronix.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 4, 2020, online'''&lt;br /&gt;
&lt;br /&gt;
[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Linux-5.9-Checkpoint-Restore Checkpoint/Restore Of Unprivileged Processes Sent In For Linux 5.9]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevOops 2020 ==&lt;br /&gt;
[[Image:Devoops.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''July 10, 2020, online'''&lt;br /&gt;
&lt;br /&gt;
[https://devoops-moscow.ru/en/2020/msk/talks/2eyl2ebmmix5ovx9imqhu9/ Container live migration with Podman and CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenShift Twitch 2020 ==&lt;br /&gt;
[[Image:Openshift.jpg|left|50px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 20, 2020, online'''&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=-7DgNxyuz_o Container Migration and CRIU Details]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2020 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Feburary 1, 2020, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2020/schedule/event/containers_live_migration/ Container Live Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Rppt]] 19:22, 28 February 2020‎ (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2019 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''September 9-11, Lisbon, Portugal'''&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/508/ Update on Task Migration at Google Using CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/472/ CRIU and the PID dance]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/513/ CRIU: Reworking vDSO proxification, syscall restart]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/478/ Secure Image-less Container Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin]] 14:05, 23 Aug 2019 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tübix 2019 ==&lt;br /&gt;
[[Image:tuex.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Jul 06, 2019, Tübingen, Germany'''&lt;br /&gt;
&lt;br /&gt;
Adrian Reber [https://www.tuebix.org/2019/programm/adrian-reber-container-live-migration/ Container Live Migration]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Google Summer of Code 2019 ==&lt;br /&gt;
[[Image:gsoc.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Mar-Sep 2019'''&lt;br /&gt;
&lt;br /&gt;
[https://summerofcode.withgoogle.com/organizations/6333591376625664/ Google Summer of Code]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2018 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Nov 13-15 , 2018, Vancouver, BC, Canada'''&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/202/ Time Namespaces]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/207/ Another year with CRIU: News from the developers]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/205/ News from academia: FatELF, RDMA and CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/135/ Remote page faults over RDMA]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/209/ Task Migration at Google Using CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/210/ Securely Migrating Untrusted Workloads with CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/69/ Task Migration at Scale Using CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Radostin]] 14:05, 18 Nov 2018 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit Europe 2018 ==&lt;br /&gt;
[[Image:Osseu17.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 24, 2018, Edinburgh, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://osseu18.sched.com/event/FxYI/to-kill-or-to-checkpoint-that-is-the-question-mike-rapoport-ibm-adrian-reber-red-hat To Kill, or to Checkpoint - That is the Question]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 09:46, 29 September 2018 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Serverless meetup, Moscow ==&lt;br /&gt;
[[Image:Meetup.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 18, 2018, Moscow'''&lt;br /&gt;
&lt;br /&gt;
[https://www.meetup.com/ru-RU/moscow-serverless/events/255386528/ Задержки при вызове serverless функций: как формируются, на что влияют и как ими управлять], Владимир Порохов, Swifty Cloud&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:55, 17 October 2018 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2018 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Feburary 4, 2018, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2018/schedule/event/containers_containing_memory/ Containers devroom]&lt;br /&gt;
* Containing container memory -- Mike Rapoport&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Andrey Vagin]] 22:48, 31 Jan 2018 (PST) &lt;br /&gt;
&lt;br /&gt;
== Open Source Summit EU 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Osseu17.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 23, 2017, Prague, Czech Republic'''&lt;br /&gt;
&lt;br /&gt;
Mike Rapoport and Adrian Reber [http://sched.co/BxIG will talk about live migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 12:00, 23 Aug 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SECR 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Secr17logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 20, 2017, St. Petersburg, Russia'''&lt;br /&gt;
&lt;br /&gt;
Pavel Begunkov will talk about [http://2017.secr.ru/lang/en/program/submitted-presentations/checkpointrestore-of-file-locks-from-userspace-in-linux file locks] checkpoint and restore.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 13:30, 12 Sep 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit NA 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:OSS_na_white_0.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Sep 11, 2017, Los Angeles, USA'''&lt;br /&gt;
&lt;br /&gt;
Michael Holzheu [http://sched.co/BDpJ will talk] about CRIU on IBM mainframes.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 14:00, 29 Jun 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2017 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Sep 13-15, 2017, Los Angeles, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/2017/ocw/events/LPC2017/tracks/637 Checkpoint-Restore microconf]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 18:20, 9 Aug 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Systor 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Systor_2017.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''May 22-24, 2017, Haifa, Israel'''&lt;br /&gt;
&lt;br /&gt;
[https://systor17posters.hotcrp.com/paper/8?cap=08aenKqSiwS9bA Accepted paper] about post-copy live migration from Mike Rapoport and Joel Nider&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 15:40, 21 Apr 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SCALE 15x ==&lt;br /&gt;
&lt;br /&gt;
[[Image:scale 15x logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 2-5, 2017, Pasadena, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
Kir Kolyshkin talked about some uncommon ways to use CRIU. [https://www.youtube.com/watch?v=7PKMctKf2JQ&amp;amp;t=18058 Video recording].&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 20:57, 13 February 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2017 ==&lt;br /&gt;
[[Image:Devconf17.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''January 27-29, 2017, Brno, Czech Republic'''&lt;br /&gt;
&lt;br /&gt;
[https://devconf.cz/schedule.html Decreasing container downtime during migration] by Adrian Reber. (the devconf site is not URL-friendly these days, go to Day-3 tab and check 11AM talks)&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 9:20, 12 Jan 2016 (MSG)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2d1o podcast (rus) ==&lt;br /&gt;
'''Dec 22, 2016, On-Air'''&lt;br /&gt;
&lt;br /&gt;
[https://www.2d1o.ru/episodes/s01e03.html 2d1o podcast] invited Pavel Emelyanov to talk about Live migration (of Docker containers).&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:00, 9 Jan 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Middleware 2016 ==&lt;br /&gt;
'''Dec 12-16, 2016, Trento, Italy'''&lt;br /&gt;
&lt;br /&gt;
Rodrigo Bruno gave a talk about Live Migrating JVM workloads using CRIU. Search for 'ALMA' on the [http://2016.middleware-conference.org/program/overall/ schedule page] :)&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 15:00, 19 Dec 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Piter ==&lt;br /&gt;
[[Image:Linuxpiter.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Nov 11-12, 2016, St. Petersburg, Russia'''&lt;br /&gt;
&lt;br /&gt;
Tycho Andersen will talk about [http://www.it-events.com/ru/events/6997#tabs-programm live migration in LXD]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:30, 12 Oct 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2016 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Nov 2-4, 2016, Santa Fe, NM, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://wiki.linuxplumbersconf.org/2016:checkpoint-restart Checkpoint-Restore micro-conference] within the [http://www.linuxplumbersconf.org/2016/ bigger event]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 21:50, 25 Apr 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenStack summit 2016 ==&lt;br /&gt;
[[Image:OpenStack_Summit.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 25-28, 2016, Barcelona, Spain'''&lt;br /&gt;
&lt;br /&gt;
Phil Estes talks about [https://www.openstack.org/summit/barcelona-2016/summit-schedule/events/15091/live-container-migration-on-openstack live container migration in OpenStack]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 13:00, 25 Oct 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux kernel meetup in Tel-Aviv ==&lt;br /&gt;
&lt;br /&gt;
'''July 12, 2016, Tel-Aviv Israel'''&lt;br /&gt;
&lt;br /&gt;
Mike Rapoport will deliver [http://www.meetup.com/Tel-Aviv-Yafo-Linux-Kernel-Meetup/events/232058698/?gj=te1&amp;amp;rv=te1 a talk about UserfaultFD and lazy migration].&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 12:50, 24 Jun 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSC'16 ==&lt;br /&gt;
[[Image:Oscfinal.png|left|100px|link=]]&lt;br /&gt;
'''June 22, 2016, Nürnberg, Germany'''&lt;br /&gt;
&lt;br /&gt;
Takashi Iwai [https://media.ccc.de/v/896-exploring-criu Exploring CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 16:15, 27 Jun 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USENIX ATC'16 ==&lt;br /&gt;
[[Image:Usenix-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 22-24, 2016, Denver, CO, USA'''&lt;br /&gt;
&lt;br /&gt;
Sanidhya Kashyap will present [https://www.usenix.org/conference/atc16/technical-sessions/presentation/kashyap KuP] -- an instant OS updater using CRIU&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:30, 25 Apr 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black belt tech @ DockerCon 2016 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Dockercon16.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 19-21, 2016, Seattle, WA, USA'''&lt;br /&gt;
&lt;br /&gt;
Ross Boucher will talk about [https://blog.docker.com/2016/04/black-belt-talks-dockercon-2016/ Cloning running services with Docker and CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 14:30, 13 Apr 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tuebingen 2016 ==&lt;br /&gt;
'''Jun 11, 2016, Tübingen, Germany'''&lt;br /&gt;
&lt;br /&gt;
Adrian Reber [http://www.tuebix.org/2016/programm/adrian-reber-container-migration-using-criu-and-lxc/ will presend] the [[Userfaultfd]] and lazy migration.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 14:15, 7 Jun 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Systor 2016 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Systor2016.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Jun 6-8, 2016, Haifa, Israel'''&lt;br /&gt;
&lt;br /&gt;
[http://www.systor.org/2016/accepted.html Accepted paper] about containers live migration from Mike Rapoport&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 20:15, 6 May 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2016 ==&lt;br /&gt;
[[Image:Devconf.cz-logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 5, 2016, Brno, Czech Republic'''&lt;br /&gt;
&lt;br /&gt;
[https://devconfcz2016.sched.org/event/5lzL/live-migrating-a-container-pros-cons-and-gotchas Live migrating a container: pros, cons and gotchas] by Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 9:20, 12 Jan 2016 (MSG)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2016 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''January 30, 2016, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://www.fosdem.org/2016/schedule/track/containers_and_process_isolation/ Containers devroom]&lt;br /&gt;
* Using p.haul to migrate containers -- Tycho Andersen&lt;br /&gt;
* New horizons for the CRIU project -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 00:45, 19 December 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxMeetup Nizhny Novgorod 2016 ==&lt;br /&gt;
'''January 22, 2016, Nizhny Novgorod, Russia'''&lt;br /&gt;
&lt;br /&gt;
[https://mdday.timepad.ru/event/279578/ И овцы целы, и волки сыты: как перезапустить проблемное приложение и одновременно отладить его] -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 13:00, 29 December 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Piter 2015 ==&lt;br /&gt;
[[Image:Tux.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 21, 2015, Saint Petersburg, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://www.it-sobytie.ru/events/4868 Живая миграция контейнеров: плюсы, минусы, подводные камни] -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 07:24, 26 August 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DockerCon 2015 ==&lt;br /&gt;
[[Image:DockerCon15.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 16-17, 2015, Barcelona, Spain'''&lt;br /&gt;
&lt;br /&gt;
Talk about live migration of containers -- [http://europe-2015.dockercon.com/speakers Pavel Emelyanov]&lt;br /&gt;
&lt;br /&gt;
-- [[User:Xemul|Xemul]] 15:00, 1 October 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ContainerDays NYC 2015 ==&lt;br /&gt;
[[Image:2015-nyc-logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 30, 2015, New York, U.S.A.'''&lt;br /&gt;
&lt;br /&gt;
[http://dynamicinfradays.org/events/2015-nyc/programme.html#criu CRIU: Time and Space Travel for Linux Containers] -- by Kirill Kolyshkin&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 00:43, 14 September 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Двенадцатая конференция разработчиков свободных программ ==&lt;br /&gt;
[[Image:Altlinux-logo.gif|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 16-18, 2015, Kaluga, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://www.altlinux.ru/news/archive/2015/08/item/743/ Живая миграция контейнеров: плюсы, минусы, подводные камни] --  Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 08:17, 1 October 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenVZ meetup ==&lt;br /&gt;
[[Image:Yandex.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''September 19, 2015, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[https://events.yandex.ru/events/yagosti/19-september-2015-linux/ Встреча разработчиков Linux-контейнеров]&lt;br /&gt;
&lt;br /&gt;
* Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов&lt;br /&gt;
* CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 06:19, 28 August 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers 2015 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 19-21, 2015, Seattle, WA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://wiki.linuxplumbersconf.org/2015:ckptrestart C/R miniconf]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] ([[User talk:Xemul|talk]]) 16:30, 9 February 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevZen podcast ==&lt;br /&gt;
[[Image:Devzen.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''July 17, 2015, on air'''&lt;br /&gt;
&lt;br /&gt;
Pavel Emelyanov and Kirill Gorcunov will talk about CRIU.&lt;br /&gt;
&lt;br /&gt;
[http://devzen.ru/ DevZen podcast]&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 09:10, 3 July 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LVEE 2015 ==&lt;br /&gt;
[[File:Logo_lvee_2015.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''25-28 June 2015, Grodno, Belarus'''&lt;br /&gt;
&lt;br /&gt;
[http://lvee.org/ru/conference_registrations/LVEE%202015 О том как маленький open-source проект меняет жизнь большой компании]&lt;br /&gt;
&lt;br /&gt;
Pavel Emelyanov will talk about CRIU community (in Russian).&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 08:08, 1 July 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OS Day 2015 ==&lt;br /&gt;
[[File:Os-day-logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''9-10 June 2015, Kazan, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://osday.org/emelyanov.html#speaker Консервирование процессов в домашних условиях]&lt;br /&gt;
&lt;br /&gt;
Pavel Emelyanov will talk about CRIU's recent achievements and use-cases (in Russian).&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] (19 May 2015 (MSK))&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ContainerDays 2015 ==&lt;br /&gt;
[[File:Logo-ContainerDays.png|left|100px|link=]]&lt;br /&gt;
'''June 5-6 2015, Boston, MA, USA'''&lt;br /&gt;
&lt;br /&gt;
Kir Kolyshkin from OpenVZ project will give a talk [http://dynamicinfradays.org/events/2015-boston/programme.html#nproblems &amp;quot;N Problems of Linux Containers...and Some Solutions&amp;quot;] mentioning CRIU in it.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] (4 Jun 2015)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevOps Дефлопе ==&lt;br /&gt;
[[File:Deflope.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 2015, On Air'''&lt;br /&gt;
&lt;br /&gt;
[http://devopsdeflope.ru/ DevOps Дефлопе - Русскоязычный подкаст о DevOps]&lt;br /&gt;
&lt;br /&gt;
Andrew Vagin talks about integration CRIU and Docker and how checkpointing of processes can help in DevOps (in Russian).&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 08:26, 14 May 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FLOSS Weekly 2015 ==&lt;br /&gt;
[[Image:Floss-weekly.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 29, 2015, 8:30am PDT (15:30 GMT), live on air'''&lt;br /&gt;
&lt;br /&gt;
[http://twit.tv/show/floss-weekly/334 Episode about CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 09:35, 8 April 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2015 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2015, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2015/schedule/event/livemigration/ Live migration for containers is around the corner] -- Andrew Vagin&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Andrey Vagin]] 10:20, 13 January 2015 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Docker Meet-Up ==&lt;br /&gt;
&lt;br /&gt;
'''October 29, 2014, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://www.meetup.com/DevOps-Moscow-in-Russian/events/214753582/ Talk about CRIU and Docker] -- Pavel Emelyanov&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Pavel Emelyanov]] 19:30, 23 Oct 2014 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
'''October 15-17, 2014, Dusseldorf, Germany'''&lt;br /&gt;
&lt;br /&gt;
[http://www.linuxplumbersconf.org/2014/an-in-depth-look-containers-microconference/ CRIU discussion at Containers mini-conf ] -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] ([[User talk:Xemul|talk]]) 11:35, 23 October 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Docker Meetup ==&lt;br /&gt;
&lt;br /&gt;
'''September 17, 2014, Mountain View, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://www.meetup.com/Docker-Mountain-View/events/204603722/ Docker MV Meetup #3 at Google] -- Saied Kazemi [https://speakerdeck.com/saied/experimental-docker-checkpoint-and-restore-with-criu talked] about Docker + CRIU&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] ([[User talk:Xemul|talk]]) 03:26, 19 September 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open WG Talk ==&lt;br /&gt;
[[Image:Content_wg_talk.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Friday, July 18, 2014, Minsk, Belarus'''&lt;br /&gt;
&lt;br /&gt;
[https://www.eventbrite.com/e/open-wg-talk-2-linux-container-virtualization-tickets-12189971533?fb_action_ids=705517169505083&amp;amp;fb_action_types=og.likes&amp;amp;fb_source=feed_opengraph&amp;amp;action_object_map=%7B%22705517169505083%22%3A753726634669877%7D&amp;amp;action_type_map=%7B%22705517169505083%22%3A%22og.likes%22%7D&amp;amp;action_ref_map=%5B%5D Open WG Talk #2 (Linux container virtualization)] -- Andrey Vagin&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 10:58, 7 July 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Texas Linux Fest 2014 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Txlf2014.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 13-14, 2014, Austin, Texas, US'''&lt;br /&gt;
&lt;br /&gt;
[http://texaslinuxfest.org/content/criu-time-and-space-travel-service-linux-apps CRIU: time and space travel service for Linux apps] -- Kir Kolyshkin&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 11:52, 6 June 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Docker Meetup ==&lt;br /&gt;
&lt;br /&gt;
'''March 26, 2014, Tel Aviv, Israel'''&lt;br /&gt;
&lt;br /&gt;
[http://www.meetup.com/Docker-Tel-Aviv/ Linux Containers and the Future Cloud] -- Rami Rosen&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 12:50, 24 March 2014 (EDT)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Haifux (LUG) ==&lt;br /&gt;
[[Image:Haifux.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 17, 2014, Haifa, Israel'''&lt;br /&gt;
&lt;br /&gt;
[http://haifux.org/lectures/320/ Linux Containers and the Future Cloud] -- Rami Rosen&lt;br /&gt;
&lt;br /&gt;
--[[User:Rami|Rami]] 03:23, 23 Feb 2014 (PST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SCALE 12x talk ==&lt;br /&gt;
[[Image:Scale_12x_dodecahedron.png|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''Feb 23, 2014, Los Angeles'''&lt;br /&gt;
&lt;br /&gt;
[http://www.socallinuxexpo.org/scale12x/presentations/seven-problems-linux-containers Seven problems of Linux Containers] -- Kir Kolyshkin&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 13:00, 22 Feb 2014 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Moscow Virtualization Meetup ==&lt;br /&gt;
&lt;br /&gt;
'''15 Feb, 2014, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://tech.yandex.ru/events/yagosti/msk-feb-2014/talks/1655/ CRIU 1.0 What is next?]&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 05:55, 30 January 2014 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hangout-on-Air ==&lt;br /&gt;
[[Image:Hoa.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''18:00, 7 Feb, 2014, Online'''&lt;br /&gt;
&lt;br /&gt;
[https://plus.google.com/events/cfj8rg61m1uj6ns3pf6dd8f8me0 CRIU hopes and fears]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 10:00, 30 Jan 2014 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Summit ==&lt;br /&gt;
[[Image:Logo_lks_black.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 23-25, 2013, Edinburgh, UK'''&lt;br /&gt;
&lt;br /&gt;
A quick talk about CRIU project status. -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 10:00, 25 Oct 2013 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxCon Europe ==&lt;br /&gt;
[[Image:LinuxCon-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 21-23, 2013, Edinburgh, UK'''&lt;br /&gt;
&lt;br /&gt;
[http://linuxconcloudopeneu2013.sched.org/event/e0b06ed074144b5bcdb9a0b2791ff2cb?iframe=no&amp;amp;w=900&amp;amp;sidebar=yes&amp;amp;bg=no#.UhTeVGJFynw CRIU: Time and Space Travel Service for Linux Applications -- Pavel Emelyanov ]&lt;br /&gt;
&lt;br /&gt;
Slides [https://events.linuxfoundation.org/sites/events/files/slides/criu-3.11.pdf &amp;quot;CRIU:Time and Space Travel Service for Linux Applications&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 19:30, 21 Aug 2013 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxCon North America ==&lt;br /&gt;
[[Image:LinuxCon-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''September 16-18, 2013, New Orleans, LA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://linuxconcloudopenna2013.sched.org/event/91c1b43ac4c93aeafc27c91ccaed7bc5#.Ue0JsmJFwrQ CRIU: Time and Space Travel Service for Linux Applications -- Pavel Emelyanov ]&lt;br /&gt;
&lt;br /&gt;
Slides [https://events.linuxfoundation.org/sites/events/files/slides/criu-3.11.pdf &amp;quot;CRIU:Time and Space Travel Service for Linux Applications&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 14:30, 22 July 2013 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRIU talk at LVEE ==&lt;br /&gt;
[[Image:LVEE 2013.png‎|left|100px|link=http://lvee.org]]&lt;br /&gt;
'''27-30 June, 2013. Grodno, Belarus'''&lt;br /&gt;
&lt;br /&gt;
Linux Userspace Checkpoint/Restore: From Dreams to Reality - Andrey Vagin&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 06:05, 6 June 2013 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fedora Virtualization Day Moscow 2013==&lt;br /&gt;
[[Image:russian_fedora.png|left|100px|link=http://russianfedora.ru/]]&lt;br /&gt;
'''1 June, 2013. Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://russianfedora.ru/content/%D0%98%D1%82%D0%BE%D0%B3%D0%B8-fedora-virtualization-day CRIU: Checkpoint and Restore (mostly) In Userspace - Andrey Vagin] [http://mirror.yandex.ru/fedora/russianfedora/video/FedoraVirtualizationDay/04-Wagin-Part2.webm video]&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 14:03, 5 June 2013 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRIU talk at SCALE11x ==&lt;br /&gt;
[[Image:Scale-11x.png|100px|left|link=http://www.socallinuxexpo.org/scale11x]]&lt;br /&gt;
'''22-24 February, 2013. Los Angeles, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://www.socallinuxexpo.org/scale11x/presentations/checkpoint-restore-live-migration-and-beyond Checkpoint, Restore, Live Migration and Beyond - Kir Kolyshkin]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 12:10, 23 January 2013 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRIU talk at linux.conf.au ==&lt;br /&gt;
[[Image:Linux-conf-au-2013.jpg|left|link=https://lca2013.linux.org.au/]]&lt;br /&gt;
'''28 January to 2 February, 2013. Canberra, Australia'''&lt;br /&gt;
&lt;br /&gt;
[http://conf.linux.org.au/schedule/30116/view_talk?day=thursday Checkpoint and Restore: Are We There Yet? - Pavel Emelyanov]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] 12:51, 8 October 2012 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2013 ==&lt;br /&gt;
[[Image:Fosdem-2013.png|left|100px|link=https://fosdem.org/2013/]]&lt;br /&gt;
'''2 and 3 February, 2013. Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2013/schedule/event/criu_ckeckpoint_restore/ CRIU: Checkpoint and Restore (mostly) In Userspace - Andrey Vagin]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 21:00, 22 January 2013 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxCon Europe 2012 ==&lt;br /&gt;
[[Image:LinuxCon-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 5-9, 2012, Barcelona, Spain'''&lt;br /&gt;
&lt;br /&gt;
[http://linuxconeurope2012.sched.org/event/bd32207c146c75dd5cbf165006d47e7b Checkpoint and Restore: Are We There Yet? - Pavel Emelyanov]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] 12:51, 8 October 2012 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== YAC 2012 ==&lt;br /&gt;
[[Image:yac_logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''1 Oct 2012, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[https://events.yandex.ru/events/yac/2012?openTalkDescription=35-3 CRIU: more than a live migration (incl. slides and video)]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] 12:25, 8 October 2012 (EDT)&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events/past&amp;diff=5879</id>
		<title>News/events/past</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events/past&amp;diff=5879"/>
		<updated>2026-04-05T12:32:51Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ACHTUNG: please always use FULL SIGNATURE, i.e. --~~~~ as its date is used in RSS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|this page lists events that has happened already, kept here just for historical reasons. For future events, see [[News/events]].}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== NVIDIA GTC 2026 ==&lt;br /&gt;
[[Image:nvidia-gtc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''17 March, 2026, San Jose, CA'''&lt;br /&gt;
&lt;br /&gt;
[https://www.nvidia.com/gtc/session-catalog/sessions/gtc26-s81424/ Achieve Truly Serverless GPUs With libfuse, CRIU, and CUDA-Checkpoint]&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2026 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2026, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2026/schedule/event/F9RANH-forensic-snapshots-in-kubernetes/ Investigating Security Incidents with Forensic Snapshots in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2026/schedule/event/DTGNQS-k8s-checkpoint-restore-wg/ Introducing the Kubernetes Checkpoint Restore Working Group]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2025 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''December 12, 2025, Tokyo, Japan, [https://lpc.events/event/19/sessions/217/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2240/ Files on Unmounted Mounts]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2237/ Guarded Control Stack on arm64: Challenges in Enabling Shadow Stack Support for CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2236/ Optimizing Checkpoints with Built-in Memory Page Compression]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CANOPIE-HPC @ Supercomputing 2025 ==&lt;br /&gt;
[[Image:Sc25_logo.png ‎|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 17, 2025, St. Louis, MO'''&lt;br /&gt;
&lt;br /&gt;
[https://sc25.conference-program.com/presentation/?id=ws_canopie105&amp;amp;sess=sess199 Engine-Agnostic Model Hot-Swapping for Cost-Effective LLM Inference]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Container Plumbing Days 2025 ==&lt;br /&gt;
[[Image:Containerplumbingdays2025.png ‎|left|180px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 28, 2025, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/26BG8 Enabling Secure Container Checkpointing for Distributed Model Training]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== High Performance Container Workshop @ ISC 2025 ==&lt;br /&gt;
[[Image:Isc-logo.png ‎|left|180px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 13, 2025, Hamburg, Germany'''&lt;br /&gt;
&lt;br /&gt;
[https://container-in-hpc.org/isc/2025/hpcw/index.html Transparent Hot-Swapping of Containerized AI/ML Workloads]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JSSPP Workshop 2025 ==&lt;br /&gt;
[[Image:Jsspp-logo.png|left|80px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 3, 2025, Milan, Italy'''&lt;br /&gt;
&lt;br /&gt;
[https://jsspp.org/index.php?page=program Kubernetes Scheduling with Checkpoint/Restore: Challenges and Open Problems]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2025 ==&lt;br /&gt;
[[Image:Kubecon.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 3, 2025, London, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1tx7i Efficient Transparent Checkpointing of AI/ML Workloads in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1tx7u Transparent, Infra-Level Checkpoint and Restore for Resilient AI/ML Workloads at Scale]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oxford e-Research Centre ==&lt;br /&gt;
[[Image:Oerc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 02, 2025, Oxford, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://oerc.ox.ac.uk/events/efficient-transparent-checkpointing-of-aiml-workloads-in-kubernetes/ Efficient Transparent Checkpointing of AI/ML Workloads in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2025 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2025, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2025/schedule/event/fosdem-2025-4326-state-of-checkpoint-restore-in-kubernetes/ State of Checkpoint/Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2025/schedule/event/fosdem-2025-4042-optimizing-resource-utilization-for-interactive-gpu-workloads-with-transparent-container-checkpointing/ Optimizing Resource Utilization for Interactive GPU Workloads with Transparent Container Checkpointing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oxford e-Research Centre ==&lt;br /&gt;
[[Image:Oerc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''January 23, 2025, Oxford, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://oerc.ox.ac.uk/news/optimizing-resource-utilization-for-interactive-gpu-workloads-with-transparent-container-checkpointing/ Optimizing Resource Utilization for Interactive GPU Workloads with Transparent Container Checkpointing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxDays 2024 ==&lt;br /&gt;
[[Image:Linux-days-cz.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''13 Oct 2024, [https://pretalx.linuxdays.cz/linuxdays-2024/talk/7MQPWQ/ On the Edge of Tomorrow: Checkpoint/Restore in Containers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kubernetes Community Days Austria ==&lt;br /&gt;
[[Image:Kcd-austria.svg|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''09 Oct 2024, [https://kcdaustria2024.sessionize.com/session/678172 Forensic container checkpointing and analysis]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2024 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''18-20 Sep 2024, [https://lpc.events/event/18/sessions/193/#20240919 Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
 Other talks:&lt;br /&gt;
 * [https://lpc.events/event/18/contributions/1729/ Userspace memory persistence over kexec]&lt;br /&gt;
 * [https://lpc.events/event/18/contributions/1812/ Checkpoint/Restore In eBPF (CRIB)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oxford e-Research Centre ==&lt;br /&gt;
[[Image:Oerc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 29, 2024, Oxford, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://oerc.ox.ac.uk/events/towards-efficient-end-to-end-encryption-for-container-checkpointing-systems/ Towards Efficient End-to-End Encryption for Container Checkpointing Systems]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CloudNativeSecurityCon North America 2024 ==&lt;br /&gt;
[[Image:CloudNativeSecurityCon.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 27, 2024, Seattle, Washington'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1dCVs End-to-End Encryption for Container Checkpointing in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://cloudnativesecurityconna24.sched.com/event/1dCUF/csi-forensics-unraveling-kubernetes-crime-scenes-alberto-pellitteri-stefano-chierici-sysdig CSI Forensics: Unraveling Kubernetes Crime Scenes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit North America 2024 ==&lt;br /&gt;
[[Image:oss-na.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 17, 2024, Seattle, Washington'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1aPu9 Investigating Checkpoint and Restore for GPU-Accelerated Containers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NVIDIA GTC 2024 ==&lt;br /&gt;
[[Image:nvidia-gtc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 21, 2024, San Jose, CA'''&lt;br /&gt;
&lt;br /&gt;
[https://www.nvidia.com/gtc/posters/#/session/1705106137731001cNAN Achieving K8S and Public Cloud Operational Efficiency using a New Checkpoint/Restart Feature for GPUs]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2024 ==&lt;br /&gt;
[[Image:Kubecon.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 22, 2024, Paris, France'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1YeP3 The Party Must Go on - Resume Pods After Spot Instance Shut Down]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1YeT4 Enabling Coordinated Checkpointing for Distributed HPC Applications]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2024 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 3, 2024, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2024/schedule/event/fosdem-2024-3454-zeroing-and-the-semantic-gap-between-host-and-guest/ Zeroing and the semantic gap between host and guest]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2024/schedule/event/fosdem-2024-1855-forensic-container-checkpointing-and-analysis/ Forensic container checkpointing and analysis]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2023 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''13 Nov 2023, [https://lpc.events/event/17/sessions/162/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/17/contributions/1572/ Introducing PAGEMAP_SCAN IOCTL for Windows syscalls translation and CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/17/contributions/1570/ Fuse mounts recovery and Checkpoint/Restore]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/17/contributions/1568/ Protecting Sensitive Data in Container Checkpoints]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit Europe 2023 ==&lt;br /&gt;
[[Image:Osseu.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Sept 20, 2023, Bilbao, Spain'''&lt;br /&gt;
&lt;br /&gt;
[https://osseu2023.sched.com/event/1OGi9/digital-forensics-with-container-checkpointing-daniel-simionato-javier-martinez-sysdig Digital Forensics with Container Checkpointing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GopherCon India 2023 ==&lt;br /&gt;
[[Image:Gopher-india.jpg|left|50px|link=https://gopherconindia.org/]]&lt;br /&gt;
&lt;br /&gt;
'''Sept 9, 2023, Pune, India'''&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=UGQgcIz9xGc Container checkpoints with Go and CRIU]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LSDS Seminar ==&lt;br /&gt;
[[Image:Lsds-logo.jpg|left|200px|link=https://lsds.doc.ic.ac.uk/]]&lt;br /&gt;
&lt;br /&gt;
'''March 9, 2023, Imperial College London'''&lt;br /&gt;
&lt;br /&gt;
[https://lsds.doc.ic.ac.uk/content/transparent-container-checkpointing-and-rollback-recovery-kubernetes-open-challenges-and Transparent Container Checkpointing and Rollback-Recovery with Kubernetes: Open Challenges and Research Directions]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2023 ==&lt;br /&gt;
[[Image:Devconf17.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''June 16, 2023'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1MYjk Forensic Analysis of Container Checkpoints]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2023 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 4, 2023, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2023/schedule/event/container_kubernetes_criu/ Kubernetes and Checkpoint/Restore]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2022 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''14 Sep 2022, [https://lpc.events/event/16/sessions/136/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/16/contributions/1241/ Restoring process trees with child-sub-reapers, nested pid-namespaces and inherit-only resources]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/16/contributions/1242/ Unprivileged CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/16/contributions/1243/ Bringing up FUSE mounts C/R support]&lt;br /&gt;
&lt;br /&gt;
== stackconf 2022 ==&lt;br /&gt;
[[Image:stackconf.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Jul 19, Berlin&lt;br /&gt;
&lt;br /&gt;
[https://stackconf.eu/talks/kubernetes-and-checkpoint-restore/ Kubernetes and Checkpoint/Restore]&lt;br /&gt;
&lt;br /&gt;
== KubeCon + CloudNativeCon North America 2021 ==&lt;br /&gt;
[[Image:kubecon-2021.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 11-15, Los Angeles, California&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/BXVyszsbYmg Container Checkpoint/Restore at Scale for Fast Pod Startup Time]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== X.Org Developer Conference 2021 ==&lt;br /&gt;
&lt;br /&gt;
'''September 15, [https://youtu.be/uTZISTjqy9Q online on the wider Internet]&lt;br /&gt;
&lt;br /&gt;
[https://indico.freedesktop.org/event/1/contributions/18/ Fast Checkpoint Restore for AMD GPUs with CRIU]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2021 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''20 Sep 2021, [https://linuxplumbersconf.org/event/11/sessions/101/#20210920 Containers and Checkpoint/Restore Microconference] ([https://www.youtube.com/watch?v=SKyxugj8rxE video recording])&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/11/contributions/891/ Fast Checkpoint Restore for GPUs]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/11/contributions/923/ Mount-v2 CRIU migration engine: status update]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/11/contributions/924/ Alternative ways to extract information about processes]&lt;br /&gt;
&lt;br /&gt;
== Container Plumbing Days 2021 ==&lt;br /&gt;
[[Image:Container_plumbing_days.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''March 09, 2021, virtual'''&lt;br /&gt;
&lt;br /&gt;
[https://containerplumbing.org/sessions/2021/containerm.html Container Migration News]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2021 ==&lt;br /&gt;
[[Image:Devconf17.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''February 19, 2021, virtual'''&lt;br /&gt;
&lt;br /&gt;
[https://devconfcz2021.sched.com/event/gmId/container-live-migration Container Live Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit Europe 2020 ==&lt;br /&gt;
[[Image:Osseu.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 26, 2020, Virtual'''&lt;br /&gt;
&lt;br /&gt;
[https://osseu2020.sched.com/event/eCDH/container-live-migration-adrian-reber-red-hat Container Live Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2020 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 24-28, [https://linuxplumbersconf.org/event/7/ online on the wider Internet]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/641/ Fast checkpointing with criu-image-streamer]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/642/ FastFreeze: Unprivileged checkpoint/restore for containerized applications]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/640/ CRIU mounts migration: problems and solutions]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/643/ Checkpoint-restoring containers with Docker inside]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Phoronix news ==&lt;br /&gt;
[[Image:phoronix.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 4, 2020, online'''&lt;br /&gt;
&lt;br /&gt;
[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Linux-5.9-Checkpoint-Restore Checkpoint/Restore Of Unprivileged Processes Sent In For Linux 5.9]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevOops 2020 ==&lt;br /&gt;
[[Image:Devoops.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''July 10, 2020, online'''&lt;br /&gt;
&lt;br /&gt;
[https://devoops-moscow.ru/en/2020/msk/talks/2eyl2ebmmix5ovx9imqhu9/ Container live migration with Podman and CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenShift Twitch 2020 ==&lt;br /&gt;
[[Image:Openshift.jpg|left|50px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 20, 2020, online'''&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=-7DgNxyuz_o Container Migration and CRIU Details]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2020 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Feburary 1, 2020, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2020/schedule/event/containers_live_migration/ Container Live Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Rppt]] 19:22, 28 February 2020‎ (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2019 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''September 9-11, Lisbon, Portugal'''&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/508/ Update on Task Migration at Google Using CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/472/ CRIU and the PID dance]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/513/ CRIU: Reworking vDSO proxification, syscall restart]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/478/ Secure Image-less Container Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin]] 14:05, 23 Aug 2019 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tübix 2019 ==&lt;br /&gt;
[[Image:tuex.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Jul 06, 2019, Tübingen, Germany'''&lt;br /&gt;
&lt;br /&gt;
Adrian Reber [https://www.tuebix.org/2019/programm/adrian-reber-container-live-migration/ Container Live Migration]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Google Summer of Code 2019 ==&lt;br /&gt;
[[Image:gsoc.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Mar-Sep 2019'''&lt;br /&gt;
&lt;br /&gt;
[https://summerofcode.withgoogle.com/organizations/6333591376625664/ Google Summer of Code]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2018 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Nov 13-15 , 2018, Vancouver, BC, Canada'''&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/202/ Time Namespaces]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/207/ Another year with CRIU: News from the developers]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/205/ News from academia: FatELF, RDMA and CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/135/ Remote page faults over RDMA]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/209/ Task Migration at Google Using CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/210/ Securely Migrating Untrusted Workloads with CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/69/ Task Migration at Scale Using CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Radostin]] 14:05, 18 Nov 2018 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit Europe 2018 ==&lt;br /&gt;
[[Image:Osseu17.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 24, 2018, Edinburgh, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://osseu18.sched.com/event/FxYI/to-kill-or-to-checkpoint-that-is-the-question-mike-rapoport-ibm-adrian-reber-red-hat To Kill, or to Checkpoint - That is the Question]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 09:46, 29 September 2018 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Serverless meetup, Moscow ==&lt;br /&gt;
[[Image:Meetup.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 18, 2018, Moscow'''&lt;br /&gt;
&lt;br /&gt;
[https://www.meetup.com/ru-RU/moscow-serverless/events/255386528/ Задержки при вызове serverless функций: как формируются, на что влияют и как ими управлять], Владимир Порохов, Swifty Cloud&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:55, 17 October 2018 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2018 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Feburary 4, 2018, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2018/schedule/event/containers_containing_memory/ Containers devroom]&lt;br /&gt;
* Containing container memory -- Mike Rapoport&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Andrey Vagin]] 22:48, 31 Jan 2018 (PST) &lt;br /&gt;
&lt;br /&gt;
== Open Source Summit EU 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Osseu17.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 23, 2017, Prague, Czech Republic'''&lt;br /&gt;
&lt;br /&gt;
Mike Rapoport and Adrian Reber [http://sched.co/BxIG will talk about live migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 12:00, 23 Aug 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SECR 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Secr17logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 20, 2017, St. Petersburg, Russia'''&lt;br /&gt;
&lt;br /&gt;
Pavel Begunkov will talk about [http://2017.secr.ru/lang/en/program/submitted-presentations/checkpointrestore-of-file-locks-from-userspace-in-linux file locks] checkpoint and restore.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 13:30, 12 Sep 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit NA 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:OSS_na_white_0.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Sep 11, 2017, Los Angeles, USA'''&lt;br /&gt;
&lt;br /&gt;
Michael Holzheu [http://sched.co/BDpJ will talk] about CRIU on IBM mainframes.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 14:00, 29 Jun 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2017 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Sep 13-15, 2017, Los Angeles, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/2017/ocw/events/LPC2017/tracks/637 Checkpoint-Restore microconf]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 18:20, 9 Aug 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Systor 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Systor_2017.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''May 22-24, 2017, Haifa, Israel'''&lt;br /&gt;
&lt;br /&gt;
[https://systor17posters.hotcrp.com/paper/8?cap=08aenKqSiwS9bA Accepted paper] about post-copy live migration from Mike Rapoport and Joel Nider&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 15:40, 21 Apr 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SCALE 15x ==&lt;br /&gt;
&lt;br /&gt;
[[Image:scale 15x logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 2-5, 2017, Pasadena, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
Kir Kolyshkin talked about some uncommon ways to use CRIU. [https://www.youtube.com/watch?v=7PKMctKf2JQ&amp;amp;t=18058 Video recording].&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 20:57, 13 February 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2017 ==&lt;br /&gt;
[[Image:Devconf17.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''January 27-29, 2017, Brno, Czech Republic'''&lt;br /&gt;
&lt;br /&gt;
[https://devconf.cz/schedule.html Decreasing container downtime during migration] by Adrian Reber. (the devconf site is not URL-friendly these days, go to Day-3 tab and check 11AM talks)&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 9:20, 12 Jan 2016 (MSG)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2d1o podcast (rus) ==&lt;br /&gt;
'''Dec 22, 2016, On-Air'''&lt;br /&gt;
&lt;br /&gt;
[https://www.2d1o.ru/episodes/s01e03.html 2d1o podcast] invited Pavel Emelyanov to talk about Live migration (of Docker containers).&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:00, 9 Jan 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Middleware 2016 ==&lt;br /&gt;
'''Dec 12-16, 2016, Trento, Italy'''&lt;br /&gt;
&lt;br /&gt;
Rodrigo Bruno gave a talk about Live Migrating JVM workloads using CRIU. Search for 'ALMA' on the [http://2016.middleware-conference.org/program/overall/ schedule page] :)&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 15:00, 19 Dec 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Piter ==&lt;br /&gt;
[[Image:Linuxpiter.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Nov 11-12, 2016, St. Petersburg, Russia'''&lt;br /&gt;
&lt;br /&gt;
Tycho Andersen will talk about [http://www.it-events.com/ru/events/6997#tabs-programm live migration in LXD]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:30, 12 Oct 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2016 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Nov 2-4, 2016, Santa Fe, NM, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://wiki.linuxplumbersconf.org/2016:checkpoint-restart Checkpoint-Restore micro-conference] within the [http://www.linuxplumbersconf.org/2016/ bigger event]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 21:50, 25 Apr 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenStack summit 2016 ==&lt;br /&gt;
[[Image:OpenStack_Summit.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 25-28, 2016, Barcelona, Spain'''&lt;br /&gt;
&lt;br /&gt;
Phil Estes talks about [https://www.openstack.org/summit/barcelona-2016/summit-schedule/events/15091/live-container-migration-on-openstack live container migration in OpenStack]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 13:00, 25 Oct 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux kernel meetup in Tel-Aviv ==&lt;br /&gt;
&lt;br /&gt;
'''July 12, 2016, Tel-Aviv Israel'''&lt;br /&gt;
&lt;br /&gt;
Mike Rapoport will deliver [http://www.meetup.com/Tel-Aviv-Yafo-Linux-Kernel-Meetup/events/232058698/?gj=te1&amp;amp;rv=te1 a talk about UserfaultFD and lazy migration].&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 12:50, 24 Jun 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSC'16 ==&lt;br /&gt;
[[Image:Oscfinal.png|left|100px|link=]]&lt;br /&gt;
'''June 22, 2016, Nürnberg, Germany'''&lt;br /&gt;
&lt;br /&gt;
Takashi Iwai [https://media.ccc.de/v/896-exploring-criu Exploring CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 16:15, 27 Jun 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USENIX ATC'16 ==&lt;br /&gt;
[[Image:Usenix-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 22-24, 2016, Denver, CO, USA'''&lt;br /&gt;
&lt;br /&gt;
Sanidhya Kashyap will present [https://www.usenix.org/conference/atc16/technical-sessions/presentation/kashyap KuP] -- an instant OS updater using CRIU&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:30, 25 Apr 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black belt tech @ DockerCon 2016 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Dockercon16.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 19-21, 2016, Seattle, WA, USA'''&lt;br /&gt;
&lt;br /&gt;
Ross Boucher will talk about [https://blog.docker.com/2016/04/black-belt-talks-dockercon-2016/ Cloning running services with Docker and CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 14:30, 13 Apr 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tuebingen 2016 ==&lt;br /&gt;
'''Jun 11, 2016, Tübingen, Germany'''&lt;br /&gt;
&lt;br /&gt;
Adrian Reber [http://www.tuebix.org/2016/programm/adrian-reber-container-migration-using-criu-and-lxc/ will presend] the [[Userfaultfd]] and lazy migration.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 14:15, 7 Jun 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Systor 2016 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Systor2016.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Jun 6-8, 2016, Haifa, Israel'''&lt;br /&gt;
&lt;br /&gt;
[http://www.systor.org/2016/accepted.html Accepted paper] about containers live migration from Mike Rapoport&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 20:15, 6 May 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2016 ==&lt;br /&gt;
[[Image:Devconf.cz-logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 5, 2016, Brno, Czech Republic'''&lt;br /&gt;
&lt;br /&gt;
[https://devconfcz2016.sched.org/event/5lzL/live-migrating-a-container-pros-cons-and-gotchas Live migrating a container: pros, cons and gotchas] by Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 9:20, 12 Jan 2016 (MSG)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2016 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''January 30, 2016, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://www.fosdem.org/2016/schedule/track/containers_and_process_isolation/ Containers devroom]&lt;br /&gt;
* Using p.haul to migrate containers -- Tycho Andersen&lt;br /&gt;
* New horizons for the CRIU project -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 00:45, 19 December 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxMeetup Nizhny Novgorod 2016 ==&lt;br /&gt;
'''January 22, 2016, Nizhny Novgorod, Russia'''&lt;br /&gt;
&lt;br /&gt;
[https://mdday.timepad.ru/event/279578/ И овцы целы, и волки сыты: как перезапустить проблемное приложение и одновременно отладить его] -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 13:00, 29 December 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Piter 2015 ==&lt;br /&gt;
[[Image:Tux.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 21, 2015, Saint Petersburg, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://www.it-sobytie.ru/events/4868 Живая миграция контейнеров: плюсы, минусы, подводные камни] -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 07:24, 26 August 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DockerCon 2015 ==&lt;br /&gt;
[[Image:DockerCon15.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 16-17, 2015, Barcelona, Spain'''&lt;br /&gt;
&lt;br /&gt;
Talk about live migration of containers -- [http://europe-2015.dockercon.com/speakers Pavel Emelyanov]&lt;br /&gt;
&lt;br /&gt;
-- [[User:Xemul|Xemul]] 15:00, 1 October 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ContainerDays NYC 2015 ==&lt;br /&gt;
[[Image:2015-nyc-logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 30, 2015, New York, U.S.A.'''&lt;br /&gt;
&lt;br /&gt;
[http://dynamicinfradays.org/events/2015-nyc/programme.html#criu CRIU: Time and Space Travel for Linux Containers] -- by Kirill Kolyshkin&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 00:43, 14 September 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Двенадцатая конференция разработчиков свободных программ ==&lt;br /&gt;
[[Image:Altlinux-logo.gif|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 16-18, 2015, Kaluga, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://www.altlinux.ru/news/archive/2015/08/item/743/ Живая миграция контейнеров: плюсы, минусы, подводные камни] --  Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 08:17, 1 October 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenVZ meetup ==&lt;br /&gt;
[[Image:Yandex.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''September 19, 2015, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[https://events.yandex.ru/events/yagosti/19-september-2015-linux/ Встреча разработчиков Linux-контейнеров]&lt;br /&gt;
&lt;br /&gt;
* Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов&lt;br /&gt;
* CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 06:19, 28 August 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers 2015 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 19-21, 2015, Seattle, WA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://wiki.linuxplumbersconf.org/2015:ckptrestart C/R miniconf]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] ([[User talk:Xemul|talk]]) 16:30, 9 February 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevZen podcast ==&lt;br /&gt;
[[Image:Devzen.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''July 17, 2015, on air'''&lt;br /&gt;
&lt;br /&gt;
Pavel Emelyanov and Kirill Gorcunov will talk about CRIU.&lt;br /&gt;
&lt;br /&gt;
[http://devzen.ru/ DevZen podcast]&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 09:10, 3 July 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LVEE 2015 ==&lt;br /&gt;
[[File:Logo_lvee_2015.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''25-28 June 2015, Grodno, Belarus'''&lt;br /&gt;
&lt;br /&gt;
[http://lvee.org/ru/conference_registrations/LVEE%202015 О том как маленький open-source проект меняет жизнь большой компании]&lt;br /&gt;
&lt;br /&gt;
Pavel Emelyanov will talk about CRIU community (in Russian).&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 08:08, 1 July 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OS Day 2015 ==&lt;br /&gt;
[[File:Os-day-logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''9-10 June 2015, Kazan, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://osday.org/emelyanov.html#speaker Консервирование процессов в домашних условиях]&lt;br /&gt;
&lt;br /&gt;
Pavel Emelyanov will talk about CRIU's recent achievements and use-cases (in Russian).&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] (19 May 2015 (MSK))&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ContainerDays 2015 ==&lt;br /&gt;
[[File:Logo-ContainerDays.png|left|100px|link=]]&lt;br /&gt;
'''June 5-6 2015, Boston, MA, USA'''&lt;br /&gt;
&lt;br /&gt;
Kir Kolyshkin from OpenVZ project will give a talk [http://dynamicinfradays.org/events/2015-boston/programme.html#nproblems &amp;quot;N Problems of Linux Containers...and Some Solutions&amp;quot;] mentioning CRIU in it.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] (4 Jun 2015)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevOps Дефлопе ==&lt;br /&gt;
[[File:Deflope.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 2015, On Air'''&lt;br /&gt;
&lt;br /&gt;
[http://devopsdeflope.ru/ DevOps Дефлопе - Русскоязычный подкаст о DevOps]&lt;br /&gt;
&lt;br /&gt;
Andrew Vagin talks about integration CRIU and Docker and how checkpointing of processes can help in DevOps (in Russian).&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 08:26, 14 May 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FLOSS Weekly 2015 ==&lt;br /&gt;
[[Image:Floss-weekly.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 29, 2015, 8:30am PDT (15:30 GMT), live on air'''&lt;br /&gt;
&lt;br /&gt;
[http://twit.tv/show/floss-weekly/334 Episode about CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 09:35, 8 April 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2015 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2015, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2015/schedule/event/livemigration/ Live migration for containers is around the corner] -- Andrew Vagin&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Andrey Vagin]] 10:20, 13 January 2015 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Docker Meet-Up ==&lt;br /&gt;
&lt;br /&gt;
'''October 29, 2014, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://www.meetup.com/DevOps-Moscow-in-Russian/events/214753582/ Talk about CRIU and Docker] -- Pavel Emelyanov&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Pavel Emelyanov]] 19:30, 23 Oct 2014 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
'''October 15-17, 2014, Dusseldorf, Germany'''&lt;br /&gt;
&lt;br /&gt;
[http://www.linuxplumbersconf.org/2014/an-in-depth-look-containers-microconference/ CRIU discussion at Containers mini-conf ] -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] ([[User talk:Xemul|talk]]) 11:35, 23 October 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Docker Meetup ==&lt;br /&gt;
&lt;br /&gt;
'''September 17, 2014, Mountain View, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://www.meetup.com/Docker-Mountain-View/events/204603722/ Docker MV Meetup #3 at Google] -- Saied Kazemi [https://speakerdeck.com/saied/experimental-docker-checkpoint-and-restore-with-criu talked] about Docker + CRIU&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] ([[User talk:Xemul|talk]]) 03:26, 19 September 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open WG Talk ==&lt;br /&gt;
[[Image:Content_wg_talk.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Friday, July 18, 2014, Minsk, Belarus'''&lt;br /&gt;
&lt;br /&gt;
[https://www.eventbrite.com/e/open-wg-talk-2-linux-container-virtualization-tickets-12189971533?fb_action_ids=705517169505083&amp;amp;fb_action_types=og.likes&amp;amp;fb_source=feed_opengraph&amp;amp;action_object_map=%7B%22705517169505083%22%3A753726634669877%7D&amp;amp;action_type_map=%7B%22705517169505083%22%3A%22og.likes%22%7D&amp;amp;action_ref_map=%5B%5D Open WG Talk #2 (Linux container virtualization)] -- Andrey Vagin&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 10:58, 7 July 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Texas Linux Fest 2014 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Txlf2014.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 13-14, 2014, Austin, Texas, US'''&lt;br /&gt;
&lt;br /&gt;
[http://texaslinuxfest.org/content/criu-time-and-space-travel-service-linux-apps CRIU: time and space travel service for Linux apps] -- Kir Kolyshkin&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 11:52, 6 June 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Docker Meetup ==&lt;br /&gt;
&lt;br /&gt;
'''March 26, 2014, Tel Aviv, Israel'''&lt;br /&gt;
&lt;br /&gt;
[http://www.meetup.com/Docker-Tel-Aviv/ Linux Containers and the Future Cloud] -- Rami Rosen&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 12:50, 24 March 2014 (EDT)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Haifux (LUG) ==&lt;br /&gt;
[[Image:Haifux.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 17, 2014, Haifa, Israel'''&lt;br /&gt;
&lt;br /&gt;
[http://haifux.org/lectures/320/ Linux Containers and the Future Cloud] -- Rami Rosen&lt;br /&gt;
&lt;br /&gt;
--[[User:Rami|Rami]] 03:23, 23 Feb 2014 (PST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SCALE 12x talk ==&lt;br /&gt;
[[Image:Scale_12x_dodecahedron.png|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''Feb 23, 2014, Los Angeles'''&lt;br /&gt;
&lt;br /&gt;
[http://www.socallinuxexpo.org/scale12x/presentations/seven-problems-linux-containers Seven problems of Linux Containers] -- Kir Kolyshkin&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 13:00, 22 Feb 2014 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Moscow Virtualization Meetup ==&lt;br /&gt;
&lt;br /&gt;
'''15 Feb, 2014, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://tech.yandex.ru/events/yagosti/msk-feb-2014/talks/1655/ CRIU 1.0 What is next?]&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 05:55, 30 January 2014 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hangout-on-Air ==&lt;br /&gt;
[[Image:Hoa.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''18:00, 7 Feb, 2014, Online'''&lt;br /&gt;
&lt;br /&gt;
[https://plus.google.com/events/cfj8rg61m1uj6ns3pf6dd8f8me0 CRIU hopes and fears]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 10:00, 30 Jan 2014 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Summit ==&lt;br /&gt;
[[Image:Logo_lks_black.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 23-25, 2013, Edinburgh, UK'''&lt;br /&gt;
&lt;br /&gt;
A quick talk about CRIU project status. -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 10:00, 25 Oct 2013 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxCon Europe ==&lt;br /&gt;
[[Image:LinuxCon-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 21-23, 2013, Edinburgh, UK'''&lt;br /&gt;
&lt;br /&gt;
[http://linuxconcloudopeneu2013.sched.org/event/e0b06ed074144b5bcdb9a0b2791ff2cb?iframe=no&amp;amp;w=900&amp;amp;sidebar=yes&amp;amp;bg=no#.UhTeVGJFynw CRIU: Time and Space Travel Service for Linux Applications -- Pavel Emelyanov ]&lt;br /&gt;
&lt;br /&gt;
Slides [https://events.linuxfoundation.org/sites/events/files/slides/criu-3.11.pdf &amp;quot;CRIU:Time and Space Travel Service for Linux Applications&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 19:30, 21 Aug 2013 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxCon North America ==&lt;br /&gt;
[[Image:LinuxCon-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''September 16-18, 2013, New Orleans, LA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://linuxconcloudopenna2013.sched.org/event/91c1b43ac4c93aeafc27c91ccaed7bc5#.Ue0JsmJFwrQ CRIU: Time and Space Travel Service for Linux Applications -- Pavel Emelyanov ]&lt;br /&gt;
&lt;br /&gt;
Slides [https://events.linuxfoundation.org/sites/events/files/slides/criu-3.11.pdf &amp;quot;CRIU:Time and Space Travel Service for Linux Applications&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 14:30, 22 July 2013 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRIU talk at LVEE ==&lt;br /&gt;
[[Image:LVEE 2013.png‎|left|100px|link=http://lvee.org]]&lt;br /&gt;
'''27-30 June, 2013. Grodno, Belarus'''&lt;br /&gt;
&lt;br /&gt;
Linux Userspace Checkpoint/Restore: From Dreams to Reality - Andrey Vagin&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 06:05, 6 June 2013 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fedora Virtualization Day Moscow 2013==&lt;br /&gt;
[[Image:russian_fedora.png|left|100px|link=http://russianfedora.ru/]]&lt;br /&gt;
'''1 June, 2013. Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://russianfedora.ru/content/%D0%98%D1%82%D0%BE%D0%B3%D0%B8-fedora-virtualization-day CRIU: Checkpoint and Restore (mostly) In Userspace - Andrey Vagin] [http://mirror.yandex.ru/fedora/russianfedora/video/FedoraVirtualizationDay/04-Wagin-Part2.webm video]&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 14:03, 5 June 2013 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRIU talk at SCALE11x ==&lt;br /&gt;
[[Image:Scale-11x.png|100px|left|link=http://www.socallinuxexpo.org/scale11x]]&lt;br /&gt;
'''22-24 February, 2013. Los Angeles, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://www.socallinuxexpo.org/scale11x/presentations/checkpoint-restore-live-migration-and-beyond Checkpoint, Restore, Live Migration and Beyond - Kir Kolyshkin]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 12:10, 23 January 2013 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRIU talk at linux.conf.au ==&lt;br /&gt;
[[Image:Linux-conf-au-2013.jpg|left|link=https://lca2013.linux.org.au/]]&lt;br /&gt;
'''28 January to 2 February, 2013. Canberra, Australia'''&lt;br /&gt;
&lt;br /&gt;
[http://conf.linux.org.au/schedule/30116/view_talk?day=thursday Checkpoint and Restore: Are We There Yet? - Pavel Emelyanov]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] 12:51, 8 October 2012 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2013 ==&lt;br /&gt;
[[Image:Fosdem-2013.png|left|100px|link=https://fosdem.org/2013/]]&lt;br /&gt;
'''2 and 3 February, 2013. Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2013/schedule/event/criu_ckeckpoint_restore/ CRIU: Checkpoint and Restore (mostly) In Userspace - Andrey Vagin]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 21:00, 22 January 2013 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxCon Europe 2012 ==&lt;br /&gt;
[[Image:LinuxCon-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 5-9, 2012, Barcelona, Spain'''&lt;br /&gt;
&lt;br /&gt;
[http://linuxconeurope2012.sched.org/event/bd32207c146c75dd5cbf165006d47e7b Checkpoint and Restore: Are We There Yet? - Pavel Emelyanov]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] 12:51, 8 October 2012 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== YAC 2012 ==&lt;br /&gt;
[[Image:yac_logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''1 Oct 2012, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[https://events.yandex.ru/events/yac/2012?openTalkDescription=35-3 CRIU: more than a live migration (incl. slides and video)]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] 12:25, 8 October 2012 (EDT)&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events/past&amp;diff=5878</id>
		<title>News/events/past</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events/past&amp;diff=5878"/>
		<updated>2026-04-05T12:32:14Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ACHTUNG: please always use FULL SIGNATURE, i.e. --~~~~ as its date is used in RSS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|this page lists events that has happened already, kept here just for historical reasons. For future events, see [[News/events]].}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2026 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2026, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2026/schedule/event/F9RANH-forensic-snapshots-in-kubernetes/ Investigating Security Incidents with Forensic Snapshots in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2026/schedule/event/DTGNQS-k8s-checkpoint-restore-wg/ Introducing the Kubernetes Checkpoint Restore Working Group]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2025 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''December 12, 2025, Tokyo, Japan, [https://lpc.events/event/19/sessions/217/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2240/ Files on Unmounted Mounts]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2237/ Guarded Control Stack on arm64: Challenges in Enabling Shadow Stack Support for CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2236/ Optimizing Checkpoints with Built-in Memory Page Compression]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CANOPIE-HPC @ Supercomputing 2025 ==&lt;br /&gt;
[[Image:Sc25_logo.png ‎|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 17, 2025, St. Louis, MO'''&lt;br /&gt;
&lt;br /&gt;
[https://sc25.conference-program.com/presentation/?id=ws_canopie105&amp;amp;sess=sess199 Engine-Agnostic Model Hot-Swapping for Cost-Effective LLM Inference]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Container Plumbing Days 2025 ==&lt;br /&gt;
[[Image:Containerplumbingdays2025.png ‎|left|180px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 28, 2025, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/26BG8 Enabling Secure Container Checkpointing for Distributed Model Training]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== High Performance Container Workshop @ ISC 2025 ==&lt;br /&gt;
[[Image:Isc-logo.png ‎|left|180px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 13, 2025, Hamburg, Germany'''&lt;br /&gt;
&lt;br /&gt;
[https://container-in-hpc.org/isc/2025/hpcw/index.html Transparent Hot-Swapping of Containerized AI/ML Workloads]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JSSPP Workshop 2025 ==&lt;br /&gt;
[[Image:Jsspp-logo.png|left|80px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 3, 2025, Milan, Italy'''&lt;br /&gt;
&lt;br /&gt;
[https://jsspp.org/index.php?page=program Kubernetes Scheduling with Checkpoint/Restore: Challenges and Open Problems]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2025 ==&lt;br /&gt;
[[Image:Kubecon.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 3, 2025, London, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1tx7i Efficient Transparent Checkpointing of AI/ML Workloads in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1tx7u Transparent, Infra-Level Checkpoint and Restore for Resilient AI/ML Workloads at Scale]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oxford e-Research Centre ==&lt;br /&gt;
[[Image:Oerc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 02, 2025, Oxford, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://oerc.ox.ac.uk/events/efficient-transparent-checkpointing-of-aiml-workloads-in-kubernetes/ Efficient Transparent Checkpointing of AI/ML Workloads in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2025 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2025, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2025/schedule/event/fosdem-2025-4326-state-of-checkpoint-restore-in-kubernetes/ State of Checkpoint/Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2025/schedule/event/fosdem-2025-4042-optimizing-resource-utilization-for-interactive-gpu-workloads-with-transparent-container-checkpointing/ Optimizing Resource Utilization for Interactive GPU Workloads with Transparent Container Checkpointing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oxford e-Research Centre ==&lt;br /&gt;
[[Image:Oerc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''January 23, 2025, Oxford, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://oerc.ox.ac.uk/news/optimizing-resource-utilization-for-interactive-gpu-workloads-with-transparent-container-checkpointing/ Optimizing Resource Utilization for Interactive GPU Workloads with Transparent Container Checkpointing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxDays 2024 ==&lt;br /&gt;
[[Image:Linux-days-cz.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''13 Oct 2024, [https://pretalx.linuxdays.cz/linuxdays-2024/talk/7MQPWQ/ On the Edge of Tomorrow: Checkpoint/Restore in Containers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kubernetes Community Days Austria ==&lt;br /&gt;
[[Image:Kcd-austria.svg|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''09 Oct 2024, [https://kcdaustria2024.sessionize.com/session/678172 Forensic container checkpointing and analysis]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2024 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''18-20 Sep 2024, [https://lpc.events/event/18/sessions/193/#20240919 Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
 Other talks:&lt;br /&gt;
 * [https://lpc.events/event/18/contributions/1729/ Userspace memory persistence over kexec]&lt;br /&gt;
 * [https://lpc.events/event/18/contributions/1812/ Checkpoint/Restore In eBPF (CRIB)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oxford e-Research Centre ==&lt;br /&gt;
[[Image:Oerc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 29, 2024, Oxford, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://oerc.ox.ac.uk/events/towards-efficient-end-to-end-encryption-for-container-checkpointing-systems/ Towards Efficient End-to-End Encryption for Container Checkpointing Systems]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CloudNativeSecurityCon North America 2024 ==&lt;br /&gt;
[[Image:CloudNativeSecurityCon.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 27, 2024, Seattle, Washington'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1dCVs End-to-End Encryption for Container Checkpointing in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://cloudnativesecurityconna24.sched.com/event/1dCUF/csi-forensics-unraveling-kubernetes-crime-scenes-alberto-pellitteri-stefano-chierici-sysdig CSI Forensics: Unraveling Kubernetes Crime Scenes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit North America 2024 ==&lt;br /&gt;
[[Image:oss-na.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 17, 2024, Seattle, Washington'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1aPu9 Investigating Checkpoint and Restore for GPU-Accelerated Containers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NVIDIA GTC 2024 ==&lt;br /&gt;
[[Image:nvidia-gtc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 21, 2024, San Jose, CA'''&lt;br /&gt;
&lt;br /&gt;
[https://www.nvidia.com/gtc/posters/#/session/1705106137731001cNAN Achieving K8S and Public Cloud Operational Efficiency using a New Checkpoint/Restart Feature for GPUs]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2024 ==&lt;br /&gt;
[[Image:Kubecon.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 22, 2024, Paris, France'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1YeP3 The Party Must Go on - Resume Pods After Spot Instance Shut Down]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1YeT4 Enabling Coordinated Checkpointing for Distributed HPC Applications]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2024 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 3, 2024, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2024/schedule/event/fosdem-2024-3454-zeroing-and-the-semantic-gap-between-host-and-guest/ Zeroing and the semantic gap between host and guest]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2024/schedule/event/fosdem-2024-1855-forensic-container-checkpointing-and-analysis/ Forensic container checkpointing and analysis]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2023 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''13 Nov 2023, [https://lpc.events/event/17/sessions/162/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/17/contributions/1572/ Introducing PAGEMAP_SCAN IOCTL for Windows syscalls translation and CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/17/contributions/1570/ Fuse mounts recovery and Checkpoint/Restore]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/17/contributions/1568/ Protecting Sensitive Data in Container Checkpoints]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit Europe 2023 ==&lt;br /&gt;
[[Image:Osseu.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Sept 20, 2023, Bilbao, Spain'''&lt;br /&gt;
&lt;br /&gt;
[https://osseu2023.sched.com/event/1OGi9/digital-forensics-with-container-checkpointing-daniel-simionato-javier-martinez-sysdig Digital Forensics with Container Checkpointing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GopherCon India 2023 ==&lt;br /&gt;
[[Image:Gopher-india.jpg|left|50px|link=https://gopherconindia.org/]]&lt;br /&gt;
&lt;br /&gt;
'''Sept 9, 2023, Pune, India'''&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=UGQgcIz9xGc Container checkpoints with Go and CRIU]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LSDS Seminar ==&lt;br /&gt;
[[Image:Lsds-logo.jpg|left|200px|link=https://lsds.doc.ic.ac.uk/]]&lt;br /&gt;
&lt;br /&gt;
'''March 9, 2023, Imperial College London'''&lt;br /&gt;
&lt;br /&gt;
[https://lsds.doc.ic.ac.uk/content/transparent-container-checkpointing-and-rollback-recovery-kubernetes-open-challenges-and Transparent Container Checkpointing and Rollback-Recovery with Kubernetes: Open Challenges and Research Directions]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2023 ==&lt;br /&gt;
[[Image:Devconf17.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''June 16, 2023'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1MYjk Forensic Analysis of Container Checkpoints]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2023 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 4, 2023, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2023/schedule/event/container_kubernetes_criu/ Kubernetes and Checkpoint/Restore]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2022 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''14 Sep 2022, [https://lpc.events/event/16/sessions/136/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/16/contributions/1241/ Restoring process trees with child-sub-reapers, nested pid-namespaces and inherit-only resources]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/16/contributions/1242/ Unprivileged CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/16/contributions/1243/ Bringing up FUSE mounts C/R support]&lt;br /&gt;
&lt;br /&gt;
== stackconf 2022 ==&lt;br /&gt;
[[Image:stackconf.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Jul 19, Berlin&lt;br /&gt;
&lt;br /&gt;
[https://stackconf.eu/talks/kubernetes-and-checkpoint-restore/ Kubernetes and Checkpoint/Restore]&lt;br /&gt;
&lt;br /&gt;
== KubeCon + CloudNativeCon North America 2021 ==&lt;br /&gt;
[[Image:kubecon-2021.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 11-15, Los Angeles, California&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/BXVyszsbYmg Container Checkpoint/Restore at Scale for Fast Pod Startup Time]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== X.Org Developer Conference 2021 ==&lt;br /&gt;
&lt;br /&gt;
'''September 15, [https://youtu.be/uTZISTjqy9Q online on the wider Internet]&lt;br /&gt;
&lt;br /&gt;
[https://indico.freedesktop.org/event/1/contributions/18/ Fast Checkpoint Restore for AMD GPUs with CRIU]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2021 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''20 Sep 2021, [https://linuxplumbersconf.org/event/11/sessions/101/#20210920 Containers and Checkpoint/Restore Microconference] ([https://www.youtube.com/watch?v=SKyxugj8rxE video recording])&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/11/contributions/891/ Fast Checkpoint Restore for GPUs]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/11/contributions/923/ Mount-v2 CRIU migration engine: status update]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/11/contributions/924/ Alternative ways to extract information about processes]&lt;br /&gt;
&lt;br /&gt;
== Container Plumbing Days 2021 ==&lt;br /&gt;
[[Image:Container_plumbing_days.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''March 09, 2021, virtual'''&lt;br /&gt;
&lt;br /&gt;
[https://containerplumbing.org/sessions/2021/containerm.html Container Migration News]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2021 ==&lt;br /&gt;
[[Image:Devconf17.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''February 19, 2021, virtual'''&lt;br /&gt;
&lt;br /&gt;
[https://devconfcz2021.sched.com/event/gmId/container-live-migration Container Live Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit Europe 2020 ==&lt;br /&gt;
[[Image:Osseu.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 26, 2020, Virtual'''&lt;br /&gt;
&lt;br /&gt;
[https://osseu2020.sched.com/event/eCDH/container-live-migration-adrian-reber-red-hat Container Live Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2020 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 24-28, [https://linuxplumbersconf.org/event/7/ online on the wider Internet]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/641/ Fast checkpointing with criu-image-streamer]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/642/ FastFreeze: Unprivileged checkpoint/restore for containerized applications]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/640/ CRIU mounts migration: problems and solutions]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/643/ Checkpoint-restoring containers with Docker inside]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Phoronix news ==&lt;br /&gt;
[[Image:phoronix.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 4, 2020, online'''&lt;br /&gt;
&lt;br /&gt;
[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Linux-5.9-Checkpoint-Restore Checkpoint/Restore Of Unprivileged Processes Sent In For Linux 5.9]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevOops 2020 ==&lt;br /&gt;
[[Image:Devoops.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''July 10, 2020, online'''&lt;br /&gt;
&lt;br /&gt;
[https://devoops-moscow.ru/en/2020/msk/talks/2eyl2ebmmix5ovx9imqhu9/ Container live migration with Podman and CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenShift Twitch 2020 ==&lt;br /&gt;
[[Image:Openshift.jpg|left|50px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 20, 2020, online'''&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=-7DgNxyuz_o Container Migration and CRIU Details]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2020 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Feburary 1, 2020, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2020/schedule/event/containers_live_migration/ Container Live Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Rppt]] 19:22, 28 February 2020‎ (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2019 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''September 9-11, Lisbon, Portugal'''&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/508/ Update on Task Migration at Google Using CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/472/ CRIU and the PID dance]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/513/ CRIU: Reworking vDSO proxification, syscall restart]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/478/ Secure Image-less Container Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin]] 14:05, 23 Aug 2019 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tübix 2019 ==&lt;br /&gt;
[[Image:tuex.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Jul 06, 2019, Tübingen, Germany'''&lt;br /&gt;
&lt;br /&gt;
Adrian Reber [https://www.tuebix.org/2019/programm/adrian-reber-container-live-migration/ Container Live Migration]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Google Summer of Code 2019 ==&lt;br /&gt;
[[Image:gsoc.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Mar-Sep 2019'''&lt;br /&gt;
&lt;br /&gt;
[https://summerofcode.withgoogle.com/organizations/6333591376625664/ Google Summer of Code]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2018 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Nov 13-15 , 2018, Vancouver, BC, Canada'''&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/202/ Time Namespaces]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/207/ Another year with CRIU: News from the developers]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/205/ News from academia: FatELF, RDMA and CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/135/ Remote page faults over RDMA]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/209/ Task Migration at Google Using CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/210/ Securely Migrating Untrusted Workloads with CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/69/ Task Migration at Scale Using CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Radostin]] 14:05, 18 Nov 2018 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit Europe 2018 ==&lt;br /&gt;
[[Image:Osseu17.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 24, 2018, Edinburgh, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://osseu18.sched.com/event/FxYI/to-kill-or-to-checkpoint-that-is-the-question-mike-rapoport-ibm-adrian-reber-red-hat To Kill, or to Checkpoint - That is the Question]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 09:46, 29 September 2018 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Serverless meetup, Moscow ==&lt;br /&gt;
[[Image:Meetup.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 18, 2018, Moscow'''&lt;br /&gt;
&lt;br /&gt;
[https://www.meetup.com/ru-RU/moscow-serverless/events/255386528/ Задержки при вызове serverless функций: как формируются, на что влияют и как ими управлять], Владимир Порохов, Swifty Cloud&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:55, 17 October 2018 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2018 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Feburary 4, 2018, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2018/schedule/event/containers_containing_memory/ Containers devroom]&lt;br /&gt;
* Containing container memory -- Mike Rapoport&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Andrey Vagin]] 22:48, 31 Jan 2018 (PST) &lt;br /&gt;
&lt;br /&gt;
== Open Source Summit EU 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Osseu17.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 23, 2017, Prague, Czech Republic'''&lt;br /&gt;
&lt;br /&gt;
Mike Rapoport and Adrian Reber [http://sched.co/BxIG will talk about live migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 12:00, 23 Aug 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SECR 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Secr17logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 20, 2017, St. Petersburg, Russia'''&lt;br /&gt;
&lt;br /&gt;
Pavel Begunkov will talk about [http://2017.secr.ru/lang/en/program/submitted-presentations/checkpointrestore-of-file-locks-from-userspace-in-linux file locks] checkpoint and restore.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 13:30, 12 Sep 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit NA 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:OSS_na_white_0.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Sep 11, 2017, Los Angeles, USA'''&lt;br /&gt;
&lt;br /&gt;
Michael Holzheu [http://sched.co/BDpJ will talk] about CRIU on IBM mainframes.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 14:00, 29 Jun 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2017 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Sep 13-15, 2017, Los Angeles, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/2017/ocw/events/LPC2017/tracks/637 Checkpoint-Restore microconf]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 18:20, 9 Aug 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Systor 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Systor_2017.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''May 22-24, 2017, Haifa, Israel'''&lt;br /&gt;
&lt;br /&gt;
[https://systor17posters.hotcrp.com/paper/8?cap=08aenKqSiwS9bA Accepted paper] about post-copy live migration from Mike Rapoport and Joel Nider&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 15:40, 21 Apr 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SCALE 15x ==&lt;br /&gt;
&lt;br /&gt;
[[Image:scale 15x logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 2-5, 2017, Pasadena, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
Kir Kolyshkin talked about some uncommon ways to use CRIU. [https://www.youtube.com/watch?v=7PKMctKf2JQ&amp;amp;t=18058 Video recording].&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 20:57, 13 February 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2017 ==&lt;br /&gt;
[[Image:Devconf17.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''January 27-29, 2017, Brno, Czech Republic'''&lt;br /&gt;
&lt;br /&gt;
[https://devconf.cz/schedule.html Decreasing container downtime during migration] by Adrian Reber. (the devconf site is not URL-friendly these days, go to Day-3 tab and check 11AM talks)&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 9:20, 12 Jan 2016 (MSG)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2d1o podcast (rus) ==&lt;br /&gt;
'''Dec 22, 2016, On-Air'''&lt;br /&gt;
&lt;br /&gt;
[https://www.2d1o.ru/episodes/s01e03.html 2d1o podcast] invited Pavel Emelyanov to talk about Live migration (of Docker containers).&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:00, 9 Jan 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Middleware 2016 ==&lt;br /&gt;
'''Dec 12-16, 2016, Trento, Italy'''&lt;br /&gt;
&lt;br /&gt;
Rodrigo Bruno gave a talk about Live Migrating JVM workloads using CRIU. Search for 'ALMA' on the [http://2016.middleware-conference.org/program/overall/ schedule page] :)&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 15:00, 19 Dec 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Piter ==&lt;br /&gt;
[[Image:Linuxpiter.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Nov 11-12, 2016, St. Petersburg, Russia'''&lt;br /&gt;
&lt;br /&gt;
Tycho Andersen will talk about [http://www.it-events.com/ru/events/6997#tabs-programm live migration in LXD]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:30, 12 Oct 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2016 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Nov 2-4, 2016, Santa Fe, NM, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://wiki.linuxplumbersconf.org/2016:checkpoint-restart Checkpoint-Restore micro-conference] within the [http://www.linuxplumbersconf.org/2016/ bigger event]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 21:50, 25 Apr 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenStack summit 2016 ==&lt;br /&gt;
[[Image:OpenStack_Summit.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 25-28, 2016, Barcelona, Spain'''&lt;br /&gt;
&lt;br /&gt;
Phil Estes talks about [https://www.openstack.org/summit/barcelona-2016/summit-schedule/events/15091/live-container-migration-on-openstack live container migration in OpenStack]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 13:00, 25 Oct 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux kernel meetup in Tel-Aviv ==&lt;br /&gt;
&lt;br /&gt;
'''July 12, 2016, Tel-Aviv Israel'''&lt;br /&gt;
&lt;br /&gt;
Mike Rapoport will deliver [http://www.meetup.com/Tel-Aviv-Yafo-Linux-Kernel-Meetup/events/232058698/?gj=te1&amp;amp;rv=te1 a talk about UserfaultFD and lazy migration].&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 12:50, 24 Jun 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSC'16 ==&lt;br /&gt;
[[Image:Oscfinal.png|left|100px|link=]]&lt;br /&gt;
'''June 22, 2016, Nürnberg, Germany'''&lt;br /&gt;
&lt;br /&gt;
Takashi Iwai [https://media.ccc.de/v/896-exploring-criu Exploring CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 16:15, 27 Jun 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USENIX ATC'16 ==&lt;br /&gt;
[[Image:Usenix-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 22-24, 2016, Denver, CO, USA'''&lt;br /&gt;
&lt;br /&gt;
Sanidhya Kashyap will present [https://www.usenix.org/conference/atc16/technical-sessions/presentation/kashyap KuP] -- an instant OS updater using CRIU&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:30, 25 Apr 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black belt tech @ DockerCon 2016 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Dockercon16.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 19-21, 2016, Seattle, WA, USA'''&lt;br /&gt;
&lt;br /&gt;
Ross Boucher will talk about [https://blog.docker.com/2016/04/black-belt-talks-dockercon-2016/ Cloning running services with Docker and CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 14:30, 13 Apr 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tuebingen 2016 ==&lt;br /&gt;
'''Jun 11, 2016, Tübingen, Germany'''&lt;br /&gt;
&lt;br /&gt;
Adrian Reber [http://www.tuebix.org/2016/programm/adrian-reber-container-migration-using-criu-and-lxc/ will presend] the [[Userfaultfd]] and lazy migration.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 14:15, 7 Jun 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Systor 2016 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Systor2016.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Jun 6-8, 2016, Haifa, Israel'''&lt;br /&gt;
&lt;br /&gt;
[http://www.systor.org/2016/accepted.html Accepted paper] about containers live migration from Mike Rapoport&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 20:15, 6 May 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2016 ==&lt;br /&gt;
[[Image:Devconf.cz-logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 5, 2016, Brno, Czech Republic'''&lt;br /&gt;
&lt;br /&gt;
[https://devconfcz2016.sched.org/event/5lzL/live-migrating-a-container-pros-cons-and-gotchas Live migrating a container: pros, cons and gotchas] by Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 9:20, 12 Jan 2016 (MSG)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2016 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''January 30, 2016, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://www.fosdem.org/2016/schedule/track/containers_and_process_isolation/ Containers devroom]&lt;br /&gt;
* Using p.haul to migrate containers -- Tycho Andersen&lt;br /&gt;
* New horizons for the CRIU project -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 00:45, 19 December 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxMeetup Nizhny Novgorod 2016 ==&lt;br /&gt;
'''January 22, 2016, Nizhny Novgorod, Russia'''&lt;br /&gt;
&lt;br /&gt;
[https://mdday.timepad.ru/event/279578/ И овцы целы, и волки сыты: как перезапустить проблемное приложение и одновременно отладить его] -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 13:00, 29 December 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Piter 2015 ==&lt;br /&gt;
[[Image:Tux.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 21, 2015, Saint Petersburg, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://www.it-sobytie.ru/events/4868 Живая миграция контейнеров: плюсы, минусы, подводные камни] -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 07:24, 26 August 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DockerCon 2015 ==&lt;br /&gt;
[[Image:DockerCon15.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 16-17, 2015, Barcelona, Spain'''&lt;br /&gt;
&lt;br /&gt;
Talk about live migration of containers -- [http://europe-2015.dockercon.com/speakers Pavel Emelyanov]&lt;br /&gt;
&lt;br /&gt;
-- [[User:Xemul|Xemul]] 15:00, 1 October 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ContainerDays NYC 2015 ==&lt;br /&gt;
[[Image:2015-nyc-logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 30, 2015, New York, U.S.A.'''&lt;br /&gt;
&lt;br /&gt;
[http://dynamicinfradays.org/events/2015-nyc/programme.html#criu CRIU: Time and Space Travel for Linux Containers] -- by Kirill Kolyshkin&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 00:43, 14 September 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Двенадцатая конференция разработчиков свободных программ ==&lt;br /&gt;
[[Image:Altlinux-logo.gif|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 16-18, 2015, Kaluga, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://www.altlinux.ru/news/archive/2015/08/item/743/ Живая миграция контейнеров: плюсы, минусы, подводные камни] --  Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 08:17, 1 October 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenVZ meetup ==&lt;br /&gt;
[[Image:Yandex.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''September 19, 2015, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[https://events.yandex.ru/events/yagosti/19-september-2015-linux/ Встреча разработчиков Linux-контейнеров]&lt;br /&gt;
&lt;br /&gt;
* Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов&lt;br /&gt;
* CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 06:19, 28 August 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers 2015 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 19-21, 2015, Seattle, WA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://wiki.linuxplumbersconf.org/2015:ckptrestart C/R miniconf]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] ([[User talk:Xemul|talk]]) 16:30, 9 February 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevZen podcast ==&lt;br /&gt;
[[Image:Devzen.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''July 17, 2015, on air'''&lt;br /&gt;
&lt;br /&gt;
Pavel Emelyanov and Kirill Gorcunov will talk about CRIU.&lt;br /&gt;
&lt;br /&gt;
[http://devzen.ru/ DevZen podcast]&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 09:10, 3 July 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LVEE 2015 ==&lt;br /&gt;
[[File:Logo_lvee_2015.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''25-28 June 2015, Grodno, Belarus'''&lt;br /&gt;
&lt;br /&gt;
[http://lvee.org/ru/conference_registrations/LVEE%202015 О том как маленький open-source проект меняет жизнь большой компании]&lt;br /&gt;
&lt;br /&gt;
Pavel Emelyanov will talk about CRIU community (in Russian).&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 08:08, 1 July 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OS Day 2015 ==&lt;br /&gt;
[[File:Os-day-logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''9-10 June 2015, Kazan, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://osday.org/emelyanov.html#speaker Консервирование процессов в домашних условиях]&lt;br /&gt;
&lt;br /&gt;
Pavel Emelyanov will talk about CRIU's recent achievements and use-cases (in Russian).&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] (19 May 2015 (MSK))&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ContainerDays 2015 ==&lt;br /&gt;
[[File:Logo-ContainerDays.png|left|100px|link=]]&lt;br /&gt;
'''June 5-6 2015, Boston, MA, USA'''&lt;br /&gt;
&lt;br /&gt;
Kir Kolyshkin from OpenVZ project will give a talk [http://dynamicinfradays.org/events/2015-boston/programme.html#nproblems &amp;quot;N Problems of Linux Containers...and Some Solutions&amp;quot;] mentioning CRIU in it.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] (4 Jun 2015)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevOps Дефлопе ==&lt;br /&gt;
[[File:Deflope.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 2015, On Air'''&lt;br /&gt;
&lt;br /&gt;
[http://devopsdeflope.ru/ DevOps Дефлопе - Русскоязычный подкаст о DevOps]&lt;br /&gt;
&lt;br /&gt;
Andrew Vagin talks about integration CRIU and Docker and how checkpointing of processes can help in DevOps (in Russian).&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 08:26, 14 May 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FLOSS Weekly 2015 ==&lt;br /&gt;
[[Image:Floss-weekly.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 29, 2015, 8:30am PDT (15:30 GMT), live on air'''&lt;br /&gt;
&lt;br /&gt;
[http://twit.tv/show/floss-weekly/334 Episode about CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 09:35, 8 April 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2015 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2015, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2015/schedule/event/livemigration/ Live migration for containers is around the corner] -- Andrew Vagin&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Andrey Vagin]] 10:20, 13 January 2015 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Docker Meet-Up ==&lt;br /&gt;
&lt;br /&gt;
'''October 29, 2014, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://www.meetup.com/DevOps-Moscow-in-Russian/events/214753582/ Talk about CRIU and Docker] -- Pavel Emelyanov&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Pavel Emelyanov]] 19:30, 23 Oct 2014 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
'''October 15-17, 2014, Dusseldorf, Germany'''&lt;br /&gt;
&lt;br /&gt;
[http://www.linuxplumbersconf.org/2014/an-in-depth-look-containers-microconference/ CRIU discussion at Containers mini-conf ] -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] ([[User talk:Xemul|talk]]) 11:35, 23 October 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Docker Meetup ==&lt;br /&gt;
&lt;br /&gt;
'''September 17, 2014, Mountain View, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://www.meetup.com/Docker-Mountain-View/events/204603722/ Docker MV Meetup #3 at Google] -- Saied Kazemi [https://speakerdeck.com/saied/experimental-docker-checkpoint-and-restore-with-criu talked] about Docker + CRIU&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] ([[User talk:Xemul|talk]]) 03:26, 19 September 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open WG Talk ==&lt;br /&gt;
[[Image:Content_wg_talk.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Friday, July 18, 2014, Minsk, Belarus'''&lt;br /&gt;
&lt;br /&gt;
[https://www.eventbrite.com/e/open-wg-talk-2-linux-container-virtualization-tickets-12189971533?fb_action_ids=705517169505083&amp;amp;fb_action_types=og.likes&amp;amp;fb_source=feed_opengraph&amp;amp;action_object_map=%7B%22705517169505083%22%3A753726634669877%7D&amp;amp;action_type_map=%7B%22705517169505083%22%3A%22og.likes%22%7D&amp;amp;action_ref_map=%5B%5D Open WG Talk #2 (Linux container virtualization)] -- Andrey Vagin&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 10:58, 7 July 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Texas Linux Fest 2014 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Txlf2014.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 13-14, 2014, Austin, Texas, US'''&lt;br /&gt;
&lt;br /&gt;
[http://texaslinuxfest.org/content/criu-time-and-space-travel-service-linux-apps CRIU: time and space travel service for Linux apps] -- Kir Kolyshkin&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 11:52, 6 June 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Docker Meetup ==&lt;br /&gt;
&lt;br /&gt;
'''March 26, 2014, Tel Aviv, Israel'''&lt;br /&gt;
&lt;br /&gt;
[http://www.meetup.com/Docker-Tel-Aviv/ Linux Containers and the Future Cloud] -- Rami Rosen&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 12:50, 24 March 2014 (EDT)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Haifux (LUG) ==&lt;br /&gt;
[[Image:Haifux.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 17, 2014, Haifa, Israel'''&lt;br /&gt;
&lt;br /&gt;
[http://haifux.org/lectures/320/ Linux Containers and the Future Cloud] -- Rami Rosen&lt;br /&gt;
&lt;br /&gt;
--[[User:Rami|Rami]] 03:23, 23 Feb 2014 (PST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SCALE 12x talk ==&lt;br /&gt;
[[Image:Scale_12x_dodecahedron.png|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''Feb 23, 2014, Los Angeles'''&lt;br /&gt;
&lt;br /&gt;
[http://www.socallinuxexpo.org/scale12x/presentations/seven-problems-linux-containers Seven problems of Linux Containers] -- Kir Kolyshkin&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 13:00, 22 Feb 2014 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Moscow Virtualization Meetup ==&lt;br /&gt;
&lt;br /&gt;
'''15 Feb, 2014, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://tech.yandex.ru/events/yagosti/msk-feb-2014/talks/1655/ CRIU 1.0 What is next?]&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 05:55, 30 January 2014 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hangout-on-Air ==&lt;br /&gt;
[[Image:Hoa.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''18:00, 7 Feb, 2014, Online'''&lt;br /&gt;
&lt;br /&gt;
[https://plus.google.com/events/cfj8rg61m1uj6ns3pf6dd8f8me0 CRIU hopes and fears]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 10:00, 30 Jan 2014 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Summit ==&lt;br /&gt;
[[Image:Logo_lks_black.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 23-25, 2013, Edinburgh, UK'''&lt;br /&gt;
&lt;br /&gt;
A quick talk about CRIU project status. -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 10:00, 25 Oct 2013 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxCon Europe ==&lt;br /&gt;
[[Image:LinuxCon-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 21-23, 2013, Edinburgh, UK'''&lt;br /&gt;
&lt;br /&gt;
[http://linuxconcloudopeneu2013.sched.org/event/e0b06ed074144b5bcdb9a0b2791ff2cb?iframe=no&amp;amp;w=900&amp;amp;sidebar=yes&amp;amp;bg=no#.UhTeVGJFynw CRIU: Time and Space Travel Service for Linux Applications -- Pavel Emelyanov ]&lt;br /&gt;
&lt;br /&gt;
Slides [https://events.linuxfoundation.org/sites/events/files/slides/criu-3.11.pdf &amp;quot;CRIU:Time and Space Travel Service for Linux Applications&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 19:30, 21 Aug 2013 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxCon North America ==&lt;br /&gt;
[[Image:LinuxCon-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''September 16-18, 2013, New Orleans, LA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://linuxconcloudopenna2013.sched.org/event/91c1b43ac4c93aeafc27c91ccaed7bc5#.Ue0JsmJFwrQ CRIU: Time and Space Travel Service for Linux Applications -- Pavel Emelyanov ]&lt;br /&gt;
&lt;br /&gt;
Slides [https://events.linuxfoundation.org/sites/events/files/slides/criu-3.11.pdf &amp;quot;CRIU:Time and Space Travel Service for Linux Applications&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 14:30, 22 July 2013 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRIU talk at LVEE ==&lt;br /&gt;
[[Image:LVEE 2013.png‎|left|100px|link=http://lvee.org]]&lt;br /&gt;
'''27-30 June, 2013. Grodno, Belarus'''&lt;br /&gt;
&lt;br /&gt;
Linux Userspace Checkpoint/Restore: From Dreams to Reality - Andrey Vagin&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 06:05, 6 June 2013 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fedora Virtualization Day Moscow 2013==&lt;br /&gt;
[[Image:russian_fedora.png|left|100px|link=http://russianfedora.ru/]]&lt;br /&gt;
'''1 June, 2013. Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://russianfedora.ru/content/%D0%98%D1%82%D0%BE%D0%B3%D0%B8-fedora-virtualization-day CRIU: Checkpoint and Restore (mostly) In Userspace - Andrey Vagin] [http://mirror.yandex.ru/fedora/russianfedora/video/FedoraVirtualizationDay/04-Wagin-Part2.webm video]&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 14:03, 5 June 2013 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRIU talk at SCALE11x ==&lt;br /&gt;
[[Image:Scale-11x.png|100px|left|link=http://www.socallinuxexpo.org/scale11x]]&lt;br /&gt;
'''22-24 February, 2013. Los Angeles, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://www.socallinuxexpo.org/scale11x/presentations/checkpoint-restore-live-migration-and-beyond Checkpoint, Restore, Live Migration and Beyond - Kir Kolyshkin]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 12:10, 23 January 2013 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRIU talk at linux.conf.au ==&lt;br /&gt;
[[Image:Linux-conf-au-2013.jpg|left|link=https://lca2013.linux.org.au/]]&lt;br /&gt;
'''28 January to 2 February, 2013. Canberra, Australia'''&lt;br /&gt;
&lt;br /&gt;
[http://conf.linux.org.au/schedule/30116/view_talk?day=thursday Checkpoint and Restore: Are We There Yet? - Pavel Emelyanov]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] 12:51, 8 October 2012 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2013 ==&lt;br /&gt;
[[Image:Fosdem-2013.png|left|100px|link=https://fosdem.org/2013/]]&lt;br /&gt;
'''2 and 3 February, 2013. Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2013/schedule/event/criu_ckeckpoint_restore/ CRIU: Checkpoint and Restore (mostly) In Userspace - Andrey Vagin]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 21:00, 22 January 2013 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxCon Europe 2012 ==&lt;br /&gt;
[[Image:LinuxCon-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 5-9, 2012, Barcelona, Spain'''&lt;br /&gt;
&lt;br /&gt;
[http://linuxconeurope2012.sched.org/event/bd32207c146c75dd5cbf165006d47e7b Checkpoint and Restore: Are We There Yet? - Pavel Emelyanov]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] 12:51, 8 October 2012 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== YAC 2012 ==&lt;br /&gt;
[[Image:yac_logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''1 Oct 2012, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[https://events.yandex.ru/events/yac/2012?openTalkDescription=35-3 CRIU: more than a live migration (incl. slides and video)]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] 12:25, 8 October 2012 (EDT)&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5877</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5877"/>
		<updated>2026-03-31T11:34:41Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* Kubernetes Operator for Automated Checkpointing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Kubernetes Operator for Automated Checkpointing ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extend the Checkpoint/Restore Operator with support for automated policy-based checkpointing.&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/checkpoint-restore/checkpoint-restore-operator Checkpoint/Restore Operator] for Kubernetes currently supports only policies and parameters that limit the number of checkpoints. This project aims to extend the current support with automated policy-based checkpointing, allowing users to define triggers for checkpoint creation, such as time-based schedules, resource thresholds (CPU, memory, I/O usage), Kubernetes events (node drain, pod eviction, preemption), and application-level signals or annotations.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Forensic Checkpointing Framework for Kubernetes ===&lt;br /&gt;
&lt;br /&gt;
Kubernetes provides a highly dynamic and ephemeral environment where workloads can start and disappear very quickly and are continuously being rescheduled across different nodes in the cluster.&lt;br /&gt;
One of the key challenges with forensic investigations in Kubernetes is capturing and preserving the evidence during security incidents. This project aims to address this problem by developing a framework for efficiently capturing and preserving the state of all running applications in a container at a specific point in time, along with the associated container configurations and metadata. These artifacts would allow investigators to accurately reconstruct the events, create a timeline, and analyze security incidents without impacting the running cluster. This is an important step towards enabling forensic readiness for Kubernetes, where cluster administrators proactively ensure the environments are prepared to collect and preserve evidence before a security incident occurs.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpointctl&lt;br /&gt;
* [https://fosdem.org/2026/events/attachments/F9RANH-forensic-snapshots-in-kubernetes/slides/267371/fosdem_2_4dh73ni.pdf Investigating Security Incidents with Forensic Snapshots in Kubernetes]&lt;br /&gt;
* [https://www.cncf.io/reports/cloud-native-security-whitepaper/ Cloud Native Security Whitepaper]&lt;br /&gt;
* [https://media.defense.gov/2022/Aug/29/2003066362/-1/-1/0/CTR_KUBERNETES_HARDENING_GUIDANCE_1.2_20220829.PDF Kubernetes Hardening Guide]&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Lorena Goldoni &amp;lt;lory.goldoni@gmail.com&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enabling Checkpoint/Restore of Rootless Containers ===&lt;br /&gt;
&lt;br /&gt;
[https://rootlesscontaine.rs/ Rootless containers] are containers that can be created, run, and managed by unprivileged users. Container engines such as Podman natively support running containers in a rootless mode to improve security and usability. While checkpoint/restore functionality is already available for rootful containers and unprivileged checkpointing is possible with the &amp;lt;code&amp;gt;CAP_CHECKPOINT_RESTORE&amp;lt;/code&amp;gt; capability, container engines do not yet support native checkpointing of containers running in rootless mode. This project aims to explore and address the remaining challenges required to enable unprivileged checkpoint/restore for rootless containers.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/1930&lt;br /&gt;
* https://github.com/torvalds/linux/commit/124ea650d3072b005457faed69909221c2905a1f&lt;br /&gt;
* https://src.fedoraproject.org/rpms/criu/pull-request/10#request_diff&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for SCM_CREDENTIALS / SCM_PIDFD and friends ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support for SCM_CREDENTIALS / SCM_PIDFD&lt;br /&gt;
&lt;br /&gt;
SCM_CREDENTIALS and SCM_PIDFD are types of SCM (Socket-level Control Messages). They play a crucial role&lt;br /&gt;
in systemd and many other user space applications. This project is about adding support for these&lt;br /&gt;
SCMs to be properly saved and restored back with CRIU. There is an existing code in OpenVZ CRIU fork,&lt;br /&gt;
see [1] and [2]. Goal would be first of all to properly port this code, cover with extensive tests and&lt;br /&gt;
ensure that SCM_PIDFD / SO_PEERPIDFD are handled correctly. Also we expect to cover things like&lt;br /&gt;
SO_PASSRIGHTS and SO_PASSPIDFD.&lt;br /&gt;
&lt;br /&gt;
There is some extra source of complexity here pidfds can be &amp;quot;stale&amp;quot; (see PIDFD_STALE in Linux kernel)&lt;br /&gt;
and we need to ensure that we properly cover those cases.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [1] openvz-criu https://bitbucket.org/openvz/criu.ovz/history-node/918653a0a343194385592d7b50b5bd7a8fbe1cc1/criu/sk-unix.c?at=hci-dev&lt;br /&gt;
* [2] openvz-criu https://bitbucket.org/openvz/criu.ovz/history-node/918653a0a343194385592d7b50b5bd7a8fbe1cc1/criu/sk-queue.c?at=hci-dev&lt;br /&gt;
* [3] Linux kernel https://github.com/torvalds/linux/commit/5e2ff6704a275be009be8979af17c52361b79b89&lt;br /&gt;
* [4] Linux kernel https://github.com/torvalds/linux/commit/c679d17d3f2d895b34e660673141ad250889831f&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate / advanced&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Mentors: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Integrate with Live Update Orchestrator (LUO) ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Integrate with Live Update Orchestrator (LUO)&lt;br /&gt;
&lt;br /&gt;
Live Update Orchestrator (LUO) is a framework for Linux kernel&lt;br /&gt;
live updates (via kexec). Idea behind it is to provide kernel&lt;br /&gt;
and user space API to save specific system resources across&lt;br /&gt;
kexec reboot.&lt;br /&gt;
&lt;br /&gt;
This research project explores how CRIU can be integrated with LUO.&lt;br /&gt;
For example, if a user is running memcached on a node, the current&lt;br /&gt;
approach would require a full CRIU dump, then saving the entire&lt;br /&gt;
process memory to disk, then followed by restoring it after the&lt;br /&gt;
kernel live update.&lt;br /&gt;
&lt;br /&gt;
Instead, CRIU could be extended to leverage the LUO API. When instructed,&lt;br /&gt;
it could preserve selected memory regions directly across the kexec reboot,&lt;br /&gt;
avoiding a full disk dump and significantly accelerating the restore process&lt;br /&gt;
after the kernel update.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [1] LUO kernel documentation https://docs.kernel.org/core-api/liveupdate.html&lt;br /&gt;
* [2] LUO memfd doc https://docs.kernel.org/mm/memfd_preservation.html&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate / advanced&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
* Mentors: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optimize COW memory dumping ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Optimize COW memory dumping&lt;br /&gt;
&lt;br /&gt;
The Linux kernel memory management subsystem is highly optimized not only for performance, but also to minimize unnecessary memory consumption. A key example of this is how the kernel handles private VMAs when user space invokes the fork() system call.&lt;br /&gt;
&lt;br /&gt;
Rather than duplicating the entire VMA tree along with all memory contents, the kernel creates optimized copies of inherited VMAs using the Copy-on-Write (COW) mechanism. When a process writes to a page within a COW-ed VMA, a write page fault occurs, and the kernel creates a private copy of that page before applying the modification. However, if the page is only read, no copying is performed.&lt;br /&gt;
&lt;br /&gt;
This approach significantly improves fork() performance and can dramatically reduce memory usage in many workloads.&lt;br /&gt;
&lt;br /&gt;
In CRIU, when dumping VMAs and their associated memory pages, this COW optimization is not currently taken into account during the dump phase. As a result, for COW-backed VMAs, CRIU may generate multiple copies of identical memory pages in the dump image.&lt;br /&gt;
&lt;br /&gt;
During restore, however, CRIU explicitly handles this situation (see [1] and [2]) and attempts to reconstruct COW relationships inside the kernel. This step is critical: without it, a checkpoint/restore (C/R) cycle could lead to a substantial increase in memory consumption for the same process tree. For example, a workload that originally consumed 500 MiB could expand to 800 MiB after restore, which is clearly unacceptable.&lt;br /&gt;
&lt;br /&gt;
This project aims to improve the dumping algorithm so that it avoids producing multiple unnecessary copies of identical pages belonging to COW-ed VMAs.&lt;br /&gt;
&lt;br /&gt;
The project requires some understanding of Linux memory management internals and CRIU’s architecture. We strongly encourage GSoC contributors to study references [1] and [2] and experiment with the relevant code paths before applying. We are happy to answer questions and provide guidance along the way.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [1] preparing COW VMAs https://github.com/checkpoint-restore/criu/blob/c180188db036f8ea4c08bfee28cbcdbdd52cdfc3/criu/mem.c#L878&lt;br /&gt;
* [2] private vma content restore cow case https://github.com/checkpoint-restore/criu/blob/c180188db036f8ea4c08bfee28cbcdbdd52cdfc3/criu/mem.c#L1219&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate / advanced&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
* Mentors: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Articles&amp;diff=5876</id>
		<title>Articles</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Articles&amp;diff=5876"/>
		<updated>2026-03-13T13:08:21Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;This is a collection of external articles regarding the CRIU project, sorted by date.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
   NOTE this page is included into [[Main Page]] (look for External articles)&lt;br /&gt;
        so please make sure that Main Page looks good after your edits!&lt;br /&gt;
&lt;br /&gt;
   PLEASE keep the lists sorted by date, newest ones on top.&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
* 2026-02-24, [https://www.usenix.org/conference/fast26/presentation/zeng GPU Checkpoint/Restore Made Fast and Lightweight]&lt;br /&gt;
* 2026-01-21, [https://kubernetes.io/blog/2026/01/21/introducing-checkpoint-restore-wg/ Announcing the Checkpoint/Restore Working Group]&lt;br /&gt;
* 2025-11-17, [https://radostin.io/files/stoyanov-canopie-hpc-2025.pdf Engine-Agnostic Model Hot-Swapping for Cost-Effective LLM Inference]&lt;br /&gt;
* 2025-09-16, [https://www.idt.mdu.se/~aps01/research/2025_Johansson/2025-JSA-Johansson.pdf Checkpointing and State Transfer for Industrial Controller Redundancy]&lt;br /&gt;
* 2025-08-13, [https://www.usenix.org/conference/usenixsecurity25/presentation/li-ao Software Availability Protection in Cyber-Physical Systems]&lt;br /&gt;
* 2025-07-14, [https://arxiv.org/abs/2405.12079 PhoenixOS: Concurrent OS-level GPU Checkpoint and Restore with Validated Speculation]&lt;br /&gt;
* 2025-06-18, [https://is.muni.cz/th/ekn8q/ Improving Checkpoint/Restore Functionality in Kubernetes]&lt;br /&gt;
* 2025-06-17, LWN.net: [https://lwn.net/Articles/1024747/ A parallel path for GPU restore in CRIU]&lt;br /&gt;
* 2025-06-13, [https://doi.org/10.1007/978-3-032-10507-3_3 Kubernetes Scheduling with Checkpoint/Restore: Challenges and Open Problems]&lt;br /&gt;
&amp;lt;!------------------------------------------------&lt;br /&gt;
   This is to cut the rest of it for Main Page,&lt;br /&gt;
   adding the More... link instead.&lt;br /&gt;
   Make sure to move this whole block up from time to time.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;: '''[[Articles|More external articles...]]'''&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
     the below stuff is now shown on the Main Page&lt;br /&gt;
--------------------------------------------------&amp;gt;&lt;br /&gt;
* 2025-06-12, [https://doi.org/10.1109/TNSM.2025.3579051 MOSE: A Novel Orchestration Framework for Stateful Microservice Migration at the Edge]&lt;br /&gt;
* 2025-05-14, [https://doi.org/10.1145/3672608.3707723 Elastic Vertical Memory Management for Container-based Stateful Applications in Kubernetes]&lt;br /&gt;
* 2025-05-02, [https://doi.org/10.1007/s42514-025-00227-0 Practice and Observation: Live Migration for MPI Workload]&lt;br /&gt;
* 2025-04-28, [https://www.usenix.org/conference/nsdi25/presentation/segarra GRANNY: Granular Management of Compute-Intensive Applications in the Cloud]&lt;br /&gt;
* 2025-04-28, [https://ieeexplore.ieee.org/abstract/document/10979504 KubeSPT: Stateful Pod Teleportation for Service Resilience with Live Migration]&lt;br /&gt;
* 2025-04-04, [https://doi.org/10.1109/ICIN64016.2025.10942720 Optimizing Stateful Microservice Migration in Kubernetes with MS2M and Forensic Checkpointing]&lt;br /&gt;
* 2025-03-30, [https://doi.org/10.1145/3676641.3715988 CXLfork: Fast Remote Fork over CXL Fabrics]&lt;br /&gt;
* 2025-02-23, [https://arxiv.org/abs/2502.16631 CRIUgpu: Transparent Checkpointing of GPU-Accelerated Workloads]&lt;br /&gt;
* 2025-02-05, [https://doi.org/10.1007/s00607-025-01447-6 A Comprehensive Performance Evaluation of Container Migration Strategies]&lt;br /&gt;
* 2024-11-21, [https://dl.acm.org/doi/10.1145/3698038.3698510 On-demand and Parallel Checkpoint/Restore for GPU Applications]&lt;br /&gt;
* 2024-11-20, [https://dl.acm.org/doi/10.1145/3698038.3698513 Snapipeline: Accelerating Snapshot Startup for FaaS Containers]&lt;br /&gt;
* 2024-09-06, [https://dl.acm.org/doi/10.1145/3660319.3660330 Live Migration of Multi-Container Kubernetes Pods in Multi-Cluster Serverless Edge Systems]&lt;br /&gt;
* 2024-09-04, [https://dl.acm.org/doi/10.1145/3678015.3680477 Towards Efficient End-to-End Encryption for Container Checkpointing Systems]&lt;br /&gt;
* 2024-09-02, [https://doi.org/10.1016/j.future.2024.107495 CSMD: Container state management for deployment in cloud data centers]&lt;br /&gt;
* 2024-08-21, [https://ieeexplore.ieee.org/abstract/document/10628207 The State of Container Checkpointing with CRIU: A Multi-Case Experience Report]&lt;br /&gt;
* 2024-08-04, [https://dl.acm.org/doi/abs/10.1145/3672197.3673432 Custom Page Fault Handling With eBPF]&lt;br /&gt;
* 2024-08-03, [https://dl.acm.org/doi/10.1145/3663408.3663416 Software-based Live Migration for Containerized RDMA]&lt;br /&gt;
* 2024-07-30, [https://ieeexplore.ieee.org/abstract/document/10606135 Packet Buffering to Minimize Service Downtime and Packet Loss During Redundancy Switchover]&lt;br /&gt;
* 2024-07-30, [https://dl.acm.org/doi/abs/10.1145/3664476.3670895 Don't, Stop, Drop, Pause: Forensics of CONtainer CheckPOINTs (ConPoint)]&lt;br /&gt;
* 2024-07-25, [https://doi.org/10.1186/s13677-024-00687-9 MDB-KCP: persistence framework of in-memory database with CRIU-based container checkpoint in Kubernetes]&lt;br /&gt;
* 2024-07-23, [https://ieeexplore.ieee.org/abstract/document/10631042 Dapper: A Lightweight and Extensible Framework for Live Program State Rewriting]&lt;br /&gt;
* 2024-07-07, [https://ieeexplore.ieee.org/abstract/document/10643902 FastMig: Leveraging FastFreeze to Establish Robust Service Liquidity in Cloud 2.0]&lt;br /&gt;
* 2024-07-02, [https://developer.nvidia.com/blog/checkpointing-cuda-applications-with-criu/ Checkpointing CUDA Applications with CRIU]&lt;br /&gt;
* 2024-06-19, [https://arxiv.org/abs/2406.13856 Kishu: Time-Traveling for Computational Notebooks]&lt;br /&gt;
* 2024-06-09, [https://dl.acm.org/doi/abs/10.1145/3626246.3654752 Demonstration of ElasticNotebook: Migrating Live Computational Notebook States]&lt;br /&gt;
* 2024-05-30, [https://is.muni.cz/th/tadf0/phd-thesis-proposal-digital.pdf In the Container Era: A Coup in Reliable Computing Over Unreliable Infrastructure]&lt;br /&gt;
* 2024-05-20, [https://arxiv.org/abs/2405.12079v1 ParallelGPUOS: A Concurrent OS-level GPU Checkpoint and Restore System using Validated Speculation]&lt;br /&gt;
* 2024-05-09, [https://www.sciencedirect.com/science/article/pii/S1383762124000948 Practicable live container migrations in high performance computing clouds: Diskless, iterative, and connection-persistent]&lt;br /&gt;
* 2024-05-06, [https://ieeexplore.ieee.org/abstract/document/10701375 Workload-Aware Live Migratable Cloud Instance Detector]&lt;br /&gt;
* 2024-05-06, [https://ieeexplore.ieee.org/abstract/document/10707218 Migration of Isolated Application Across Heterogeneous Edge Systems]&lt;br /&gt;
* 2024-04-26, [https://fis.tu-dresden.de/portal/files/53673228/planeta_bearb_pref2b_20240912193924.pdf Fine-grained OS Control over High-performance Networking]&lt;br /&gt;
* 2024-04-22, [https://dl.acm.org/doi/abs/10.1145/3627703.3650085 Just-In-Time Checkpointing: Low Cost Error Recovery from Deep Learning Training Failures]&lt;br /&gt;
* 2024-04-22, [https://dl.acm.org/doi/10.1145/3627703.3629556 Pronghorn: Effective Checkpoint Orchestration for Serverless Hot-Starts]&lt;br /&gt;
* 2024-02-09, [https://ejournal.unitomo.ac.id/index.php/inform/article/view/7498/3738 Forensic Analysis of Podman Container Towards Metasploit Backdoor Using Checkpointctl]&lt;br /&gt;
* 2024-01-29, [https://www.sciencedirect.com/science/article/pii/S0167739X24000190 Prebaking runtime environments to improve the FaaS cold start latency]&lt;br /&gt;
* 2023-11-27, [https://dl.acm.org/doi/abs/10.1145/3590140.3629121 DynaCut: A Framework for Dynamic and Adaptive Program Customization]&lt;br /&gt;
* 2023-11-12, [https://dl.acm.org/doi/10.1145/3624062.3624254 Checkpoint/Restart for CUDA Kernels]&lt;br /&gt;
* 2023-11-10, [https://ieeexplore.ieee.org/abstract/document/10314806 Design, Modeling, and Implementation of Robust Migration of Stateful Edge Microservices]&lt;br /&gt;
* 2023-10-23, [https://dl.acm.org/doi/10.1145/3605181.3626289 Evicting for the greater good: The Case for Reactive Checkpointing in Serverless Computing]&lt;br /&gt;
* 2023-10-01, [https://dl.acm.org/doi/10.14778/3626292.3626296 ElasticNotebook: Enabling Live Migration for Computational Notebooks]&lt;br /&gt;
* 2023-09-25, [https://ieeexplore.ieee.org/abstract/document/10419298 Transparent Fault Tolerance for Stateful Applications in Kubernetes with Checkpoint/Restore]&lt;br /&gt;
* 2023-07-21, [https://vtechworks.lib.vt.edu/items/20cd28e6-1dba-4c21-b221-59f5f345205f CRIU-RTX: Remote Thread eXecution using Checkpoint/Restore in Userspace]&lt;br /&gt;
* 2023-07-10, [https://www.usenix.org/conference/osdi23/presentation/wei-rdma No Provisioned Concurrency: Fast RDMA-codesigned Remote Fork for Serverless Computing]&lt;br /&gt;
* 2023-07-06, [https://ieeexplore.ieee.org/abstract/document/10207336 Microservice Debugging with Checkpoint-Restart]&lt;br /&gt;
* 2023-05-28, [https://ieeexplore.ieee.org/abstract/document/10278877 Processing-Aware Migration Model for Stateful Edge Microservices]&lt;br /&gt;
* 2023-04-20, [https://www.mdpi.com/2504-446X/7/5/286 A Dynamic Checkpoint Interval Decision Algorithm for Live Migration-Based Drone-Recovery System]&lt;br /&gt;
* 2023-03-10, [https://kubernetes.io/blog/2023/03/10/forensic-container-analysis/ Forensic Container Analysis]&lt;br /&gt;
* 2023-01-31, [https://vtechworks.lib.vt.edu/items/ba974ad9-eac9-4306-b3fc-5f0411b89b99 HetMigrate: Secure and Efficient Cross-architecture Process Live Migration]&lt;br /&gt;
* 2023-01-14, [https://arxiv.org/abs/2301.05861 Async-fork: Mitigating Query Latency Spikes Incurred by the Fork-based Snapshot Mechanism from the OS Level]&lt;br /&gt;
* 2023-01-10, [https://ieeexplore.ieee.org/abstract/document/10077919 A Container Pre-copy Migration Method Based on Dirty Page Prediction and Compression]&lt;br /&gt;
* 2022-12-18, [https://doi.org/10.1109/HiPC56025.2022.00023 LDT: Lightweight Dirty Tracking of Memory Pages for x86 Systems]&lt;br /&gt;
* 2022-11-13, [https://dl.acm.org/doi/abs/10.5555/3571885.3572000 Out of hypervisor (OoH): efficient dirty page tracking in userspace using hardware virtualization feature]&lt;br /&gt;
* 2022-08-07, [https://www.sciencedirect.com/science/article/pii/S1084804522001369 iContainer: Consecutive Checkpointing with Rapid Resilience for Immortal Container-based Services]&lt;br /&gt;
* 2022-08-03, [https://ieeexplore.ieee.org/document/9844071 Demonstration of Containerized Central Unit Live Migration in 5G Radio Access Network]&lt;br /&gt;
* 2022-07-11, [https://www.usenix.org/conference/atc22/presentation/zhou-diyu RRC: Responsive Replicated Containers]&lt;br /&gt;
* 2022-05-25, [https://hal.inria.fr/hal-03587358/ Good Shepherds Care For Their Cattle: Seamless Pod Migration in Geo-Distributed Kubernetes]&lt;br /&gt;
* 2022-05-06, [https://doi.org/10.1145/3477314.3507221 An architecture proposal for checkpoint/restore on stateful containers]&lt;br /&gt;
* 2022-04-24, [https://www.ndss-symposium.org/ndss-paper/auto-draft-295/ FitM: Binary-Only Coverage-Guided Fuzzing for Stateful Network Protocols]&lt;br /&gt;
* 2022-03-01, [https://systex22.github.io/papers/systex22-final71.pdf Transparent, Cross-ISA Enclave Offloading]&lt;br /&gt;
* 2022-02-25, [https://dl.acm.org/doi/abs/10.1145/3516807.3516817 Portkey: Hypervisor-Assisted Container Migration in Nested Cloud Environments]&lt;br /&gt;
* 2022-02-16, [https://arxiv.org/abs/2202.07848 Singularity: Planet-Scale, Preemptible and Elastic Scheduling of AI Workloads]&lt;br /&gt;
* 2022-02-08, [https://doi.org/10.48550/arXiv.2202.03643 SNPSFuzzer: A Fast Greybox Fuzzer for Stateful Network Protocols using Snapshots]&lt;br /&gt;
* 2021-12-17, [https://hal.archives-ouvertes.fr/hal-03487607/document Standard-compliant parallel SystemC simulation of loosely-timed transaction level models: From baremetal to Linux-based applications support]&lt;br /&gt;
* 2021-07-14, [https://www.usenix.org/conference/atc21/presentation/planeta MigrOS: Transparent Live-Migration Support for Containerised RDMA Applications]&lt;br /&gt;
* 2021-07-06, [https://onlinelibrary.wiley.com/doi/10.1002/cpe.6474 Cricket: A virtualization layer for distributed execution of CUDA applications with checkpoint/restart support]&lt;br /&gt;
* 2021-06-07, [https://ieeexplore.ieee.org/abstract/document/9469425 Extending the QUIC Protocol to Support Live Container Migration at the Edge]&lt;br /&gt;
* 2021-04-21, [https://dl.acm.org/doi/10.1145/3447786.3456258 On-demand-fork: A Microsecond Fork for Memory-intensive and Latency-sensitive Applications]&lt;br /&gt;
* 2021-01-23, [https://arxiv.org/abs/2101.09584 HyCoR: Fault-Tolerant Replicated Containers Based on Checkpoint and Replay]&lt;br /&gt;
* 2020-12-11, [https://dl.acm.org/doi/abs/10.1145/3423211.3425682 Prebaking Functions to Warm the Serverless Cold Start]&lt;br /&gt;
* 2020-07-14, [https://ieeexplore.ieee.org/abstract/document/9139863 Fault-Tolerant Containers Using NiLiCon]&lt;br /&gt;
* 2020-07-08, [https://ieeexplore.ieee.org/document/9126743 Docker Container Deployment in Distributed Fog Infrastructures with Checkpoint/Restart]&lt;br /&gt;
* 2020-04-30, [https://dl.acm.org/doi/abs/10.1145/3342195.3387555 Balancing efficiency and fairness in heterogeneous GPU clusters for deep learning]&lt;br /&gt;
* 2020-03-17, [https://www.ssrg.ece.vt.edu/papers/vee20-h-container.pdf Edge Computing -- the Case for Heterogeneous-ISA Container Migration]&lt;br /&gt;
* 2019-10-03, [https://dl.acm.org/citation.cfm?id=3357542 Fast In-Memory CRIU for Docker Containers]&lt;br /&gt;
* 2019-09-24, [https://ieeexplore.ieee.org/document/8916436 Using Container Migration for High Performance Computing (HPC) Workloads Resilience]&lt;br /&gt;
* 2019-11-18, [https://ieeexplore.ieee.org/abstract/document/8946189 Optimizing Post-Copy Live Migration with System-Level Checkpoint Using Fabric-Attached Memory]&lt;br /&gt;
* 2019-09-11, [https://arxiv.org/pdf/1909.04945.pdf Performance Estimation of Container-Based Cloud-to-Fog Offloading]&lt;br /&gt;
* 2019-07-16, [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=8754197 FastContainer: A Homeostatic System Architecture High-speed Adapting Execution Environment Changes]&lt;br /&gt;
* 2019-07-11, [https://ieeexplore.ieee.org/abstract/document/8814504 Exploring Potential for Non-Disruptive Vertical Auto Scaling and Resource Estimation in Kubernetes]&lt;br /&gt;
* 2019-07, University of Twente: [https://essay.utwente.nl/78342/1/coenen_MA_EEMCS.pdf Increasing Availability of the AEPU by Improving the Update Process]&lt;br /&gt;
* 2019-05-25, [https://dl.acm.org/citation.cfm?id=3303978 Replayable Execution Optimized for Page Sharing for a Managed Runtime Environment]&lt;br /&gt;
* 2019-04-29, Binghamton University: [http://www.cs.binghamton.edu/~huilu/pubs/mWarp.pdf mWarp: Accelerating Intra-Host Live Container Migration via Memory Warping]&lt;br /&gt;
* 2019-04-10, [https://lisas.de/~adrian/posts/2019-Apr-10-criu-and-selinux.html CRIU and SELinux]&lt;br /&gt;
* 2019-03-27, [https://www.mdpi.com/1424-8220/19/7/1488/pdf Container Migration in the Fog: A Performance Evaluation]&lt;br /&gt;
* 2019-03-25, [https://dl.acm.org/citation.cfm?id=3313947 Checkpointing and Migration of IoT Edge Functions]&lt;br /&gt;
* 2019-03-24, Future University Hakodate: [https://doi.asiabsdcon.org/10.25263/asiabsdcon2019/p07a Yet Another Container Migration on FreeBSD]&lt;br /&gt;
* 2019-03-09, [https://link.springer.com/article/10.1007/s10586-019-02920-6 Provenance-based fault tolerance technique recommendation for cloud-based scientific workflows: a practical approach]&lt;br /&gt;
* 2019-02-26, Georgia Institute of Technology / Peking University: [https://www.ndss-symposium.org/wp-content/uploads/2019/02/ndss2019_05A-3_Duan_paper.pdf Automating Patching of Vulnerable Open-Source Software Versions in Application Binaries]&lt;br /&gt;
* 2019-01-30, University West: [https://www.researchgate.net/publication/330798282_Evaluating_Distributed_MPI_Checkpoint_and_Restore_using_Docker_Containers_and_CRIU Evaluating Distributed MPI Checkpoint and Restore using Docker Containers and CRIU]&lt;br /&gt;
* 2018-12, University of Lille: [https://tel.archives-ouvertes.fr/tel-02011337/document Flexible Framework for Elasticity in Cloud Computing]&lt;br /&gt;
* 2018-12, Arizona State University: [https://search.proquest.com/openview/ef9070310256fe9ec9a663ebde537b36/1 Concurrent Checkpointing for Embedded Real-Time Systems]&lt;br /&gt;
* 2018-11-08, [https://lisas.de/~adrian/posts/2018-Nov-08-criu-configuration-files.html CRIU configuration files]&lt;br /&gt;
* 2018-11-06, [https://www.redhat.com/en/blog/using-criu-upgrade-vpn-servers-kernel-without-dropping-connections Using CRIU to upgrade a VPN server's kernel without dropping connections]&lt;br /&gt;
* 2018-10-13, [https://dl.acm.org/citation.cfm?id=3290626 Linux Process Tree Reconstruction Using The Attributed Grammar-Based Tree Transformation Model]&lt;br /&gt;
* 2018-10-10, [https://podman.io/blogs/2018/10/10/checkpoint-restore.html Adding checkpoint/restore support to Podman]&lt;br /&gt;
* 2018-10-08, [https://www.usenix.org/conference/osdi18/presentation/xiao Gandiva: Introspective Cluster Scheduling for Deep Learning]&lt;br /&gt;
* 2018-09-15, [https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8539562 Stateful Container Migration employing Checkpoint-based Restoration for Orchestrated Container Clusters]&lt;br /&gt;
* 2018-09-07, [https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8502659 Container Live Migration for Latency Critical Industrial Applications on Edge Computing]&lt;br /&gt;
* 2018-08-15, University of Maryland: [https://drum.lib.umd.edu/bitstream/handle/1903/20499/CS-TR-5056.pdf Fast and Service-preserving Recovery from Malware Infections Using CRIU]&lt;br /&gt;
* 2018-07-31, [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6131214/ Hot-starting software containers for STAR aligner]&lt;br /&gt;
* 2018-06-28, University of Aberdeen: [https://link.springer.com/chapter/10.1007/978-3-030-02465-9_13 Efficient Live Migration of Linux Containers]&lt;br /&gt;
* 2018-03-24, [https://www.smitechow.com/2018/03/compile-criu-on-centos-6.html Compile CRIU on CentOS 6]&lt;br /&gt;
* 2017-12-06, [https://lisas.de/~adrian/posts/2017-Dec-06-optimizing-live-container-migration-in-lxd.html Optimizing live container migration in LXD]&lt;br /&gt;
* 2017-10-12, Red Hat Blog: [http://rhelblog.redhat.com/2017/10/12/container-migration-around-the-world/ Container Migration Around The World]&lt;br /&gt;
* 2017-07-19, Red Hat Blog: [https://www.redhat.com/en/blog/how-can-process-snapshotrestore-help-save-your-day How can process snapshot/restore help save your day?]&lt;br /&gt;
* 2017-06-29, University West, Sweden: [http://www.diva-portal.org/smash/record.jsf?pid=diva2%3A1144045&amp;amp;dswid=4414 Distributed Checkpointing with Docker Containers in High Performance Computing]&lt;br /&gt;
* 2017-06-25, [https://ieeexplore.ieee.org/document/8030623 Autonomic Vertical Elasticity of Docker Containers with ELASTICDOCKER]&lt;br /&gt;
* 2017-06-06, [https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7980161 Voyager: Complete Container State Migration]&lt;br /&gt;
* 2017-06-06, Selectel Blog: [https://blog.selectel.com/managing-containers-runc/ Managing Containers in runC]&lt;br /&gt;
* 2016-12-16, University of Lisbon: [http://www.gsd.inesc-id.pt/~pjpf/ALMA-middleware-2016.pdf ALMA – GC-assisted JVM Live Migration for Java Server Applications]&lt;br /&gt;
* 2016-07-20, Red Hat KnowledgeBase: [https://access.redhat.com/articles/2455211 CRIU - Checkpoint/Restore in user space]&lt;br /&gt;
* 2016-07-20, LWN.net: [https://lwn.net/SubscriberLink/694593/4d6291b3f727791a/ Quality in open source: testing CRIU]&lt;br /&gt;
* 2016-06-22, Usenix: [https://www.usenix.org/conference/atc16/technical-sessions/presentation/kashyap Instant OS Updates via Userspace Checkpoint-and-Restart]&lt;br /&gt;
* 2016-05-04: [http://lisas.de/~adrian/?p=1183 Lazy Process Migration]&lt;br /&gt;
* 2015-12-31, [http://kimh.github.io/blog/jp/criu/experiment-to-suspend-and-resume-docker-container-with-criu-jp/ Use the CRIU Docker container of stop / resume to the challenge]&lt;br /&gt;
* 2015-12-31, [http://blog.codeship.com/how-containers-will-change-the-game-server-hosting-industry/ How Containers Will Change the Game Server Hosting Industry]&lt;br /&gt;
* 2015-11-24, [https://dl.acm.org/doi/10.1145/2814576.2814807 Improving Preemptive Scheduling with Application-Transparent Checkpointing in Shared Clusters]&lt;br /&gt;
* 2015-09-21, [http://blog.circleci.com/checkpoint-and-restore-docker-container-with-criu/ Checkpoint and restore Docker container with CRIU]&lt;br /&gt;
* 2015-09-21, [https://blog.docker.com/2015/09/dolly-demo-linuxcon-runc/ Dolly Demo at LinuxCon: Rapid cloning of existing services with runC]&lt;br /&gt;
* 2015-09-10, [http://blog.tonicdev.com/2015/09/10/time-traveling-in-node.js-notebooks.html Time Traveling in Node.js Notebooks]&lt;br /&gt;
* 2015-01-01, [http://www.cisco.com/c/dam/en/us/solutions/collateral/data-center-virtualization/openstack-at-cisco/linux-containers-white-paper-cisco-red-hat.pdfLinux Containers: Why They’re in Your Future and What Has to Happen First]&lt;br /&gt;
* 2015-07-01, [https://kubernetes.io/blog/2015/07/how-did-quake-demo-from-dockercon-work/ How did the Quake demo from DockerCon Work?]&lt;br /&gt;
* 2015-05-06, [https://insights.ubuntu.com/2015/05/06/live-migration-in-lxd/ Live Migration in LXD] Ubuntu Insignts&lt;br /&gt;
* 2015-04-22, TuxDiary [http://tuxdiary.com/2015/04/22/dump-debug-resume-process-criu/ Dump, debug, resume process with criu]&lt;br /&gt;
* 2014-12-12, Symposium on Information and Communication Systems (SInCom 2014) [https://lisas.de/~adrian/proceedingsSInCom2014.pdf Checkpoint/Restore in User-Space with Open MPI]&lt;br /&gt;
* 2014-11-03, [https://dl.acm.org/doi/10.1145/2660267.2660329 From Patches to Honey-Patches: Lightweight Attacker Misdirection, Deception, and Disinformation]&lt;br /&gt;
* 2014-09-31, [http://www.reuters.com/article/wa-parallels-idUSnBw035202a+100+BSW20141103 Parallels Surpasses One Million Deployed Virtual Containers]&lt;br /&gt;
* 2014-08-01, ADMIN magazine: [http://www.admin-magazine.com/Archive/2014/22/Save-and-Restore-Linux-Processes-with-CRIU Save and Restore Linux Processes with CRIU]&lt;br /&gt;
* 2014-02-15, OCCAM Reproduce: [http://heirman.net/papers/reproduce2014.pdf Efficient, Accurate and Reproducible Simulation of Multi-Threaded Workloads] ([http://www.occamportal.org/slides/reproduce/reproduce14_slides_05.pdf slides])&lt;br /&gt;
* 2013-11-25, Phoronix: [http://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTUyNjE Checkpoint-Restore Hits v1.0: Freeze Your Linux Apps]&lt;br /&gt;
* 2013-11-25, LWN: [http://lwn.net/Articles/574918/ A note about 1.0]&lt;br /&gt;
* 2013-10-29, LWN: [http://lwn.net/Articles/572125/ Kernel summit report]&lt;br /&gt;
* 2013-02-01, A blog [http://www.anchor.com.au/blog/2013/02/overview-of-checkpoint-and-restore-live-migrating-processes-on-a-linux-system/ post] upon LCA-2013 talk.&lt;br /&gt;
* 2013-01-09, LWN: [http://lwn.net/Articles/531939/ Checkpoint/restore and signals]&lt;br /&gt;
* 2012-11-20, LWN: [http://lwn.net/Articles/525675/ LCE: Checkpoint/restore in user space: are we there yet?]&lt;br /&gt;
* 2012-07-24, OpenVZ blog: [http://openvz.livejournal.com/42414.html CRtools 0.1 released!]&lt;br /&gt;
* 2012-05-01, LWN: [http://lwn.net/Articles/495304/ TCP connection repair]&lt;br /&gt;
* 2012-02-26, The International Symposium on Grids and Clouds (ISGC) [https://lisas.de/~adrian/ISGC-2012_031.pdf Pos (isgc 2012) 031 live process migration for load balancing and/or fault tolerance]&lt;br /&gt;
* 2012-01-31, LWN: [http://lwn.net/Articles/478111/ Preparing for user-space checkpoint/restore]&lt;br /&gt;
* 2011-07-19, LWN: [http://lwn.net/Articles/452184/ Checkpoint/restart (mostly) in user space]&lt;br /&gt;
&lt;br /&gt;
=== In Russian ===&lt;br /&gt;
* 13.05.2016, Habrahabr: [https://habrahabr.ru/post/283504/ Особенности тестирования технологии C/R в Linux]&lt;br /&gt;
* 09.03.2016, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=44015 Выпуск CRIU 2.0, системы для сохранения и восстановления состояния процессов в Linux]&lt;br /&gt;
* 18.12.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=43539 CRIU, путь от вызывающей непонимание разработки до интеграции в Red Hat Enterprise Linux] &lt;br /&gt;
* 09.12.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=43489 Выпуск CRIU 1.8, системы для сохранения и восстановления состояния процессов в Linux] &lt;br /&gt;
* 09.09.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=42939 Выпуск CRIU 1.7, системы для сохранения и восстановления состояния процессов в Linux]&lt;br /&gt;
* 25.08.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=42850 Проект OpenVZ анонсировал новый компонент для миграции Linux контейнеров - P.Haul]&lt;br /&gt;
* 27.05.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=42315 Статус интеграции проектов CRIU и Docker]&lt;br /&gt;
* 25.11.2013, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=38519 Анонс выхода 1.0]&lt;br /&gt;
* 28.04.2015, Типичный программист: [http://tproger.ru/interview/pavel-emelyanov/ Разработка ядра Linux — это общение в клубе по интересам]&lt;br /&gt;
* 22.04.2013, Habrahabr: [http://habrahabr.ru/post/177499/ В преддверии очередного релиза CRIU]&lt;br /&gt;
* 04.03.2013, IT-computer: [http://www.it-computer.com/osvaivaem-sistemu-zamorozki-processov-criu Осваиваем систему заморозки процессов CRIU]&lt;br /&gt;
* 28.09.2012, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=34958 CRIU 0.2 release] &lt;br /&gt;
* 05.11.2013, Xakep: [https://xakep.ru/2013/11/05/criu-manual/ Осваиваем систему заморозки процессов CRIU]&lt;br /&gt;
* 15.08.2013, Habrahabr: [http://habrahabr.ru/company/parallels/blog/190066/ «Разработка ядра Linux — это общение в клубе по интересам»]&lt;br /&gt;
* 01.10.2012, YaC 2012: [http://events.yandex.ru/events/yac/2012/talks/352/ больше, чем живая миграция для Linux контейнеров]&lt;br /&gt;
* 24.07.2012, Habrahabr: [http://habrahabr.ru/post/148413/ CRIU — новый амбициозный проект для сохранения и восстановления состояния процессов]&lt;br /&gt;
* 24.07.2012, Ru-OpenVZ blog: [http://ru-openvz.livejournal.com/5753.html Вышел первый релиз CRtools, версия 0.1]&lt;br /&gt;
* 24.07.2012, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=34408 Первый релиз CRtools, утилиты для заморозки и восстановления состояния процессов в Linux]&lt;br /&gt;
* 24.07.2012, LOR: [http://www.linux.org.ru/news/kernel/8021514 Вышел первый релиз CRtools, версия 0.1]&lt;br /&gt;
* Копипаста о v0.1 &amp;quot;CRIU / CRtools 0.1 — создание контрольных точек Linux-приложений и восстановление с них&amp;quot;: [http://rosinvest.com/novosti/949423 Rosinvest], [http://www.nixp.ru/news/11854.html NIXP] [http://pcnews.ru/top/news/day/criu-crtools-linux-openvz-checkpoint-restore-in-userspace-cpt-system-90-10-lxc-org-398305.html PCNews]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5872</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5872"/>
		<updated>2026-02-24T09:44:48Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* Forensic Checkpointing Framework for Kubernetes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Kubernetes Operator for Automated Checkpointing ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extend the Checkpoint/Restore Operator with support for automated policy-based checkpointing.&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/checkpoint-restore/checkpoint-restore-operator Checkpoint/Restore Operator] for Kubernetes currently supports only policies and parameters that limit the number of checkpoints. This project aims to extend the current support with automated policy-based checkpointing, allowing users to define triggers for checkpoint creation, such as time-based schedules, resource thresholds (CPU, memory, I/O usage), Kubernetes events (node drain, pod eviction, preemption), and application-level signals or annotations.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Viktória Spišaková &amp;lt;spisakova@ics.muni.cz&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Forensic Checkpointing Framework for Kubernetes ===&lt;br /&gt;
&lt;br /&gt;
Kubernetes provides a highly dynamic and ephemeral environment where workloads can start and disappear very quickly and are continuously being rescheduled across different nodes in the cluster.&lt;br /&gt;
One of the key challenges with forensic investigations in Kubernetes is capturing and preserving the evidence during security incidents. This project aims to address this problem by developing a framework for efficiently capturing and preserving the state of all running applications in a container at a specific point in time, along with the associated container configurations and metadata. These artifacts would allow investigators to accurately reconstruct the events, create a timeline, and analyze security incidents without impacting the running cluster. This is an important step towards enabling forensic readiness for Kubernetes, where cluster administrators proactively ensure the environments are prepared to collect and preserve evidence before a security incident occurs.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpointctl&lt;br /&gt;
* [https://fosdem.org/2026/events/attachments/F9RANH-forensic-snapshots-in-kubernetes/slides/267371/fosdem_2_4dh73ni.pdf Investigating Security Incidents with Forensic Snapshots in Kubernetes]&lt;br /&gt;
* [https://www.cncf.io/reports/cloud-native-security-whitepaper/ Cloud Native Security Whitepaper]&lt;br /&gt;
* [https://media.defense.gov/2022/Aug/29/2003066362/-1/-1/0/CTR_KUBERNETES_HARDENING_GUIDANCE_1.2_20220829.PDF Kubernetes Hardening Guide]&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Lorena Goldoni &amp;lt;lory.goldoni@gmail.com&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enabling Checkpoint/Restore of Rootless Containers ===&lt;br /&gt;
&lt;br /&gt;
[https://rootlesscontaine.rs/ Rootless containers] are containers that can be created, run, and managed by unprivileged users. Container engines such as Podman natively support running containers in a rootless mode to improve security and usability. While checkpoint/restore functionality is already available for rootful containers and unprivileged checkpointing is possible with the &amp;lt;code&amp;gt;CAP_CHECKPOINT_RESTORE&amp;lt;/code&amp;gt; capability, container engines do not yet support native checkpointing of containers running in rootless mode. This project aims to explore and address the remaining challenges required to enable unprivileged checkpoint/restore for rootless containers.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/1930&lt;br /&gt;
* https://github.com/torvalds/linux/commit/124ea650d3072b005457faed69909221c2905a1f&lt;br /&gt;
* https://src.fedoraproject.org/rpms/criu/pull-request/10#request_diff&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files on detached mounts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Initial support of open files on &amp;quot;detached&amp;quot; mounts&lt;br /&gt;
&lt;br /&gt;
When criu dumps a process with an open fd on a file, it gets the mount identifier (mnt_id) via /proc/&amp;lt;pid&amp;gt;/fdinfo/&amp;lt;fd&amp;gt;, so that criu knows from which exact mount the file was initially opened. This way criu can restore this fd by opening the same exact file from topologically the same mount in restored mount tree.&lt;br /&gt;
&lt;br /&gt;
Restoring fd from the right mount can be important in different cases, for instance if the process would later want to resolve paths relative to the fd, and obviously resolving from the same file on different mount can lead to different resolved paths, or if the process wants to check path to the file via /proc/&amp;lt;pid&amp;gt;/fd/&amp;lt;fd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
But we have a problem finding on which mount we need to reopen the file at restore if we only know mnt_id but can't find this mnt_id in /proc/&amp;lt;pid&amp;gt;/mountinfo.&lt;br /&gt;
&lt;br /&gt;
Mountinfo file shows the mount tree topology of current mntns: parent - child relations, sharing group information, mountpoint and fs root information. And if we don't see mnt_id in it we don't know anything about this mount.&lt;br /&gt;
&lt;br /&gt;
This can happen in two cases&lt;br /&gt;
&lt;br /&gt;
* 1) external mount or file - if file was opened from e.g. host it's mount would not be visible in container mountinfo&lt;br /&gt;
* 2) mount was lazily unmounted&lt;br /&gt;
&lt;br /&gt;
In case of 1) we have criu options to help criu handle external dependencies.&lt;br /&gt;
&lt;br /&gt;
In case of 2) or no options provided criu can't resolve mnt_id in mountinfo and criu fails.&lt;br /&gt;
&lt;br /&gt;
'''Solution:'''&lt;br /&gt;
We can handle 2) with: resolving major/minor via fstat, using name_to_handle_at and open_by_handle_at to open same file on any other available mount from same superblock (same major/minor) in container. Now we have fd2 of the same file as fd, but on existing mount we can dump it as usual instead, and mark it as &amp;quot;detached&amp;quot; in image, now criu on restore knows where to find this file, but instead of just opening fd2 from actually restored mount, we create a temporary bindmount which is lazy unmounted just after open making the file appear as a file on detached mount.&lt;br /&gt;
&lt;br /&gt;
Known problems with this approach:&lt;br /&gt;
&lt;br /&gt;
* Stat on btrfs gives wrong major/minor&lt;br /&gt;
* file handles does not work everywhere&lt;br /&gt;
* file handles can return fd2 on deleted file or on other hardlink, this needs special handling.&lt;br /&gt;
&lt;br /&gt;
Additionally (optional part):&lt;br /&gt;
We can export real major/minor in fdinfo (kernel).&lt;br /&gt;
We can think of new kernel interface to get mount's major/minor and root (shift from fsroot) for detached mounts, if we have it we don't need file handle hack to find file on other mount (see fsinfo or getvalues kernel patches in LKML, can we add this info there?).&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentor: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for SCM_CREDENTIALS / SCM_PIDFD and friends ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support for SCM_CREDENTIALS / SCM_PIDFD&lt;br /&gt;
&lt;br /&gt;
SCM_CREDENTIALS and SCM_PIDFD are types of SCM (Socket-level Control Messages). They play a crucial role&lt;br /&gt;
in systemd and many other user space applications. This project is about adding support for these&lt;br /&gt;
SCMs to be properly saved and restored back with CRIU. There is an existing code in OpenVZ CRIU fork,&lt;br /&gt;
see [1] and [2]. Goal would be first of all to properly port this code, cover with extensive tests and&lt;br /&gt;
ensure that SCM_PIDFD / SO_PEERPIDFD are handled correctly. Also we expect to cover things like&lt;br /&gt;
SO_PASSRIGHTS and SO_PASSPIDFD.&lt;br /&gt;
&lt;br /&gt;
There is some extra source of complexity here pidfds can be &amp;quot;stale&amp;quot; (see PIDFD_STALE in Linux kernel)&lt;br /&gt;
and we need to ensure that we properly cover those cases.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [1] openvz-criu https://bitbucket.org/openvz/criu.ovz/history-node/918653a0a343194385592d7b50b5bd7a8fbe1cc1/criu/sk-unix.c?at=hci-dev&lt;br /&gt;
* [2] openvz-criu https://bitbucket.org/openvz/criu.ovz/history-node/918653a0a343194385592d7b50b5bd7a8fbe1cc1/criu/sk-queue.c?at=hci-dev&lt;br /&gt;
* [3] Linux kernel https://github.com/torvalds/linux/commit/5e2ff6704a275be009be8979af17c52361b79b89&lt;br /&gt;
* [4] Linux kernel https://github.com/torvalds/linux/commit/c679d17d3f2d895b34e660673141ad250889831f&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate / advanced&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Mentors: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5871</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5871"/>
		<updated>2026-02-18T11:01:15Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Kubernetes Operator for Automated Checkpointing ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extend the Checkpoint/Restore Operator with support for automated policy-based checkpointing.&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/checkpoint-restore/checkpoint-restore-operator Checkpoint/Restore Operator] for Kubernetes currently supports only policies and parameters that limit the number of checkpoints. This project aims to extend the current support with automated policy-based checkpointing, allowing users to define triggers for checkpoint creation, such as time-based schedules, resource thresholds (CPU, memory, I/O usage), Kubernetes events (node drain, pod eviction, preemption), and application-level signals or annotations.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Viktória Spišaková &amp;lt;spisakova@ics.muni.cz&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Forensic Checkpointing Framework for Kubernetes ===&lt;br /&gt;
&lt;br /&gt;
Kubernetes provides a highly dynamic and ephemeral environment where workloads can start and disappear very quickly and are continuously being rescheduled across different nodes in the cluster.&lt;br /&gt;
One of the key challenges with forensic investigations in Kubernetes is capturing and preserving the evidence during security incidents. This project aims to address this problem by developing a framework for efficiently capturing and preserving the state of all running applications in a container at a specific point in time, along with the associated container configurations and metadata. These artifacts would allow investigators to accurately reconstruct the events, create a timeline, and analyze security incidents without impacting the running cluster. This is an important step towards enabling forensic readiness for Kubernetes, where cluster administrators proactively ensure the environments are prepared to collect and preserve evidence before a security incident occurs.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpointctl&lt;br /&gt;
* [https://fosdem.org/2026/events/attachments/F9RANH-forensic-snapshots-in-kubernetes/slides/266249/fosdem_2_4dh73ni.pdf Investigating Security Incidents with Forensic Snapshots in Kubernetes]&lt;br /&gt;
* [https://www.cncf.io/reports/cloud-native-security-whitepaper/ Cloud Native Security Whitepaper]&lt;br /&gt;
* [https://media.defense.gov/2022/Aug/29/2003066362/-1/-1/0/CTR_KUBERNETES_HARDENING_GUIDANCE_1.2_20220829.PDF Kubernetes Hardening Guide]&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Lorena Goldoni &amp;lt;lory.goldoni@gmail.com&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enabling Checkpoint/Restore of Rootless Containers ===&lt;br /&gt;
&lt;br /&gt;
[https://rootlesscontaine.rs/ Rootless containers] are containers that can be created, run, and managed by unprivileged users. Container engines such as Podman natively support running containers in a rootless mode to improve security and usability. While checkpoint/restore functionality is already available for rootful containers and unprivileged checkpointing is possible with the &amp;lt;code&amp;gt;CAP_CHECKPOINT_RESTORE&amp;lt;/code&amp;gt; capability, container engines do not yet support native checkpointing of containers running in rootless mode. This project aims to explore and address the remaining challenges required to enable unprivileged checkpoint/restore for rootless containers.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/1930&lt;br /&gt;
* https://github.com/torvalds/linux/commit/124ea650d3072b005457faed69909221c2905a1f&lt;br /&gt;
* https://src.fedoraproject.org/rpms/criu/pull-request/10#request_diff&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files on detached mounts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Initial support of open files on &amp;quot;detached&amp;quot; mounts&lt;br /&gt;
&lt;br /&gt;
When criu dumps a process with an open fd on a file, it gets the mount identifier (mnt_id) via /proc/&amp;lt;pid&amp;gt;/fdinfo/&amp;lt;fd&amp;gt;, so that criu knows from which exact mount the file was initially opened. This way criu can restore this fd by opening the same exact file from topologically the same mount in restored mount tree.&lt;br /&gt;
&lt;br /&gt;
Restoring fd from the right mount can be important in different cases, for instance if the process would later want to resolve paths relative to the fd, and obviously resolving from the same file on different mount can lead to different resolved paths, or if the process wants to check path to the file via /proc/&amp;lt;pid&amp;gt;/fd/&amp;lt;fd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
But we have a problem finding on which mount we need to reopen the file at restore if we only know mnt_id but can't find this mnt_id in /proc/&amp;lt;pid&amp;gt;/mountinfo.&lt;br /&gt;
&lt;br /&gt;
Mountinfo file shows the mount tree topology of current mntns: parent - child relations, sharing group information, mountpoint and fs root information. And if we don't see mnt_id in it we don't know anything about this mount.&lt;br /&gt;
&lt;br /&gt;
This can happen in two cases&lt;br /&gt;
&lt;br /&gt;
* 1) external mount or file - if file was opened from e.g. host it's mount would not be visible in container mountinfo&lt;br /&gt;
* 2) mount was lazily unmounted&lt;br /&gt;
&lt;br /&gt;
In case of 1) we have criu options to help criu handle external dependencies.&lt;br /&gt;
&lt;br /&gt;
In case of 2) or no options provided criu can't resolve mnt_id in mountinfo and criu fails.&lt;br /&gt;
&lt;br /&gt;
'''Solution:'''&lt;br /&gt;
We can handle 2) with: resolving major/minor via fstat, using name_to_handle_at and open_by_handle_at to open same file on any other available mount from same superblock (same major/minor) in container. Now we have fd2 of the same file as fd, but on existing mount we can dump it as usual instead, and mark it as &amp;quot;detached&amp;quot; in image, now criu on restore knows where to find this file, but instead of just opening fd2 from actually restored mount, we create a temporary bindmount which is lazy unmounted just after open making the file appear as a file on detached mount.&lt;br /&gt;
&lt;br /&gt;
Known problems with this approach:&lt;br /&gt;
&lt;br /&gt;
* Stat on btrfs gives wrong major/minor&lt;br /&gt;
* file handles does not work everywhere&lt;br /&gt;
* file handles can return fd2 on deleted file or on other hardlink, this needs special handling.&lt;br /&gt;
&lt;br /&gt;
Additionally (optional part):&lt;br /&gt;
We can export real major/minor in fdinfo (kernel).&lt;br /&gt;
We can think of new kernel interface to get mount's major/minor and root (shift from fsroot) for detached mounts, if we have it we don't need file handle hack to find file on other mount (see fsinfo or getvalues kernel patches in LKML, can we add this info there?).&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentor: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for SCM_CREDENTIALS / SCM_PIDFD and friends ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support for SCM_CREDENTIALS / SCM_PIDFD&lt;br /&gt;
&lt;br /&gt;
SCM_CREDENTIALS and SCM_PIDFD are types of SCM (Socket-level Control Messages). They play a crucial role&lt;br /&gt;
in systemd and many other user space applications. This project is about adding support for these&lt;br /&gt;
SCMs to be properly saved and restored back with CRIU. There is an existing code in OpenVZ CRIU fork,&lt;br /&gt;
see [1] and [2]. Goal would be first of all to properly port this code, cover with extensive tests and&lt;br /&gt;
ensure that SCM_PIDFD / SO_PEERPIDFD are handled correctly. Also we expect to cover things like&lt;br /&gt;
SO_PASSRIGHTS and SO_PASSPIDFD.&lt;br /&gt;
&lt;br /&gt;
There is some extra source of complexity here pidfds can be &amp;quot;stale&amp;quot; (see PIDFD_STALE in Linux kernel)&lt;br /&gt;
and we need to ensure that we properly cover those cases.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [1] openvz-criu https://bitbucket.org/openvz/criu.ovz/history-node/918653a0a343194385592d7b50b5bd7a8fbe1cc1/criu/sk-unix.c?at=hci-dev&lt;br /&gt;
* [2] openvz-criu https://bitbucket.org/openvz/criu.ovz/history-node/918653a0a343194385592d7b50b5bd7a8fbe1cc1/criu/sk-queue.c?at=hci-dev&lt;br /&gt;
* [3] Linux kernel https://github.com/torvalds/linux/commit/5e2ff6704a275be009be8979af17c52361b79b89&lt;br /&gt;
* [4] Linux kernel https://github.com/torvalds/linux/commit/c679d17d3f2d895b34e660673141ad250889831f&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate / advanced&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Mentors: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5869</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5869"/>
		<updated>2026-02-07T20:22:11Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
== NVIDIA GTC 2026 ==&lt;br /&gt;
[[Image:nvidia-gtc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''17 March, 2026, San Jose, CA'''&lt;br /&gt;
&lt;br /&gt;
[https://www.nvidia.com/gtc/session-catalog/sessions/gtc26-s81424/ Achieve Truly Serverless GPUs With libfuse, CRIU, and CUDA-Checkpoint]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2026 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2026, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2026/schedule/event/F9RANH-forensic-snapshots-in-kubernetes/ Investigating Security Incidents with Forensic Snapshots in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2026/schedule/event/DTGNQS-k8s-checkpoint-restore-wg/ Introducing the Kubernetes Checkpoint Restore Working Group]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events/past&amp;diff=5868</id>
		<title>News/events/past</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events/past&amp;diff=5868"/>
		<updated>2026-02-07T20:21:57Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ACHTUNG: please always use FULL SIGNATURE, i.e. --~~~~ as its date is used in RSS --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|this page lists events that has happened already, kept here just for historical reasons. For future events, see [[News/events]].}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2025 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''December 12, 2025, Tokyo, Japan, [https://lpc.events/event/19/sessions/217/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2240/ Files on Unmounted Mounts]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2237/ Guarded Control Stack on arm64: Challenges in Enabling Shadow Stack Support for CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2236/ Optimizing Checkpoints with Built-in Memory Page Compression]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CANOPIE-HPC @ Supercomputing 2025 ==&lt;br /&gt;
[[Image:Sc25_logo.png ‎|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 17, 2025, St. Louis, MO'''&lt;br /&gt;
&lt;br /&gt;
[https://sc25.conference-program.com/presentation/?id=ws_canopie105&amp;amp;sess=sess199 Engine-Agnostic Model Hot-Swapping for Cost-Effective LLM Inference]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Container Plumbing Days 2025 ==&lt;br /&gt;
[[Image:Containerplumbingdays2025.png ‎|left|180px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 28, 2025, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/26BG8 Enabling Secure Container Checkpointing for Distributed Model Training]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== High Performance Container Workshop @ ISC 2025 ==&lt;br /&gt;
[[Image:Isc-logo.png ‎|left|180px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 13, 2025, Hamburg, Germany'''&lt;br /&gt;
&lt;br /&gt;
[https://container-in-hpc.org/isc/2025/hpcw/index.html Transparent Hot-Swapping of Containerized AI/ML Workloads]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== JSSPP Workshop 2025 ==&lt;br /&gt;
[[Image:Jsspp-logo.png|left|80px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 3, 2025, Milan, Italy'''&lt;br /&gt;
&lt;br /&gt;
[https://jsspp.org/index.php?page=program Kubernetes Scheduling with Checkpoint/Restore: Challenges and Open Problems]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2025 ==&lt;br /&gt;
[[Image:Kubecon.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 3, 2025, London, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1tx7i Efficient Transparent Checkpointing of AI/ML Workloads in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1tx7u Transparent, Infra-Level Checkpoint and Restore for Resilient AI/ML Workloads at Scale]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oxford e-Research Centre ==&lt;br /&gt;
[[Image:Oerc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 02, 2025, Oxford, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://oerc.ox.ac.uk/events/efficient-transparent-checkpointing-of-aiml-workloads-in-kubernetes/ Efficient Transparent Checkpointing of AI/ML Workloads in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2025 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2025, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2025/schedule/event/fosdem-2025-4326-state-of-checkpoint-restore-in-kubernetes/ State of Checkpoint/Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2025/schedule/event/fosdem-2025-4042-optimizing-resource-utilization-for-interactive-gpu-workloads-with-transparent-container-checkpointing/ Optimizing Resource Utilization for Interactive GPU Workloads with Transparent Container Checkpointing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oxford e-Research Centre ==&lt;br /&gt;
[[Image:Oerc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''January 23, 2025, Oxford, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://oerc.ox.ac.uk/news/optimizing-resource-utilization-for-interactive-gpu-workloads-with-transparent-container-checkpointing/ Optimizing Resource Utilization for Interactive GPU Workloads with Transparent Container Checkpointing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxDays 2024 ==&lt;br /&gt;
[[Image:Linux-days-cz.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''13 Oct 2024, [https://pretalx.linuxdays.cz/linuxdays-2024/talk/7MQPWQ/ On the Edge of Tomorrow: Checkpoint/Restore in Containers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kubernetes Community Days Austria ==&lt;br /&gt;
[[Image:Kcd-austria.svg|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''09 Oct 2024, [https://kcdaustria2024.sessionize.com/session/678172 Forensic container checkpointing and analysis]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2024 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''18-20 Sep 2024, [https://lpc.events/event/18/sessions/193/#20240919 Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
 Other talks:&lt;br /&gt;
 * [https://lpc.events/event/18/contributions/1729/ Userspace memory persistence over kexec]&lt;br /&gt;
 * [https://lpc.events/event/18/contributions/1812/ Checkpoint/Restore In eBPF (CRIB)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Oxford e-Research Centre ==&lt;br /&gt;
[[Image:Oerc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 29, 2024, Oxford, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://oerc.ox.ac.uk/events/towards-efficient-end-to-end-encryption-for-container-checkpointing-systems/ Towards Efficient End-to-End Encryption for Container Checkpointing Systems]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CloudNativeSecurityCon North America 2024 ==&lt;br /&gt;
[[Image:CloudNativeSecurityCon.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 27, 2024, Seattle, Washington'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1dCVs End-to-End Encryption for Container Checkpointing in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://cloudnativesecurityconna24.sched.com/event/1dCUF/csi-forensics-unraveling-kubernetes-crime-scenes-alberto-pellitteri-stefano-chierici-sysdig CSI Forensics: Unraveling Kubernetes Crime Scenes]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit North America 2024 ==&lt;br /&gt;
[[Image:oss-na.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 17, 2024, Seattle, Washington'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1aPu9 Investigating Checkpoint and Restore for GPU-Accelerated Containers]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== NVIDIA GTC 2024 ==&lt;br /&gt;
[[Image:nvidia-gtc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 21, 2024, San Jose, CA'''&lt;br /&gt;
&lt;br /&gt;
[https://www.nvidia.com/gtc/posters/#/session/1705106137731001cNAN Achieving K8S and Public Cloud Operational Efficiency using a New Checkpoint/Restart Feature for GPUs]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2024 ==&lt;br /&gt;
[[Image:Kubecon.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 22, 2024, Paris, France'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1YeP3 The Party Must Go on - Resume Pods After Spot Instance Shut Down]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1YeT4 Enabling Coordinated Checkpointing for Distributed HPC Applications]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2024 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 3, 2024, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2024/schedule/event/fosdem-2024-3454-zeroing-and-the-semantic-gap-between-host-and-guest/ Zeroing and the semantic gap between host and guest]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2024/schedule/event/fosdem-2024-1855-forensic-container-checkpointing-and-analysis/ Forensic container checkpointing and analysis]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2023 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''13 Nov 2023, [https://lpc.events/event/17/sessions/162/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/17/contributions/1572/ Introducing PAGEMAP_SCAN IOCTL for Windows syscalls translation and CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/17/contributions/1570/ Fuse mounts recovery and Checkpoint/Restore]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/17/contributions/1568/ Protecting Sensitive Data in Container Checkpoints]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit Europe 2023 ==&lt;br /&gt;
[[Image:Osseu.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Sept 20, 2023, Bilbao, Spain'''&lt;br /&gt;
&lt;br /&gt;
[https://osseu2023.sched.com/event/1OGi9/digital-forensics-with-container-checkpointing-daniel-simionato-javier-martinez-sysdig Digital Forensics with Container Checkpointing]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GopherCon India 2023 ==&lt;br /&gt;
[[Image:Gopher-india.jpg|left|50px|link=https://gopherconindia.org/]]&lt;br /&gt;
&lt;br /&gt;
'''Sept 9, 2023, Pune, India'''&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=UGQgcIz9xGc Container checkpoints with Go and CRIU]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LSDS Seminar ==&lt;br /&gt;
[[Image:Lsds-logo.jpg|left|200px|link=https://lsds.doc.ic.ac.uk/]]&lt;br /&gt;
&lt;br /&gt;
'''March 9, 2023, Imperial College London'''&lt;br /&gt;
&lt;br /&gt;
[https://lsds.doc.ic.ac.uk/content/transparent-container-checkpointing-and-rollback-recovery-kubernetes-open-challenges-and Transparent Container Checkpointing and Rollback-Recovery with Kubernetes: Open Challenges and Research Directions]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2023 ==&lt;br /&gt;
[[Image:Devconf17.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''June 16, 2023'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/1MYjk Forensic Analysis of Container Checkpoints]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2023 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 4, 2023, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2023/schedule/event/container_kubernetes_criu/ Kubernetes and Checkpoint/Restore]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2022 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''14 Sep 2022, [https://lpc.events/event/16/sessions/136/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/16/contributions/1241/ Restoring process trees with child-sub-reapers, nested pid-namespaces and inherit-only resources]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/16/contributions/1242/ Unprivileged CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/16/contributions/1243/ Bringing up FUSE mounts C/R support]&lt;br /&gt;
&lt;br /&gt;
== stackconf 2022 ==&lt;br /&gt;
[[Image:stackconf.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Jul 19, Berlin&lt;br /&gt;
&lt;br /&gt;
[https://stackconf.eu/talks/kubernetes-and-checkpoint-restore/ Kubernetes and Checkpoint/Restore]&lt;br /&gt;
&lt;br /&gt;
== KubeCon + CloudNativeCon North America 2021 ==&lt;br /&gt;
[[Image:kubecon-2021.png|left|200px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 11-15, Los Angeles, California&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/BXVyszsbYmg Container Checkpoint/Restore at Scale for Fast Pod Startup Time]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== X.Org Developer Conference 2021 ==&lt;br /&gt;
&lt;br /&gt;
'''September 15, [https://youtu.be/uTZISTjqy9Q online on the wider Internet]&lt;br /&gt;
&lt;br /&gt;
[https://indico.freedesktop.org/event/1/contributions/18/ Fast Checkpoint Restore for AMD GPUs with CRIU]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2021 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''20 Sep 2021, [https://linuxplumbersconf.org/event/11/sessions/101/#20210920 Containers and Checkpoint/Restore Microconference] ([https://www.youtube.com/watch?v=SKyxugj8rxE video recording])&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/11/contributions/891/ Fast Checkpoint Restore for GPUs]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/11/contributions/923/ Mount-v2 CRIU migration engine: status update]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/11/contributions/924/ Alternative ways to extract information about processes]&lt;br /&gt;
&lt;br /&gt;
== Container Plumbing Days 2021 ==&lt;br /&gt;
[[Image:Container_plumbing_days.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''March 09, 2021, virtual'''&lt;br /&gt;
&lt;br /&gt;
[https://containerplumbing.org/sessions/2021/containerm.html Container Migration News]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2021 ==&lt;br /&gt;
[[Image:Devconf17.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''February 19, 2021, virtual'''&lt;br /&gt;
&lt;br /&gt;
[https://devconfcz2021.sched.com/event/gmId/container-live-migration Container Live Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit Europe 2020 ==&lt;br /&gt;
[[Image:Osseu.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 26, 2020, Virtual'''&lt;br /&gt;
&lt;br /&gt;
[https://osseu2020.sched.com/event/eCDH/container-live-migration-adrian-reber-red-hat Container Live Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2020 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 24-28, [https://linuxplumbersconf.org/event/7/ online on the wider Internet]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/641/ Fast checkpointing with criu-image-streamer]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/642/ FastFreeze: Unprivileged checkpoint/restore for containerized applications]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/640/ CRIU mounts migration: problems and solutions]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/7/contributions/643/ Checkpoint-restoring containers with Docker inside]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Phoronix news ==&lt;br /&gt;
[[Image:phoronix.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 4, 2020, online'''&lt;br /&gt;
&lt;br /&gt;
[https://www.phoronix.com/scan.php?page=news_item&amp;amp;px=Linux-5.9-Checkpoint-Restore Checkpoint/Restore Of Unprivileged Processes Sent In For Linux 5.9]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevOops 2020 ==&lt;br /&gt;
[[Image:Devoops.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''July 10, 2020, online'''&lt;br /&gt;
&lt;br /&gt;
[https://devoops-moscow.ru/en/2020/msk/talks/2eyl2ebmmix5ovx9imqhu9/ Container live migration with Podman and CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenShift Twitch 2020 ==&lt;br /&gt;
[[Image:Openshift.jpg|left|50px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 20, 2020, online'''&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=-7DgNxyuz_o Container Migration and CRIU Details]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 16:10, 11 March 2021 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2020 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Feburary 1, 2020, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2020/schedule/event/containers_live_migration/ Container Live Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Rppt]] 19:22, 28 February 2020‎ (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2019 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''September 9-11, Lisbon, Portugal'''&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/508/ Update on Task Migration at Google Using CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/472/ CRIU and the PID dance]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/513/ CRIU: Reworking vDSO proxification, syscall restart]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/4/contributions/478/ Secure Image-less Container Migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin]] 14:05, 23 Aug 2019 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tübix 2019 ==&lt;br /&gt;
[[Image:tuex.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Jul 06, 2019, Tübingen, Germany'''&lt;br /&gt;
&lt;br /&gt;
Adrian Reber [https://www.tuebix.org/2019/programm/adrian-reber-container-live-migration/ Container Live Migration]&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Google Summer of Code 2019 ==&lt;br /&gt;
[[Image:gsoc.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Mar-Sep 2019'''&lt;br /&gt;
&lt;br /&gt;
[https://summerofcode.withgoogle.com/organizations/6333591376625664/ Google Summer of Code]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2018 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Nov 13-15 , 2018, Vancouver, BC, Canada'''&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/202/ Time Namespaces]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/207/ Another year with CRIU: News from the developers]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/205/ News from academia: FatELF, RDMA and CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/135/ Remote page faults over RDMA]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/209/ Task Migration at Google Using CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/210/ Securely Migrating Untrusted Workloads with CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/event/2/contributions/69/ Task Migration at Scale Using CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Radostin]] 14:05, 18 Nov 2018 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit Europe 2018 ==&lt;br /&gt;
[[Image:Osseu17.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 24, 2018, Edinburgh, UK'''&lt;br /&gt;
&lt;br /&gt;
[https://osseu18.sched.com/event/FxYI/to-kill-or-to-checkpoint-that-is-the-question-mike-rapoport-ibm-adrian-reber-red-hat To Kill, or to Checkpoint - That is the Question]&lt;br /&gt;
&lt;br /&gt;
--[[User:Adrian]] 09:46, 29 September 2018 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Serverless meetup, Moscow ==&lt;br /&gt;
[[Image:Meetup.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 18, 2018, Moscow'''&lt;br /&gt;
&lt;br /&gt;
[https://www.meetup.com/ru-RU/moscow-serverless/events/255386528/ Задержки при вызове serverless функций: как формируются, на что влияют и как ими управлять], Владимир Порохов, Swifty Cloud&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:55, 17 October 2018 (UTC)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2018 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Feburary 4, 2018, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2018/schedule/event/containers_containing_memory/ Containers devroom]&lt;br /&gt;
* Containing container memory -- Mike Rapoport&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Andrey Vagin]] 22:48, 31 Jan 2018 (PST) &lt;br /&gt;
&lt;br /&gt;
== Open Source Summit EU 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Osseu17.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 23, 2017, Prague, Czech Republic'''&lt;br /&gt;
&lt;br /&gt;
Mike Rapoport and Adrian Reber [http://sched.co/BxIG will talk about live migration]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 12:00, 23 Aug 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SECR 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Secr17logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 20, 2017, St. Petersburg, Russia'''&lt;br /&gt;
&lt;br /&gt;
Pavel Begunkov will talk about [http://2017.secr.ru/lang/en/program/submitted-presentations/checkpointrestore-of-file-locks-from-userspace-in-linux file locks] checkpoint and restore.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 13:30, 12 Sep 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open Source Summit NA 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:OSS_na_white_0.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Sep 11, 2017, Los Angeles, USA'''&lt;br /&gt;
&lt;br /&gt;
Michael Holzheu [http://sched.co/BDpJ will talk] about CRIU on IBM mainframes.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 14:00, 29 Jun 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2017 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Sep 13-15, 2017, Los Angeles, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
[https://linuxplumbersconf.org/2017/ocw/events/LPC2017/tracks/637 Checkpoint-Restore microconf]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 18:20, 9 Aug 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Systor 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Systor_2017.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''May 22-24, 2017, Haifa, Israel'''&lt;br /&gt;
&lt;br /&gt;
[https://systor17posters.hotcrp.com/paper/8?cap=08aenKqSiwS9bA Accepted paper] about post-copy live migration from Mike Rapoport and Joel Nider&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 15:40, 21 Apr 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SCALE 15x ==&lt;br /&gt;
&lt;br /&gt;
[[Image:scale 15x logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 2-5, 2017, Pasadena, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
Kir Kolyshkin talked about some uncommon ways to use CRIU. [https://www.youtube.com/watch?v=7PKMctKf2JQ&amp;amp;t=18058 Video recording].&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 20:57, 13 February 2017 (UTC)&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2017 ==&lt;br /&gt;
[[Image:Devconf17.svg|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''January 27-29, 2017, Brno, Czech Republic'''&lt;br /&gt;
&lt;br /&gt;
[https://devconf.cz/schedule.html Decreasing container downtime during migration] by Adrian Reber. (the devconf site is not URL-friendly these days, go to Day-3 tab and check 11AM talks)&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 9:20, 12 Jan 2016 (MSG)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 2d1o podcast (rus) ==&lt;br /&gt;
'''Dec 22, 2016, On-Air'''&lt;br /&gt;
&lt;br /&gt;
[https://www.2d1o.ru/episodes/s01e03.html 2d1o podcast] invited Pavel Emelyanov to talk about Live migration (of Docker containers).&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:00, 9 Jan 2017 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Middleware 2016 ==&lt;br /&gt;
'''Dec 12-16, 2016, Trento, Italy'''&lt;br /&gt;
&lt;br /&gt;
Rodrigo Bruno gave a talk about Live Migrating JVM workloads using CRIU. Search for 'ALMA' on the [http://2016.middleware-conference.org/program/overall/ schedule page] :)&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 15:00, 19 Dec 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Piter ==&lt;br /&gt;
[[Image:Linuxpiter.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Nov 11-12, 2016, St. Petersburg, Russia'''&lt;br /&gt;
&lt;br /&gt;
Tycho Andersen will talk about [http://www.it-events.com/ru/events/6997#tabs-programm live migration in LXD]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:30, 12 Oct 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2016 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Nov 2-4, 2016, Santa Fe, NM, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://wiki.linuxplumbersconf.org/2016:checkpoint-restart Checkpoint-Restore micro-conference] within the [http://www.linuxplumbersconf.org/2016/ bigger event]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 21:50, 25 Apr 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenStack summit 2016 ==&lt;br /&gt;
[[Image:OpenStack_Summit.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Oct 25-28, 2016, Barcelona, Spain'''&lt;br /&gt;
&lt;br /&gt;
Phil Estes talks about [https://www.openstack.org/summit/barcelona-2016/summit-schedule/events/15091/live-container-migration-on-openstack live container migration in OpenStack]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 13:00, 25 Oct 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux kernel meetup in Tel-Aviv ==&lt;br /&gt;
&lt;br /&gt;
'''July 12, 2016, Tel-Aviv Israel'''&lt;br /&gt;
&lt;br /&gt;
Mike Rapoport will deliver [http://www.meetup.com/Tel-Aviv-Yafo-Linux-Kernel-Meetup/events/232058698/?gj=te1&amp;amp;rv=te1 a talk about UserfaultFD and lazy migration].&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 12:50, 24 Jun 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OSC'16 ==&lt;br /&gt;
[[Image:Oscfinal.png|left|100px|link=]]&lt;br /&gt;
'''June 22, 2016, Nürnberg, Germany'''&lt;br /&gt;
&lt;br /&gt;
Takashi Iwai [https://media.ccc.de/v/896-exploring-criu Exploring CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 16:15, 27 Jun 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== USENIX ATC'16 ==&lt;br /&gt;
[[Image:Usenix-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 22-24, 2016, Denver, CO, USA'''&lt;br /&gt;
&lt;br /&gt;
Sanidhya Kashyap will present [https://www.usenix.org/conference/atc16/technical-sessions/presentation/kashyap KuP] -- an instant OS updater using CRIU&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 11:30, 25 Apr 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black belt tech @ DockerCon 2016 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Dockercon16.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 19-21, 2016, Seattle, WA, USA'''&lt;br /&gt;
&lt;br /&gt;
Ross Boucher will talk about [https://blog.docker.com/2016/04/black-belt-talks-dockercon-2016/ Cloning running services with Docker and CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 14:30, 13 Apr 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tuebingen 2016 ==&lt;br /&gt;
'''Jun 11, 2016, Tübingen, Germany'''&lt;br /&gt;
&lt;br /&gt;
Adrian Reber [http://www.tuebix.org/2016/programm/adrian-reber-container-migration-using-criu-and-lxc/ will presend] the [[Userfaultfd]] and lazy migration.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 14:15, 7 Jun 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Systor 2016 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Systor2016.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Jun 6-8, 2016, Haifa, Israel'''&lt;br /&gt;
&lt;br /&gt;
[http://www.systor.org/2016/accepted.html Accepted paper] about containers live migration from Mike Rapoport&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 20:15, 6 May 2016 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevConf.cz 2016 ==&lt;br /&gt;
[[Image:Devconf.cz-logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 5, 2016, Brno, Czech Republic'''&lt;br /&gt;
&lt;br /&gt;
[https://devconfcz2016.sched.org/event/5lzL/live-migrating-a-container-pros-cons-and-gotchas Live migrating a container: pros, cons and gotchas] by Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 9:20, 12 Jan 2016 (MSG)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2016 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''January 30, 2016, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://www.fosdem.org/2016/schedule/track/containers_and_process_isolation/ Containers devroom]&lt;br /&gt;
* Using p.haul to migrate containers -- Tycho Andersen&lt;br /&gt;
* New horizons for the CRIU project -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 00:45, 19 December 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxMeetup Nizhny Novgorod 2016 ==&lt;br /&gt;
'''January 22, 2016, Nizhny Novgorod, Russia'''&lt;br /&gt;
&lt;br /&gt;
[https://mdday.timepad.ru/event/279578/ И овцы целы, и волки сыты: как перезапустить проблемное приложение и одновременно отладить его] -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] 13:00, 29 December 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Piter 2015 ==&lt;br /&gt;
[[Image:Tux.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 21, 2015, Saint Petersburg, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://www.it-sobytie.ru/events/4868 Живая миграция контейнеров: плюсы, минусы, подводные камни] -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 07:24, 26 August 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DockerCon 2015 ==&lt;br /&gt;
[[Image:DockerCon15.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 16-17, 2015, Barcelona, Spain'''&lt;br /&gt;
&lt;br /&gt;
Talk about live migration of containers -- [http://europe-2015.dockercon.com/speakers Pavel Emelyanov]&lt;br /&gt;
&lt;br /&gt;
-- [[User:Xemul|Xemul]] 15:00, 1 October 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ContainerDays NYC 2015 ==&lt;br /&gt;
[[Image:2015-nyc-logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 30, 2015, New York, U.S.A.'''&lt;br /&gt;
&lt;br /&gt;
[http://dynamicinfradays.org/events/2015-nyc/programme.html#criu CRIU: Time and Space Travel for Linux Containers] -- by Kirill Kolyshkin&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 00:43, 14 September 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Двенадцатая конференция разработчиков свободных программ ==&lt;br /&gt;
[[Image:Altlinux-logo.gif|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 16-18, 2015, Kaluga, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://www.altlinux.ru/news/archive/2015/08/item/743/ Живая миграция контейнеров: плюсы, минусы, подводные камни] --  Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 08:17, 1 October 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenVZ meetup ==&lt;br /&gt;
[[Image:Yandex.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''September 19, 2015, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[https://events.yandex.ru/events/yagosti/19-september-2015-linux/ Встреча разработчиков Linux-контейнеров]&lt;br /&gt;
&lt;br /&gt;
* Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов&lt;br /&gt;
* CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 06:19, 28 August 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers 2015 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''August 19-21, 2015, Seattle, WA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://wiki.linuxplumbersconf.org/2015:ckptrestart C/R miniconf]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] ([[User talk:Xemul|talk]]) 16:30, 9 February 2015 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevZen podcast ==&lt;br /&gt;
[[Image:Devzen.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''July 17, 2015, on air'''&lt;br /&gt;
&lt;br /&gt;
Pavel Emelyanov and Kirill Gorcunov will talk about CRIU.&lt;br /&gt;
&lt;br /&gt;
[http://devzen.ru/ DevZen podcast]&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 09:10, 3 July 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LVEE 2015 ==&lt;br /&gt;
[[File:Logo_lvee_2015.svg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''25-28 June 2015, Grodno, Belarus'''&lt;br /&gt;
&lt;br /&gt;
[http://lvee.org/ru/conference_registrations/LVEE%202015 О том как маленький open-source проект меняет жизнь большой компании]&lt;br /&gt;
&lt;br /&gt;
Pavel Emelyanov will talk about CRIU community (in Russian).&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 08:08, 1 July 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OS Day 2015 ==&lt;br /&gt;
[[File:Os-day-logo.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''9-10 June 2015, Kazan, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://osday.org/emelyanov.html#speaker Консервирование процессов в домашних условиях]&lt;br /&gt;
&lt;br /&gt;
Pavel Emelyanov will talk about CRIU's recent achievements and use-cases (in Russian).&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] (19 May 2015 (MSK))&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ContainerDays 2015 ==&lt;br /&gt;
[[File:Logo-ContainerDays.png|left|100px|link=]]&lt;br /&gt;
'''June 5-6 2015, Boston, MA, USA'''&lt;br /&gt;
&lt;br /&gt;
Kir Kolyshkin from OpenVZ project will give a talk [http://dynamicinfradays.org/events/2015-boston/programme.html#nproblems &amp;quot;N Problems of Linux Containers...and Some Solutions&amp;quot;] mentioning CRIU in it.&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul]] (4 Jun 2015)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DevOps Дефлопе ==&lt;br /&gt;
[[File:Deflope.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 2015, On Air'''&lt;br /&gt;
&lt;br /&gt;
[http://devopsdeflope.ru/ DevOps Дефлопе - Русскоязычный подкаст о DevOps]&lt;br /&gt;
&lt;br /&gt;
Andrew Vagin talks about integration CRIU and Docker and how checkpointing of processes can help in DevOps (in Russian).&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 08:26, 14 May 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FLOSS Weekly 2015 ==&lt;br /&gt;
[[Image:Floss-weekly.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''April 29, 2015, 8:30am PDT (15:30 GMT), live on air'''&lt;br /&gt;
&lt;br /&gt;
[http://twit.tv/show/floss-weekly/334 Episode about CRIU]&lt;br /&gt;
&lt;br /&gt;
--[[User:Sergey Bronnikov|SergeyB]] ([[User talk:Sergey Bronnikov|talk]]) 09:35, 8 April 2015 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2015 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2015, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2015/schedule/event/livemigration/ Live migration for containers is around the corner] -- Andrew Vagin&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Andrey Vagin]] 10:20, 13 January 2015 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Docker Meet-Up ==&lt;br /&gt;
&lt;br /&gt;
'''October 29, 2014, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://www.meetup.com/DevOps-Moscow-in-Russian/events/214753582/ Talk about CRIU and Docker] -- Pavel Emelyanov&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Pavel Emelyanov]] 19:30, 23 Oct 2014 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
'''October 15-17, 2014, Dusseldorf, Germany'''&lt;br /&gt;
&lt;br /&gt;
[http://www.linuxplumbersconf.org/2014/an-in-depth-look-containers-microconference/ CRIU discussion at Containers mini-conf ] -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] ([[User talk:Xemul|talk]]) 11:35, 23 October 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Docker Meetup ==&lt;br /&gt;
&lt;br /&gt;
'''September 17, 2014, Mountain View, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://www.meetup.com/Docker-Mountain-View/events/204603722/ Docker MV Meetup #3 at Google] -- Saied Kazemi [https://speakerdeck.com/saied/experimental-docker-checkpoint-and-restore-with-criu talked] about Docker + CRIU&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] ([[User talk:Xemul|talk]]) 03:26, 19 September 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open WG Talk ==&lt;br /&gt;
[[Image:Content_wg_talk.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''Friday, July 18, 2014, Minsk, Belarus'''&lt;br /&gt;
&lt;br /&gt;
[https://www.eventbrite.com/e/open-wg-talk-2-linux-container-virtualization-tickets-12189971533?fb_action_ids=705517169505083&amp;amp;fb_action_types=og.likes&amp;amp;fb_source=feed_opengraph&amp;amp;action_object_map=%7B%22705517169505083%22%3A753726634669877%7D&amp;amp;action_type_map=%7B%22705517169505083%22%3A%22og.likes%22%7D&amp;amp;action_ref_map=%5B%5D Open WG Talk #2 (Linux container virtualization)] -- Andrey Vagin&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 10:58, 7 July 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Texas Linux Fest 2014 ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Txlf2014.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''June 13-14, 2014, Austin, Texas, US'''&lt;br /&gt;
&lt;br /&gt;
[http://texaslinuxfest.org/content/criu-time-and-space-travel-service-linux-apps CRIU: time and space travel service for Linux apps] -- Kir Kolyshkin&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 11:52, 6 June 2014 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Docker Meetup ==&lt;br /&gt;
&lt;br /&gt;
'''March 26, 2014, Tel Aviv, Israel'''&lt;br /&gt;
&lt;br /&gt;
[http://www.meetup.com/Docker-Tel-Aviv/ Linux Containers and the Future Cloud] -- Rami Rosen&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 12:50, 24 March 2014 (EDT)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Haifux (LUG) ==&lt;br /&gt;
[[Image:Haifux.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''March 17, 2014, Haifa, Israel'''&lt;br /&gt;
&lt;br /&gt;
[http://haifux.org/lectures/320/ Linux Containers and the Future Cloud] -- Rami Rosen&lt;br /&gt;
&lt;br /&gt;
--[[User:Rami|Rami]] 03:23, 23 Feb 2014 (PST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SCALE 12x talk ==&lt;br /&gt;
[[Image:Scale_12x_dodecahedron.png|left|100px]]&lt;br /&gt;
&lt;br /&gt;
'''Feb 23, 2014, Los Angeles'''&lt;br /&gt;
&lt;br /&gt;
[http://www.socallinuxexpo.org/scale12x/presentations/seven-problems-linux-containers Seven problems of Linux Containers] -- Kir Kolyshkin&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 13:00, 22 Feb 2014 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Moscow Virtualization Meetup ==&lt;br /&gt;
&lt;br /&gt;
'''15 Feb, 2014, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://tech.yandex.ru/events/yagosti/msk-feb-2014/talks/1655/ CRIU 1.0 What is next?]&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 05:55, 30 January 2014 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hangout-on-Air ==&lt;br /&gt;
[[Image:Hoa.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''18:00, 7 Feb, 2014, Online'''&lt;br /&gt;
&lt;br /&gt;
[https://plus.google.com/events/cfj8rg61m1uj6ns3pf6dd8f8me0 CRIU hopes and fears]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 10:00, 30 Jan 2014 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Summit ==&lt;br /&gt;
[[Image:Logo_lks_black.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 23-25, 2013, Edinburgh, UK'''&lt;br /&gt;
&lt;br /&gt;
A quick talk about CRIU project status. -- Pavel Emelyanov&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 10:00, 25 Oct 2013 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxCon Europe ==&lt;br /&gt;
[[Image:LinuxCon-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''October 21-23, 2013, Edinburgh, UK'''&lt;br /&gt;
&lt;br /&gt;
[http://linuxconcloudopeneu2013.sched.org/event/e0b06ed074144b5bcdb9a0b2791ff2cb?iframe=no&amp;amp;w=900&amp;amp;sidebar=yes&amp;amp;bg=no#.UhTeVGJFynw CRIU: Time and Space Travel Service for Linux Applications -- Pavel Emelyanov ]&lt;br /&gt;
&lt;br /&gt;
Slides [https://events.linuxfoundation.org/sites/events/files/slides/criu-3.11.pdf &amp;quot;CRIU:Time and Space Travel Service for Linux Applications&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 19:30, 21 Aug 2013 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxCon North America ==&lt;br /&gt;
[[Image:LinuxCon-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''September 16-18, 2013, New Orleans, LA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://linuxconcloudopenna2013.sched.org/event/91c1b43ac4c93aeafc27c91ccaed7bc5#.Ue0JsmJFwrQ CRIU: Time and Space Travel Service for Linux Applications -- Pavel Emelyanov ]&lt;br /&gt;
&lt;br /&gt;
Slides [https://events.linuxfoundation.org/sites/events/files/slides/criu-3.11.pdf &amp;quot;CRIU:Time and Space Travel Service for Linux Applications&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
--[[User:Xemul|Xemul]] 14:30, 22 July 2013 (MSK)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRIU talk at LVEE ==&lt;br /&gt;
[[Image:LVEE 2013.png‎|left|100px|link=http://lvee.org]]&lt;br /&gt;
'''27-30 June, 2013. Grodno, Belarus'''&lt;br /&gt;
&lt;br /&gt;
Linux Userspace Checkpoint/Restore: From Dreams to Reality - Andrey Vagin&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 06:05, 6 June 2013 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fedora Virtualization Day Moscow 2013==&lt;br /&gt;
[[Image:russian_fedora.png|left|100px|link=http://russianfedora.ru/]]&lt;br /&gt;
'''1 June, 2013. Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[http://russianfedora.ru/content/%D0%98%D1%82%D0%BE%D0%B3%D0%B8-fedora-virtualization-day CRIU: Checkpoint and Restore (mostly) In Userspace - Andrey Vagin] [http://mirror.yandex.ru/fedora/russianfedora/video/FedoraVirtualizationDay/04-Wagin-Part2.webm video]&lt;br /&gt;
&lt;br /&gt;
--[[User:Avagin|Avagin]] ([[User talk:Avagin|talk]]) 14:03, 5 June 2013 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRIU talk at SCALE11x ==&lt;br /&gt;
[[Image:Scale-11x.png|100px|left|link=http://www.socallinuxexpo.org/scale11x]]&lt;br /&gt;
'''22-24 February, 2013. Los Angeles, CA, USA'''&lt;br /&gt;
&lt;br /&gt;
[http://www.socallinuxexpo.org/scale11x/presentations/checkpoint-restore-live-migration-and-beyond Checkpoint, Restore, Live Migration and Beyond - Kir Kolyshkin]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 12:10, 23 January 2013 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CRIU talk at linux.conf.au ==&lt;br /&gt;
[[Image:Linux-conf-au-2013.jpg|left|link=https://lca2013.linux.org.au/]]&lt;br /&gt;
'''28 January to 2 February, 2013. Canberra, Australia'''&lt;br /&gt;
&lt;br /&gt;
[http://conf.linux.org.au/schedule/30116/view_talk?day=thursday Checkpoint and Restore: Are We There Yet? - Pavel Emelyanov]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] 12:51, 8 October 2012 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2013 ==&lt;br /&gt;
[[Image:Fosdem-2013.png|left|100px|link=https://fosdem.org/2013/]]&lt;br /&gt;
'''2 and 3 February, 2013. Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2013/schedule/event/criu_ckeckpoint_restore/ CRIU: Checkpoint and Restore (mostly) In Userspace - Andrey Vagin]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] ([[User talk:Kir|talk]]) 21:00, 22 January 2013 (EST)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LinuxCon Europe 2012 ==&lt;br /&gt;
[[Image:LinuxCon-logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 5-9, 2012, Barcelona, Spain'''&lt;br /&gt;
&lt;br /&gt;
[http://linuxconeurope2012.sched.org/event/bd32207c146c75dd5cbf165006d47e7b Checkpoint and Restore: Are We There Yet? - Pavel Emelyanov]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] 12:51, 8 October 2012 (EDT)&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== YAC 2012 ==&lt;br /&gt;
[[Image:yac_logo.jpg|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''1 Oct 2012, Moscow, Russia'''&lt;br /&gt;
&lt;br /&gt;
[https://events.yandex.ru/events/yac/2012?openTalkDescription=35-3 CRIU: more than a live migration (incl. slides and video)]&lt;br /&gt;
&lt;br /&gt;
--[[User:Kir|Kir]] 12:25, 8 October 2012 (EDT)&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5867</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5867"/>
		<updated>2026-02-07T20:20:48Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
== NVIDIA GTC 2026 ==&lt;br /&gt;
[[Image:nvidia-gtc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''17 March, 2026, San Jose, CA'''&lt;br /&gt;
&lt;br /&gt;
[https://www.nvidia.com/gtc/session-catalog/sessions/gtc26-s81424/ Achieve Truly Serverless GPUs With libfuse, CRIU, and CUDA-Checkpoint]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2026 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2026, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2026/schedule/event/F9RANH-forensic-snapshots-in-kubernetes/ Investigating Security Incidents with Forensic Snapshots in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2026/schedule/event/DTGNQS-k8s-checkpoint-restore-wg/ Introducing the Kubernetes Checkpoint Restore Working Group]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2025 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''December 12, 2025, Tokyo, Japan, [https://lpc.events/event/19/sessions/217/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2240/ Files on Unmounted Mounts]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2237/ Guarded Control Stack on arm64: Challenges in Enabling Shadow Stack Support for CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2236/ Optimizing Checkpoints with Built-in Memory Page Compression]&lt;br /&gt;
&lt;br /&gt;
== CANOPIE-HPC @ Supercomputing 2025 ==&lt;br /&gt;
[[Image:Sc25_logo.png ‎|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 17, 2025, St. Louis, MO'''&lt;br /&gt;
&lt;br /&gt;
[https://sc25.conference-program.com/presentation/?id=ws_canopie105&amp;amp;sess=sess199 Engine-Agnostic Model Hot-Swapping for Cost-Effective LLM Inference]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5866</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5866"/>
		<updated>2026-02-07T20:20:27Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
== NVIDIA GTC 2026 ==&lt;br /&gt;
[[Image:nvidia-gtc.png|left|150px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''17 March, 2026, San Jose, CA'''&lt;br /&gt;
&lt;br /&gt;
[https://www.nvidia.com/gtc/session-catalog/sessions/gtc26-s81424/ Achieve Truly Serverless GPUs With libfuse, CRIU, and CUDA-Checkpoint]&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2026 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2026, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2026/schedule/event/F9RANH-forensic-snapshots-in-kubernetes/ Investigating Security Incidents with Forensic Snapshots in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2026/schedule/event/DTGNQS-k8s-checkpoint-restore-wg/ Introducing the Kubernetes Checkpoint Restore Working Group]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2025 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''December 12, 2025, Tokyo, Japan, [https://lpc.events/event/19/sessions/217/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2240/ Files on Unmounted Mounts]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2237/ Guarded Control Stack on arm64: Challenges in Enabling Shadow Stack Support for CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2236/ Optimizing Checkpoints with Built-in Memory Page Compression]&lt;br /&gt;
&lt;br /&gt;
== CANOPIE-HPC @ Supercomputing 2025 ==&lt;br /&gt;
[[Image:Sc25_logo.png ‎|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 17, 2025, St. Louis, MO'''&lt;br /&gt;
&lt;br /&gt;
[https://sc25.conference-program.com/presentation/?id=ws_canopie105&amp;amp;sess=sess199 Engine-Agnostic Model Hot-Swapping for Cost-Effective LLM Inference]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5865</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5865"/>
		<updated>2026-02-03T13:50:05Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* Forensic Checkpointing Framework for Kubernetes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Kubernetes Operator for Automated Checkpointing ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extend the Checkpoint/Restore Operator with support for automated policy-based checkpointing.&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/checkpoint-restore/checkpoint-restore-operator Checkpoint/Restore Operator] for Kubernetes currently supports only policies and parameters that limit the number of checkpoints. This project aims to extend the current support with automated policy-based checkpointing, allowing users to define triggers for checkpoint creation, such as time-based schedules, resource thresholds (CPU, memory, I/O usage), Kubernetes events (node drain, pod eviction, preemption), and application-level signals or annotations.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Viktória Spišaková &amp;lt;spisakova@ics.muni.cz&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Forensic Checkpointing Framework for Kubernetes ===&lt;br /&gt;
&lt;br /&gt;
Kubernetes provides a highly dynamic and ephemeral environment where workloads can start and disappear very quickly and are continuously being rescheduled across different nodes in the cluster.&lt;br /&gt;
One of the key challenges with forensic investigations in Kubernetes is capturing and preserving the evidence during security incidents. This project aims to address this problem by developing a framework for efficiently capturing and preserving the state of all running applications in a container at a specific point in time, along with the associated container configurations and metadata. These artifacts would allow investigators to accurately reconstruct the events, create a timeline, and analyze security incidents without impacting the running cluster. This is an important step towards enabling forensic readiness for Kubernetes, where cluster administrators proactively ensure the environments are prepared to collect and preserve evidence before a security incident occurs.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpointctl&lt;br /&gt;
* [https://fosdem.org/2026/events/attachments/F9RANH-forensic-snapshots-in-kubernetes/slides/266249/fosdem_2_4dh73ni.pdf Investigating Security Incidents with Forensic Snapshots in Kubernetes]&lt;br /&gt;
* [https://www.cncf.io/reports/cloud-native-security-whitepaper/ Cloud Native Security Whitepaper]&lt;br /&gt;
* [https://media.defense.gov/2022/Aug/29/2003066362/-1/-1/0/CTR_KUBERNETES_HARDENING_GUIDANCE_1.2_20220829.PDF Kubernetes Hardening Guide]&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Lorena Goldoni &amp;lt;lory.goldoni@gmail.com&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enabling Checkpoint/Restore of Rootless Containers ===&lt;br /&gt;
&lt;br /&gt;
[https://rootlesscontaine.rs/ Rootless containers] are containers that can be created, run, and managed by unprivileged users. Container engines such as Podman natively support running containers in a rootless mode to improve security and usability. While checkpoint/restore functionality is already available for rootful containers and unprivileged checkpointing is possible with the &amp;lt;code&amp;gt;CAP_CHECKPOINT_RESTORE&amp;lt;/code&amp;gt; capability, container engines do not yet support native checkpointing of containers running in rootless mode. This project aims to explore and address the remaining challenges required to enable unprivileged checkpoint/restore for rootless containers.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/1930&lt;br /&gt;
* https://github.com/torvalds/linux/commit/124ea650d3072b005457faed69909221c2905a1f&lt;br /&gt;
* https://src.fedoraproject.org/rpms/criu/pull-request/10#request_diff&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memory compression ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support compression for page images&lt;br /&gt;
 &lt;br /&gt;
We would like to support memory page files compression&lt;br /&gt;
in CRIU using one of the fastest algorithms (it's matter&lt;br /&gt;
of discussion which one to choose!).&lt;br /&gt;
&lt;br /&gt;
This task does not require any Linux kernel modifications&lt;br /&gt;
and scope is limited to CRIU itself. At the same time it's&lt;br /&gt;
complex enough as we need to touch memory dump/restore codepath&lt;br /&gt;
in CRIU and also handle many corner cases like page-server and stuff.&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files on detached mounts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Initial support of open files on &amp;quot;detached&amp;quot; mounts&lt;br /&gt;
&lt;br /&gt;
When criu dumps a process with an open fd on a file, it gets the mount identifier (mnt_id) via /proc/&amp;lt;pid&amp;gt;/fdinfo/&amp;lt;fd&amp;gt;, so that criu knows from which exact mount the file was initially opened. This way criu can restore this fd by opening the same exact file from topologically the same mount in restored mount tree.&lt;br /&gt;
&lt;br /&gt;
Restoring fd from the right mount can be important in different cases, for instance if the process would later want to resolve paths relative to the fd, and obviously resolving from the same file on different mount can lead to different resolved paths, or if the process wants to check path to the file via /proc/&amp;lt;pid&amp;gt;/fd/&amp;lt;fd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
But we have a problem finding on which mount we need to reopen the file at restore if we only know mnt_id but can't find this mnt_id in /proc/&amp;lt;pid&amp;gt;/mountinfo.&lt;br /&gt;
&lt;br /&gt;
Mountinfo file shows the mount tree topology of current mntns: parent - child relations, sharing group information, mountpoint and fs root information. And if we don't see mnt_id in it we don't know anything about this mount.&lt;br /&gt;
&lt;br /&gt;
This can happen in two cases&lt;br /&gt;
&lt;br /&gt;
* 1) external mount or file - if file was opened from e.g. host it's mount would not be visible in container mountinfo&lt;br /&gt;
* 2) mount was lazily unmounted&lt;br /&gt;
&lt;br /&gt;
In case of 1) we have criu options to help criu handle external dependencies.&lt;br /&gt;
&lt;br /&gt;
In case of 2) or no options provided criu can't resolve mnt_id in mountinfo and criu fails.&lt;br /&gt;
&lt;br /&gt;
'''Solution:'''&lt;br /&gt;
We can handle 2) with: resolving major/minor via fstat, using name_to_handle_at and open_by_handle_at to open same file on any other available mount from same superblock (same major/minor) in container. Now we have fd2 of the same file as fd, but on existing mount we can dump it as usual instead, and mark it as &amp;quot;detached&amp;quot; in image, now criu on restore knows where to find this file, but instead of just opening fd2 from actually restored mount, we create a temporary bindmount which is lazy unmounted just after open making the file appear as a file on detached mount.&lt;br /&gt;
&lt;br /&gt;
Known problems with this approach:&lt;br /&gt;
&lt;br /&gt;
* Stat on btrfs gives wrong major/minor&lt;br /&gt;
* file handles does not work everywhere&lt;br /&gt;
* file handles can return fd2 on deleted file or on other hardlink, this needs special handling.&lt;br /&gt;
&lt;br /&gt;
Additionally (optional part):&lt;br /&gt;
We can export real major/minor in fdinfo (kernel).&lt;br /&gt;
We can think of new kernel interface to get mount's major/minor and root (shift from fsroot) for detached mounts, if we have it we don't need file handle hack to find file on other mount (see fsinfo or getvalues kernel patches in LKML, can we add this info there?).&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentor: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5864</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5864"/>
		<updated>2026-02-03T13:27:44Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Kubernetes Operator for Automated Checkpointing ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extend the Checkpoint/Restore Operator with support for automated policy-based checkpointing.&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/checkpoint-restore/checkpoint-restore-operator Checkpoint/Restore Operator] for Kubernetes currently supports only policies and parameters that limit the number of checkpoints. This project aims to extend the current support with automated policy-based checkpointing, allowing users to define triggers for checkpoint creation, such as time-based schedules, resource thresholds (CPU, memory, I/O usage), Kubernetes events (node drain, pod eviction, preemption), and application-level signals or annotations.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Viktória Spišaková &amp;lt;spisakova@ics.muni.cz&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Forensic Checkpointing Framework for Kubernetes ===&lt;br /&gt;
&lt;br /&gt;
Kubernetes provides a highly dynamic and ephemeral environment where workloads can start and disappear very quickly and are continuously being rescheduled across different nodes in the cluster.&lt;br /&gt;
One of the key challenges with forensic investigations in Kubernetes is capturing and preserving the evidence during security incidents. This project aims to address this problem by developing a framework for efficiently capturing and preserving the state of all running applications in a container at a specific point in time, along with the associated container configurations and metadata. These artifacts would allow investigators to accurately reconstruct the events, create a timeline, and analyze security incidents without impacting the running cluster. This is an important step towards enabling forensic readiness for Kubernetes, where cluster administrators proactively ensure the environments are prepared to collect and preserve evidence before a security incident occurs.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [https://fosdem.org/2026/schedule/event/F9RANH-forensic-snapshots-in-kubernetes/ Investigating Security Incidents with Forensic Snapshots in Kubernetes]&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpointctl&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Lorena Goldoni &amp;lt;lory.goldoni@gmail.com&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enabling Checkpoint/Restore of Rootless Containers ===&lt;br /&gt;
&lt;br /&gt;
[https://rootlesscontaine.rs/ Rootless containers] are containers that can be created, run, and managed by unprivileged users. Container engines such as Podman natively support running containers in a rootless mode to improve security and usability. While checkpoint/restore functionality is already available for rootful containers and unprivileged checkpointing is possible with the &amp;lt;code&amp;gt;CAP_CHECKPOINT_RESTORE&amp;lt;/code&amp;gt; capability, container engines do not yet support native checkpointing of containers running in rootless mode. This project aims to explore and address the remaining challenges required to enable unprivileged checkpoint/restore for rootless containers.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/1930&lt;br /&gt;
* https://github.com/torvalds/linux/commit/124ea650d3072b005457faed69909221c2905a1f&lt;br /&gt;
* https://src.fedoraproject.org/rpms/criu/pull-request/10#request_diff&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memory compression ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support compression for page images&lt;br /&gt;
 &lt;br /&gt;
We would like to support memory page files compression&lt;br /&gt;
in CRIU using one of the fastest algorithms (it's matter&lt;br /&gt;
of discussion which one to choose!).&lt;br /&gt;
&lt;br /&gt;
This task does not require any Linux kernel modifications&lt;br /&gt;
and scope is limited to CRIU itself. At the same time it's&lt;br /&gt;
complex enough as we need to touch memory dump/restore codepath&lt;br /&gt;
in CRIU and also handle many corner cases like page-server and stuff.&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files on detached mounts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Initial support of open files on &amp;quot;detached&amp;quot; mounts&lt;br /&gt;
&lt;br /&gt;
When criu dumps a process with an open fd on a file, it gets the mount identifier (mnt_id) via /proc/&amp;lt;pid&amp;gt;/fdinfo/&amp;lt;fd&amp;gt;, so that criu knows from which exact mount the file was initially opened. This way criu can restore this fd by opening the same exact file from topologically the same mount in restored mount tree.&lt;br /&gt;
&lt;br /&gt;
Restoring fd from the right mount can be important in different cases, for instance if the process would later want to resolve paths relative to the fd, and obviously resolving from the same file on different mount can lead to different resolved paths, or if the process wants to check path to the file via /proc/&amp;lt;pid&amp;gt;/fd/&amp;lt;fd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
But we have a problem finding on which mount we need to reopen the file at restore if we only know mnt_id but can't find this mnt_id in /proc/&amp;lt;pid&amp;gt;/mountinfo.&lt;br /&gt;
&lt;br /&gt;
Mountinfo file shows the mount tree topology of current mntns: parent - child relations, sharing group information, mountpoint and fs root information. And if we don't see mnt_id in it we don't know anything about this mount.&lt;br /&gt;
&lt;br /&gt;
This can happen in two cases&lt;br /&gt;
&lt;br /&gt;
* 1) external mount or file - if file was opened from e.g. host it's mount would not be visible in container mountinfo&lt;br /&gt;
* 2) mount was lazily unmounted&lt;br /&gt;
&lt;br /&gt;
In case of 1) we have criu options to help criu handle external dependencies.&lt;br /&gt;
&lt;br /&gt;
In case of 2) or no options provided criu can't resolve mnt_id in mountinfo and criu fails.&lt;br /&gt;
&lt;br /&gt;
'''Solution:'''&lt;br /&gt;
We can handle 2) with: resolving major/minor via fstat, using name_to_handle_at and open_by_handle_at to open same file on any other available mount from same superblock (same major/minor) in container. Now we have fd2 of the same file as fd, but on existing mount we can dump it as usual instead, and mark it as &amp;quot;detached&amp;quot; in image, now criu on restore knows where to find this file, but instead of just opening fd2 from actually restored mount, we create a temporary bindmount which is lazy unmounted just after open making the file appear as a file on detached mount.&lt;br /&gt;
&lt;br /&gt;
Known problems with this approach:&lt;br /&gt;
&lt;br /&gt;
* Stat on btrfs gives wrong major/minor&lt;br /&gt;
* file handles does not work everywhere&lt;br /&gt;
* file handles can return fd2 on deleted file or on other hardlink, this needs special handling.&lt;br /&gt;
&lt;br /&gt;
Additionally (optional part):&lt;br /&gt;
We can export real major/minor in fdinfo (kernel).&lt;br /&gt;
We can think of new kernel interface to get mount's major/minor and root (shift from fsroot) for detached mounts, if we have it we don't need file handle hack to find file on other mount (see fsinfo or getvalues kernel patches in LKML, can we add this info there?).&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentor: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5863</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5863"/>
		<updated>2026-01-30T23:45:14Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* Checkpoint/Restore of Rootless Containers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Kubernetes Operator for Automated Checkpointing ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extend the Checkpoint/Restore Operator with support for automated policy-based checkpointing.&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/checkpoint-restore/checkpoint-restore-operator Checkpoint/Restore Operator] for Kubernetes currently supports only policies and parameters that limit the number of checkpoints. This project aims to extend the current support with automated policy-based checkpointing, allowing users to define triggers for checkpoint creation, such as time-based schedules, resource thresholds (CPU, memory, I/O usage), Kubernetes events (node drain, pod eviction, preemption), and application-level signals or annotations.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Viktória Spišaková &amp;lt;spisakova@ics.muni.cz&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Enabling Checkpoint/Restore of Rootless Containers ===&lt;br /&gt;
&lt;br /&gt;
[https://rootlesscontaine.rs/ Rootless containers] are containers that can be created, run, and managed by unprivileged users. Container engines such as Podman natively support running containers in a rootless mode to improve security and usability. While checkpoint/restore functionality is already available for rootful containers and unprivileged checkpointing is possible with the &amp;lt;code&amp;gt;CAP_CHECKPOINT_RESTORE&amp;lt;/code&amp;gt; capability, container engines do not yet support native checkpointing of containers running in rootless mode. This project aims to explore and address the remaining challenges required to enable unprivileged checkpoint/restore for rootless containers.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/1930&lt;br /&gt;
* https://github.com/torvalds/linux/commit/124ea650d3072b005457faed69909221c2905a1f&lt;br /&gt;
* https://src.fedoraproject.org/rpms/criu/pull-request/10#request_diff&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memory compression ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support compression for page images&lt;br /&gt;
 &lt;br /&gt;
We would like to support memory page files compression&lt;br /&gt;
in CRIU using one of the fastest algorithms (it's matter&lt;br /&gt;
of discussion which one to choose!).&lt;br /&gt;
&lt;br /&gt;
This task does not require any Linux kernel modifications&lt;br /&gt;
and scope is limited to CRIU itself. At the same time it's&lt;br /&gt;
complex enough as we need to touch memory dump/restore codepath&lt;br /&gt;
in CRIU and also handle many corner cases like page-server and stuff.&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files on detached mounts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Initial support of open files on &amp;quot;detached&amp;quot; mounts&lt;br /&gt;
&lt;br /&gt;
When criu dumps a process with an open fd on a file, it gets the mount identifier (mnt_id) via /proc/&amp;lt;pid&amp;gt;/fdinfo/&amp;lt;fd&amp;gt;, so that criu knows from which exact mount the file was initially opened. This way criu can restore this fd by opening the same exact file from topologically the same mount in restored mount tree.&lt;br /&gt;
&lt;br /&gt;
Restoring fd from the right mount can be important in different cases, for instance if the process would later want to resolve paths relative to the fd, and obviously resolving from the same file on different mount can lead to different resolved paths, or if the process wants to check path to the file via /proc/&amp;lt;pid&amp;gt;/fd/&amp;lt;fd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
But we have a problem finding on which mount we need to reopen the file at restore if we only know mnt_id but can't find this mnt_id in /proc/&amp;lt;pid&amp;gt;/mountinfo.&lt;br /&gt;
&lt;br /&gt;
Mountinfo file shows the mount tree topology of current mntns: parent - child relations, sharing group information, mountpoint and fs root information. And if we don't see mnt_id in it we don't know anything about this mount.&lt;br /&gt;
&lt;br /&gt;
This can happen in two cases&lt;br /&gt;
&lt;br /&gt;
* 1) external mount or file - if file was opened from e.g. host it's mount would not be visible in container mountinfo&lt;br /&gt;
* 2) mount was lazily unmounted&lt;br /&gt;
&lt;br /&gt;
In case of 1) we have criu options to help criu handle external dependencies.&lt;br /&gt;
&lt;br /&gt;
In case of 2) or no options provided criu can't resolve mnt_id in mountinfo and criu fails.&lt;br /&gt;
&lt;br /&gt;
'''Solution:'''&lt;br /&gt;
We can handle 2) with: resolving major/minor via fstat, using name_to_handle_at and open_by_handle_at to open same file on any other available mount from same superblock (same major/minor) in container. Now we have fd2 of the same file as fd, but on existing mount we can dump it as usual instead, and mark it as &amp;quot;detached&amp;quot; in image, now criu on restore knows where to find this file, but instead of just opening fd2 from actually restored mount, we create a temporary bindmount which is lazy unmounted just after open making the file appear as a file on detached mount.&lt;br /&gt;
&lt;br /&gt;
Known problems with this approach:&lt;br /&gt;
&lt;br /&gt;
* Stat on btrfs gives wrong major/minor&lt;br /&gt;
* file handles does not work everywhere&lt;br /&gt;
* file handles can return fd2 on deleted file or on other hardlink, this needs special handling.&lt;br /&gt;
&lt;br /&gt;
Additionally (optional part):&lt;br /&gt;
We can export real major/minor in fdinfo (kernel).&lt;br /&gt;
We can think of new kernel interface to get mount's major/minor and root (shift from fsroot) for detached mounts, if we have it we don't need file handle hack to find file on other mount (see fsinfo or getvalues kernel patches in LKML, can we add this info there?).&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentor: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5862</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5862"/>
		<updated>2026-01-30T23:44:49Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* Project ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Kubernetes Operator for Automated Checkpointing ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extend the Checkpoint/Restore Operator with support for automated policy-based checkpointing.&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/checkpoint-restore/checkpoint-restore-operator Checkpoint/Restore Operator] for Kubernetes currently supports only policies and parameters that limit the number of checkpoints. This project aims to extend the current support with automated policy-based checkpointing, allowing users to define triggers for checkpoint creation, such as time-based schedules, resource thresholds (CPU, memory, I/O usage), Kubernetes events (node drain, pod eviction, preemption), and application-level signals or annotations.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Viktória Spišaková &amp;lt;spisakova@ics.muni.cz&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint/Restore of Rootless Containers ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Enabling checkpoint and restore support for rootless containers.&lt;br /&gt;
&lt;br /&gt;
[https://rootlesscontaine.rs/ Rootless containers] are containers that can be created, run, and managed by unprivileged users. Container engines such as Podman natively support running containers in a rootless mode to improve security and usability. While checkpoint/restore functionality is already available for rootful containers and unprivileged checkpointing is possible with the &amp;lt;code&amp;gt;CAP_CHECKPOINT_RESTORE&amp;lt;/code&amp;gt; capability, container engines do not yet support native checkpointing of containers running in rootless mode. This project aims to explore and address the remaining challenges required to enable unprivileged checkpoint/restore for rootless containers.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/1930&lt;br /&gt;
* https://github.com/torvalds/linux/commit/124ea650d3072b005457faed69909221c2905a1f&lt;br /&gt;
* https://src.fedoraproject.org/rpms/criu/pull-request/10#request_diff&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memory compression ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support compression for page images&lt;br /&gt;
 &lt;br /&gt;
We would like to support memory page files compression&lt;br /&gt;
in CRIU using one of the fastest algorithms (it's matter&lt;br /&gt;
of discussion which one to choose!).&lt;br /&gt;
&lt;br /&gt;
This task does not require any Linux kernel modifications&lt;br /&gt;
and scope is limited to CRIU itself. At the same time it's&lt;br /&gt;
complex enough as we need to touch memory dump/restore codepath&lt;br /&gt;
in CRIU and also handle many corner cases like page-server and stuff.&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files on detached mounts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Initial support of open files on &amp;quot;detached&amp;quot; mounts&lt;br /&gt;
&lt;br /&gt;
When criu dumps a process with an open fd on a file, it gets the mount identifier (mnt_id) via /proc/&amp;lt;pid&amp;gt;/fdinfo/&amp;lt;fd&amp;gt;, so that criu knows from which exact mount the file was initially opened. This way criu can restore this fd by opening the same exact file from topologically the same mount in restored mount tree.&lt;br /&gt;
&lt;br /&gt;
Restoring fd from the right mount can be important in different cases, for instance if the process would later want to resolve paths relative to the fd, and obviously resolving from the same file on different mount can lead to different resolved paths, or if the process wants to check path to the file via /proc/&amp;lt;pid&amp;gt;/fd/&amp;lt;fd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
But we have a problem finding on which mount we need to reopen the file at restore if we only know mnt_id but can't find this mnt_id in /proc/&amp;lt;pid&amp;gt;/mountinfo.&lt;br /&gt;
&lt;br /&gt;
Mountinfo file shows the mount tree topology of current mntns: parent - child relations, sharing group information, mountpoint and fs root information. And if we don't see mnt_id in it we don't know anything about this mount.&lt;br /&gt;
&lt;br /&gt;
This can happen in two cases&lt;br /&gt;
&lt;br /&gt;
* 1) external mount or file - if file was opened from e.g. host it's mount would not be visible in container mountinfo&lt;br /&gt;
* 2) mount was lazily unmounted&lt;br /&gt;
&lt;br /&gt;
In case of 1) we have criu options to help criu handle external dependencies.&lt;br /&gt;
&lt;br /&gt;
In case of 2) or no options provided criu can't resolve mnt_id in mountinfo and criu fails.&lt;br /&gt;
&lt;br /&gt;
'''Solution:'''&lt;br /&gt;
We can handle 2) with: resolving major/minor via fstat, using name_to_handle_at and open_by_handle_at to open same file on any other available mount from same superblock (same major/minor) in container. Now we have fd2 of the same file as fd, but on existing mount we can dump it as usual instead, and mark it as &amp;quot;detached&amp;quot; in image, now criu on restore knows where to find this file, but instead of just opening fd2 from actually restored mount, we create a temporary bindmount which is lazy unmounted just after open making the file appear as a file on detached mount.&lt;br /&gt;
&lt;br /&gt;
Known problems with this approach:&lt;br /&gt;
&lt;br /&gt;
* Stat on btrfs gives wrong major/minor&lt;br /&gt;
* file handles does not work everywhere&lt;br /&gt;
* file handles can return fd2 on deleted file or on other hardlink, this needs special handling.&lt;br /&gt;
&lt;br /&gt;
Additionally (optional part):&lt;br /&gt;
We can export real major/minor in fdinfo (kernel).&lt;br /&gt;
We can think of new kernel interface to get mount's major/minor and root (shift from fsroot) for detached mounts, if we have it we don't need file handle hack to find file on other mount (see fsinfo or getvalues kernel patches in LKML, can we add this info there?).&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentor: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5861</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5861"/>
		<updated>2026-01-30T23:42:23Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Automated Policy-Driven Checkpointing Operator for Kubernetes ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extend the Checkpoint/Restore Operator with support for automated policy-based checkpointing.&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/checkpoint-restore/checkpoint-restore-operator Checkpoint/Restore Operator] for Kubernetes currently supports only policies and parameters that limit the number of checkpoints. This project aims to extend the current support with automated policy-based checkpointing, allowing users to define triggers for checkpoint creation, such as time-based schedules, resource thresholds (CPU, memory, I/O usage), Kubernetes events (node drain, pod eviction, preemption), and application-level signals or annotations.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Viktória Spišaková &amp;lt;spisakova@ics.muni.cz&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint/Restore of Rootless Containers ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Enabling checkpoint and restore support for rootless containers.&lt;br /&gt;
&lt;br /&gt;
[https://rootlesscontaine.rs/ Rootless containers] are containers that can be created, run, and managed by unprivileged users. Container engines such as Podman natively support running containers in a rootless mode to improve security and usability. While checkpoint/restore functionality is already available for rootful containers and unprivileged checkpointing is possible with the &amp;lt;code&amp;gt;CAP_CHECKPOINT_RESTORE&amp;lt;/code&amp;gt; capability, container engines do not yet support native checkpointing of containers running in rootless mode. This project aims to explore and address the remaining challenges required to enable unprivileged checkpoint/restore for rootless containers.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/1930&lt;br /&gt;
* https://github.com/torvalds/linux/commit/124ea650d3072b005457faed69909221c2905a1f&lt;br /&gt;
* https://src.fedoraproject.org/rpms/criu/pull-request/10#request_diff&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memory compression ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support compression for page images&lt;br /&gt;
 &lt;br /&gt;
We would like to support memory page files compression&lt;br /&gt;
in CRIU using one of the fastest algorithms (it's matter&lt;br /&gt;
of discussion which one to choose!).&lt;br /&gt;
&lt;br /&gt;
This task does not require any Linux kernel modifications&lt;br /&gt;
and scope is limited to CRIU itself. At the same time it's&lt;br /&gt;
complex enough as we need to touch memory dump/restore codepath&lt;br /&gt;
in CRIU and also handle many corner cases like page-server and stuff.&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files on detached mounts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Initial support of open files on &amp;quot;detached&amp;quot; mounts&lt;br /&gt;
&lt;br /&gt;
When criu dumps a process with an open fd on a file, it gets the mount identifier (mnt_id) via /proc/&amp;lt;pid&amp;gt;/fdinfo/&amp;lt;fd&amp;gt;, so that criu knows from which exact mount the file was initially opened. This way criu can restore this fd by opening the same exact file from topologically the same mount in restored mount tree.&lt;br /&gt;
&lt;br /&gt;
Restoring fd from the right mount can be important in different cases, for instance if the process would later want to resolve paths relative to the fd, and obviously resolving from the same file on different mount can lead to different resolved paths, or if the process wants to check path to the file via /proc/&amp;lt;pid&amp;gt;/fd/&amp;lt;fd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
But we have a problem finding on which mount we need to reopen the file at restore if we only know mnt_id but can't find this mnt_id in /proc/&amp;lt;pid&amp;gt;/mountinfo.&lt;br /&gt;
&lt;br /&gt;
Mountinfo file shows the mount tree topology of current mntns: parent - child relations, sharing group information, mountpoint and fs root information. And if we don't see mnt_id in it we don't know anything about this mount.&lt;br /&gt;
&lt;br /&gt;
This can happen in two cases&lt;br /&gt;
&lt;br /&gt;
* 1) external mount or file - if file was opened from e.g. host it's mount would not be visible in container mountinfo&lt;br /&gt;
* 2) mount was lazily unmounted&lt;br /&gt;
&lt;br /&gt;
In case of 1) we have criu options to help criu handle external dependencies.&lt;br /&gt;
&lt;br /&gt;
In case of 2) or no options provided criu can't resolve mnt_id in mountinfo and criu fails.&lt;br /&gt;
&lt;br /&gt;
'''Solution:'''&lt;br /&gt;
We can handle 2) with: resolving major/minor via fstat, using name_to_handle_at and open_by_handle_at to open same file on any other available mount from same superblock (same major/minor) in container. Now we have fd2 of the same file as fd, but on existing mount we can dump it as usual instead, and mark it as &amp;quot;detached&amp;quot; in image, now criu on restore knows where to find this file, but instead of just opening fd2 from actually restored mount, we create a temporary bindmount which is lazy unmounted just after open making the file appear as a file on detached mount.&lt;br /&gt;
&lt;br /&gt;
Known problems with this approach:&lt;br /&gt;
&lt;br /&gt;
* Stat on btrfs gives wrong major/minor&lt;br /&gt;
* file handles does not work everywhere&lt;br /&gt;
* file handles can return fd2 on deleted file or on other hardlink, this needs special handling.&lt;br /&gt;
&lt;br /&gt;
Additionally (optional part):&lt;br /&gt;
We can export real major/minor in fdinfo (kernel).&lt;br /&gt;
We can think of new kernel interface to get mount's major/minor and root (shift from fsroot) for detached mounts, if we have it we don't need file handle hack to find file on other mount (see fsinfo or getvalues kernel patches in LKML, can we add this info there?).&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentor: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5860</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5860"/>
		<updated>2026-01-30T23:41:41Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Automated Policy-Driven Checkpointing Operator for Kubernetes ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extend the Checkpoint/Restore Operator with support for automated policy-based checkpointing.&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/checkpoint-restore/checkpoint-restore-operator Checkpoint/Restore Operator] for Kubernetes currently supports only policies and parameters that limit the number of checkpoints. This project aims to extend the current support with automated policy-based checkpointing, allowing users to define triggers for checkpoint creation, such as time-based schedules, resource thresholds (CPU, memory, I/O usage), Kubernetes events (node drain, pod eviction, preemption), and application-level signals or annotations.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Viktória Spišaková &amp;lt;spisakova@ics.muni.cz&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checkpoint/Restore of Rootless Containers ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Enabling checkpoint and restore support for rootless containers.&lt;br /&gt;
&lt;br /&gt;
[https://rootlesscontaine.rs/ Rootless containers] are containers that can be created, run, and managed by unprivileged users. Container engines such as Podman natively support running containers in a rootless mode to improve security and usability. While checkpoint/restore functionality is already available for rootful containers and unprivileged checkpointing is possible with the &amp;lt;code&amp;gt;CAP_CHECKPOINT_RESTORE&amp;lt;/code&amp;gt; capability, container engines do not yet support native checkpointing of containers running in rootless mode. This project aims to explore and address the remaining challenges required to enable unprivileged checkpoint/restore for rootless containers.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/1930&lt;br /&gt;
* https://github.com/torvalds/linux/commit/124ea650d3072b005457faed69909221c2905a1f&lt;br /&gt;
* https://src.fedoraproject.org/rpms/criu/pull-request/10#request_diff&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memory compression ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support compression for page images&lt;br /&gt;
 &lt;br /&gt;
We would like to support memory page files compression&lt;br /&gt;
in CRIU using one of the fastest algorithms (it's matter&lt;br /&gt;
of discussion which one to choose!).&lt;br /&gt;
&lt;br /&gt;
This task does not require any Linux kernel modifications&lt;br /&gt;
and scope is limited to CRIU itself. At the same time it's&lt;br /&gt;
complex enough as we need to touch memory dump/restore codepath&lt;br /&gt;
in CRIU and also handle many corner cases like page-server and stuff.&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files on detached mounts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Initial support of open files on &amp;quot;detached&amp;quot; mounts&lt;br /&gt;
&lt;br /&gt;
When criu dumps a process with an open fd on a file, it gets the mount identifier (mnt_id) via /proc/&amp;lt;pid&amp;gt;/fdinfo/&amp;lt;fd&amp;gt;, so that criu knows from which exact mount the file was initially opened. This way criu can restore this fd by opening the same exact file from topologically the same mount in restored mount tree.&lt;br /&gt;
&lt;br /&gt;
Restoring fd from the right mount can be important in different cases, for instance if the process would later want to resolve paths relative to the fd, and obviously resolving from the same file on different mount can lead to different resolved paths, or if the process wants to check path to the file via /proc/&amp;lt;pid&amp;gt;/fd/&amp;lt;fd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
But we have a problem finding on which mount we need to reopen the file at restore if we only know mnt_id but can't find this mnt_id in /proc/&amp;lt;pid&amp;gt;/mountinfo.&lt;br /&gt;
&lt;br /&gt;
Mountinfo file shows the mount tree topology of current mntns: parent - child relations, sharing group information, mountpoint and fs root information. And if we don't see mnt_id in it we don't know anything about this mount.&lt;br /&gt;
&lt;br /&gt;
This can happen in two cases&lt;br /&gt;
&lt;br /&gt;
* 1) external mount or file - if file was opened from e.g. host it's mount would not be visible in container mountinfo&lt;br /&gt;
* 2) mount was lazily unmounted&lt;br /&gt;
&lt;br /&gt;
In case of 1) we have criu options to help criu handle external dependencies.&lt;br /&gt;
&lt;br /&gt;
In case of 2) or no options provided criu can't resolve mnt_id in mountinfo and criu fails.&lt;br /&gt;
&lt;br /&gt;
'''Solution:'''&lt;br /&gt;
We can handle 2) with: resolving major/minor via fstat, using name_to_handle_at and open_by_handle_at to open same file on any other available mount from same superblock (same major/minor) in container. Now we have fd2 of the same file as fd, but on existing mount we can dump it as usual instead, and mark it as &amp;quot;detached&amp;quot; in image, now criu on restore knows where to find this file, but instead of just opening fd2 from actually restored mount, we create a temporary bindmount which is lazy unmounted just after open making the file appear as a file on detached mount.&lt;br /&gt;
&lt;br /&gt;
Known problems with this approach:&lt;br /&gt;
&lt;br /&gt;
* Stat on btrfs gives wrong major/minor&lt;br /&gt;
* file handles does not work everywhere&lt;br /&gt;
* file handles can return fd2 on deleted file or on other hardlink, this needs special handling.&lt;br /&gt;
&lt;br /&gt;
Additionally (optional part):&lt;br /&gt;
We can export real major/minor in fdinfo (kernel).&lt;br /&gt;
We can think of new kernel interface to get mount's major/minor and root (shift from fsroot) for detached mounts, if we have it we don't need file handle hack to find file on other mount (see fsinfo or getvalues kernel patches in LKML, can we add this info there?).&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentor: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5859</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5859"/>
		<updated>2026-01-30T18:33:10Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* Automated Policy-Driven Checkpointing Operator for Kubernetes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Automated Policy-Driven Checkpointing Operator for Kubernetes ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extend the Checkpoint/Restore Operator with support for automated policy-based checkpointing.&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/checkpoint-restore/checkpoint-restore-operator Checkpoint/Restore Operator] for Kubernetes currently supports only policies and parameters that limit the number of checkpoints. This project aims to extend the current support with automated policy-based checkpointing, allowing users to define triggers for checkpoint creation, such as time-based schedules, resource thresholds (CPU, memory, I/O usage), Kubernetes events (node drain, pod eviction, preemption), and application-level signals or annotations.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Viktória Spišaková &amp;lt;spisakova@ics.muni.cz&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memory compression ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support compression for page images&lt;br /&gt;
 &lt;br /&gt;
We would like to support memory page files compression&lt;br /&gt;
in CRIU using one of the fastest algorithms (it's matter&lt;br /&gt;
of discussion which one to choose!).&lt;br /&gt;
&lt;br /&gt;
This task does not require any Linux kernel modifications&lt;br /&gt;
and scope is limited to CRIU itself. At the same time it's&lt;br /&gt;
complex enough as we need to touch memory dump/restore codepath&lt;br /&gt;
in CRIU and also handle many corner cases like page-server and stuff.&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files on detached mounts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Initial support of open files on &amp;quot;detached&amp;quot; mounts&lt;br /&gt;
&lt;br /&gt;
When criu dumps a process with an open fd on a file, it gets the mount identifier (mnt_id) via /proc/&amp;lt;pid&amp;gt;/fdinfo/&amp;lt;fd&amp;gt;, so that criu knows from which exact mount the file was initially opened. This way criu can restore this fd by opening the same exact file from topologically the same mount in restored mount tree.&lt;br /&gt;
&lt;br /&gt;
Restoring fd from the right mount can be important in different cases, for instance if the process would later want to resolve paths relative to the fd, and obviously resolving from the same file on different mount can lead to different resolved paths, or if the process wants to check path to the file via /proc/&amp;lt;pid&amp;gt;/fd/&amp;lt;fd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
But we have a problem finding on which mount we need to reopen the file at restore if we only know mnt_id but can't find this mnt_id in /proc/&amp;lt;pid&amp;gt;/mountinfo.&lt;br /&gt;
&lt;br /&gt;
Mountinfo file shows the mount tree topology of current mntns: parent - child relations, sharing group information, mountpoint and fs root information. And if we don't see mnt_id in it we don't know anything about this mount.&lt;br /&gt;
&lt;br /&gt;
This can happen in two cases&lt;br /&gt;
&lt;br /&gt;
* 1) external mount or file - if file was opened from e.g. host it's mount would not be visible in container mountinfo&lt;br /&gt;
* 2) mount was lazily unmounted&lt;br /&gt;
&lt;br /&gt;
In case of 1) we have criu options to help criu handle external dependencies.&lt;br /&gt;
&lt;br /&gt;
In case of 2) or no options provided criu can't resolve mnt_id in mountinfo and criu fails.&lt;br /&gt;
&lt;br /&gt;
'''Solution:'''&lt;br /&gt;
We can handle 2) with: resolving major/minor via fstat, using name_to_handle_at and open_by_handle_at to open same file on any other available mount from same superblock (same major/minor) in container. Now we have fd2 of the same file as fd, but on existing mount we can dump it as usual instead, and mark it as &amp;quot;detached&amp;quot; in image, now criu on restore knows where to find this file, but instead of just opening fd2 from actually restored mount, we create a temporary bindmount which is lazy unmounted just after open making the file appear as a file on detached mount.&lt;br /&gt;
&lt;br /&gt;
Known problems with this approach:&lt;br /&gt;
&lt;br /&gt;
* Stat on btrfs gives wrong major/minor&lt;br /&gt;
* file handles does not work everywhere&lt;br /&gt;
* file handles can return fd2 on deleted file or on other hardlink, this needs special handling.&lt;br /&gt;
&lt;br /&gt;
Additionally (optional part):&lt;br /&gt;
We can export real major/minor in fdinfo (kernel).&lt;br /&gt;
We can think of new kernel interface to get mount's major/minor and root (shift from fsroot) for detached mounts, if we have it we don't need file handle hack to find file on other mount (see fsinfo or getvalues kernel patches in LKML, can we add this info there?).&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentor: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5858</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5858"/>
		<updated>2026-01-30T18:32:39Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* Automated Policy-Driven Checkpointing Operator for Kubernetes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Automated Policy-Driven Checkpointing Operator for Kubernetes ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extend the Checkpoint/Restore Operator with support for automated policy-based checkpointing.&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/checkpoint-restore/checkpoint-restore-operator Checkpoint/Restore Operator] for Kubernetes currently supports only policies and parameters that limit the number of checkpoints. This project aims to extend the current support with automated policy-based checkpointing, allowing users to define triggers for checkpoint creation, such as time-based schedules, resource thresholds (CPU, memory, I/O usage), Kubernetes events (node drain, pod eviction, preemption), and application-level signals or annotations.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Viktória Spišaková &amp;lt;spisakova@ics.muni.cz&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memory compression ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support compression for page images&lt;br /&gt;
 &lt;br /&gt;
We would like to support memory page files compression&lt;br /&gt;
in CRIU using one of the fastest algorithms (it's matter&lt;br /&gt;
of discussion which one to choose!).&lt;br /&gt;
&lt;br /&gt;
This task does not require any Linux kernel modifications&lt;br /&gt;
and scope is limited to CRIU itself. At the same time it's&lt;br /&gt;
complex enough as we need to touch memory dump/restore codepath&lt;br /&gt;
in CRIU and also handle many corner cases like page-server and stuff.&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files on detached mounts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Initial support of open files on &amp;quot;detached&amp;quot; mounts&lt;br /&gt;
&lt;br /&gt;
When criu dumps a process with an open fd on a file, it gets the mount identifier (mnt_id) via /proc/&amp;lt;pid&amp;gt;/fdinfo/&amp;lt;fd&amp;gt;, so that criu knows from which exact mount the file was initially opened. This way criu can restore this fd by opening the same exact file from topologically the same mount in restored mount tree.&lt;br /&gt;
&lt;br /&gt;
Restoring fd from the right mount can be important in different cases, for instance if the process would later want to resolve paths relative to the fd, and obviously resolving from the same file on different mount can lead to different resolved paths, or if the process wants to check path to the file via /proc/&amp;lt;pid&amp;gt;/fd/&amp;lt;fd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
But we have a problem finding on which mount we need to reopen the file at restore if we only know mnt_id but can't find this mnt_id in /proc/&amp;lt;pid&amp;gt;/mountinfo.&lt;br /&gt;
&lt;br /&gt;
Mountinfo file shows the mount tree topology of current mntns: parent - child relations, sharing group information, mountpoint and fs root information. And if we don't see mnt_id in it we don't know anything about this mount.&lt;br /&gt;
&lt;br /&gt;
This can happen in two cases&lt;br /&gt;
&lt;br /&gt;
* 1) external mount or file - if file was opened from e.g. host it's mount would not be visible in container mountinfo&lt;br /&gt;
* 2) mount was lazily unmounted&lt;br /&gt;
&lt;br /&gt;
In case of 1) we have criu options to help criu handle external dependencies.&lt;br /&gt;
&lt;br /&gt;
In case of 2) or no options provided criu can't resolve mnt_id in mountinfo and criu fails.&lt;br /&gt;
&lt;br /&gt;
'''Solution:'''&lt;br /&gt;
We can handle 2) with: resolving major/minor via fstat, using name_to_handle_at and open_by_handle_at to open same file on any other available mount from same superblock (same major/minor) in container. Now we have fd2 of the same file as fd, but on existing mount we can dump it as usual instead, and mark it as &amp;quot;detached&amp;quot; in image, now criu on restore knows where to find this file, but instead of just opening fd2 from actually restored mount, we create a temporary bindmount which is lazy unmounted just after open making the file appear as a file on detached mount.&lt;br /&gt;
&lt;br /&gt;
Known problems with this approach:&lt;br /&gt;
&lt;br /&gt;
* Stat on btrfs gives wrong major/minor&lt;br /&gt;
* file handles does not work everywhere&lt;br /&gt;
* file handles can return fd2 on deleted file or on other hardlink, this needs special handling.&lt;br /&gt;
&lt;br /&gt;
Additionally (optional part):&lt;br /&gt;
We can export real major/minor in fdinfo (kernel).&lt;br /&gt;
We can think of new kernel interface to get mount's major/minor and root (shift from fsroot) for detached mounts, if we have it we don't need file handle hack to find file on other mount (see fsinfo or getvalues kernel patches in LKML, can we add this info there?).&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentor: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5857</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5857"/>
		<updated>2026-01-30T18:31:38Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* Automated Policy-Driven Checkpointing Operator for Kubernetes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Automated Policy-Driven Checkpointing Operator for Kubernetes ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extend the Checkpoint/Restore Operator with support for automated policy-based checkpointing.&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/checkpoint-restore/checkpoint-restore-operator Checkpoint/Restore Operator] for Kubernetes currently supports only policies and parameters that limit the number of checkpoints. This project aims to extend the current support with automated policy-based checkpointing, allowing users to define triggers for checkpoint creation, such as time-based schedules, resource thresholds (CPU, memory, I/O usage), Kubernetes events (node drain, pod eviction, preemption), application-level signals or annotations.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Viktória Spišaková &amp;lt;spisakova@ics.muni.cz&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memory compression ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support compression for page images&lt;br /&gt;
 &lt;br /&gt;
We would like to support memory page files compression&lt;br /&gt;
in CRIU using one of the fastest algorithms (it's matter&lt;br /&gt;
of discussion which one to choose!).&lt;br /&gt;
&lt;br /&gt;
This task does not require any Linux kernel modifications&lt;br /&gt;
and scope is limited to CRIU itself. At the same time it's&lt;br /&gt;
complex enough as we need to touch memory dump/restore codepath&lt;br /&gt;
in CRIU and also handle many corner cases like page-server and stuff.&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files on detached mounts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Initial support of open files on &amp;quot;detached&amp;quot; mounts&lt;br /&gt;
&lt;br /&gt;
When criu dumps a process with an open fd on a file, it gets the mount identifier (mnt_id) via /proc/&amp;lt;pid&amp;gt;/fdinfo/&amp;lt;fd&amp;gt;, so that criu knows from which exact mount the file was initially opened. This way criu can restore this fd by opening the same exact file from topologically the same mount in restored mount tree.&lt;br /&gt;
&lt;br /&gt;
Restoring fd from the right mount can be important in different cases, for instance if the process would later want to resolve paths relative to the fd, and obviously resolving from the same file on different mount can lead to different resolved paths, or if the process wants to check path to the file via /proc/&amp;lt;pid&amp;gt;/fd/&amp;lt;fd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
But we have a problem finding on which mount we need to reopen the file at restore if we only know mnt_id but can't find this mnt_id in /proc/&amp;lt;pid&amp;gt;/mountinfo.&lt;br /&gt;
&lt;br /&gt;
Mountinfo file shows the mount tree topology of current mntns: parent - child relations, sharing group information, mountpoint and fs root information. And if we don't see mnt_id in it we don't know anything about this mount.&lt;br /&gt;
&lt;br /&gt;
This can happen in two cases&lt;br /&gt;
&lt;br /&gt;
* 1) external mount or file - if file was opened from e.g. host it's mount would not be visible in container mountinfo&lt;br /&gt;
* 2) mount was lazily unmounted&lt;br /&gt;
&lt;br /&gt;
In case of 1) we have criu options to help criu handle external dependencies.&lt;br /&gt;
&lt;br /&gt;
In case of 2) or no options provided criu can't resolve mnt_id in mountinfo and criu fails.&lt;br /&gt;
&lt;br /&gt;
'''Solution:'''&lt;br /&gt;
We can handle 2) with: resolving major/minor via fstat, using name_to_handle_at and open_by_handle_at to open same file on any other available mount from same superblock (same major/minor) in container. Now we have fd2 of the same file as fd, but on existing mount we can dump it as usual instead, and mark it as &amp;quot;detached&amp;quot; in image, now criu on restore knows where to find this file, but instead of just opening fd2 from actually restored mount, we create a temporary bindmount which is lazy unmounted just after open making the file appear as a file on detached mount.&lt;br /&gt;
&lt;br /&gt;
Known problems with this approach:&lt;br /&gt;
&lt;br /&gt;
* Stat on btrfs gives wrong major/minor&lt;br /&gt;
* file handles does not work everywhere&lt;br /&gt;
* file handles can return fd2 on deleted file or on other hardlink, this needs special handling.&lt;br /&gt;
&lt;br /&gt;
Additionally (optional part):&lt;br /&gt;
We can export real major/minor in fdinfo (kernel).&lt;br /&gt;
We can think of new kernel interface to get mount's major/minor and root (shift from fsroot) for detached mounts, if we have it we don't need file handle hack to find file on other mount (see fsinfo or getvalues kernel patches in LKML, can we add this info there?).&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentor: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5856</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5856"/>
		<updated>2026-01-30T18:23:15Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* Project ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Automated Policy-Driven Checkpointing Operator for Kubernetes ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extend the Checkpoint/Restore Operator with support for automated policy-based checkpointing.&lt;br /&gt;
&lt;br /&gt;
The Checkpoint/Restore Operator for Kubernetes currently supports only policies and parameters that limit the number of checkpoints. This project aims to extend it with support for automated policy-based checkpointing.&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Viktória Spišaková &amp;lt;spisakova@ics.muni.cz&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add support for memory compression ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support compression for page images&lt;br /&gt;
 &lt;br /&gt;
We would like to support memory page files compression&lt;br /&gt;
in CRIU using one of the fastest algorithms (it's matter&lt;br /&gt;
of discussion which one to choose!).&lt;br /&gt;
&lt;br /&gt;
This task does not require any Linux kernel modifications&lt;br /&gt;
and scope is limited to CRIU itself. At the same time it's&lt;br /&gt;
complex enough as we need to touch memory dump/restore codepath&lt;br /&gt;
in CRIU and also handle many corner cases like page-server and stuff.&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files on detached mounts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Initial support of open files on &amp;quot;detached&amp;quot; mounts&lt;br /&gt;
&lt;br /&gt;
When criu dumps a process with an open fd on a file, it gets the mount identifier (mnt_id) via /proc/&amp;lt;pid&amp;gt;/fdinfo/&amp;lt;fd&amp;gt;, so that criu knows from which exact mount the file was initially opened. This way criu can restore this fd by opening the same exact file from topologically the same mount in restored mount tree.&lt;br /&gt;
&lt;br /&gt;
Restoring fd from the right mount can be important in different cases, for instance if the process would later want to resolve paths relative to the fd, and obviously resolving from the same file on different mount can lead to different resolved paths, or if the process wants to check path to the file via /proc/&amp;lt;pid&amp;gt;/fd/&amp;lt;fd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
But we have a problem finding on which mount we need to reopen the file at restore if we only know mnt_id but can't find this mnt_id in /proc/&amp;lt;pid&amp;gt;/mountinfo.&lt;br /&gt;
&lt;br /&gt;
Mountinfo file shows the mount tree topology of current mntns: parent - child relations, sharing group information, mountpoint and fs root information. And if we don't see mnt_id in it we don't know anything about this mount.&lt;br /&gt;
&lt;br /&gt;
This can happen in two cases&lt;br /&gt;
&lt;br /&gt;
* 1) external mount or file - if file was opened from e.g. host it's mount would not be visible in container mountinfo&lt;br /&gt;
* 2) mount was lazily unmounted&lt;br /&gt;
&lt;br /&gt;
In case of 1) we have criu options to help criu handle external dependencies.&lt;br /&gt;
&lt;br /&gt;
In case of 2) or no options provided criu can't resolve mnt_id in mountinfo and criu fails.&lt;br /&gt;
&lt;br /&gt;
'''Solution:'''&lt;br /&gt;
We can handle 2) with: resolving major/minor via fstat, using name_to_handle_at and open_by_handle_at to open same file on any other available mount from same superblock (same major/minor) in container. Now we have fd2 of the same file as fd, but on existing mount we can dump it as usual instead, and mark it as &amp;quot;detached&amp;quot; in image, now criu on restore knows where to find this file, but instead of just opening fd2 from actually restored mount, we create a temporary bindmount which is lazy unmounted just after open making the file appear as a file on detached mount.&lt;br /&gt;
&lt;br /&gt;
Known problems with this approach:&lt;br /&gt;
&lt;br /&gt;
* Stat on btrfs gives wrong major/minor&lt;br /&gt;
* file handles does not work everywhere&lt;br /&gt;
* file handles can return fd2 on deleted file or on other hardlink, this needs special handling.&lt;br /&gt;
&lt;br /&gt;
Additionally (optional part):&lt;br /&gt;
We can export real major/minor in fdinfo (kernel).&lt;br /&gt;
We can think of new kernel interface to get mount's major/minor and root (shift from fsroot) for detached mounts, if we have it we don't need file handle hack to find file on other mount (see fsinfo or getvalues kernel patches in LKML, can we add this info there?).&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentor: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=News/events&amp;diff=5855</id>
		<title>News/events</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=News/events&amp;diff=5855"/>
		<updated>2026-01-26T18:42:00Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* KubeCon EU 2026 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt; __NOTOC__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
   This page is&lt;br /&gt;
   1. used directly (i.e. one can view it);&lt;br /&gt;
   2. included into some other pages;&lt;br /&gt;
   3. exported via RSS.&lt;br /&gt;
   Because of that, extreme care should be taken when modifying it.&lt;br /&gt;
&lt;br /&gt;
   PLEASE MAKE SURE MOST RECENT EVENTS GO FIRST&lt;br /&gt;
&lt;br /&gt;
   --kir&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This page collects into about events criu takes part in.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;startFeed/&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== KubeCon EU 2026 ==&lt;br /&gt;
[[Image:Kubecon.png|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''24-26 March, 2026, Amsterdam, Netherlands'''&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW6P Ctrl-X, Ctrl-V Your Pods: WG Checkpoint Restore in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://sched.co/2CW7Z Optimizing Error Recovery for Cost-Efficient Distributed AI Model Training with Kubernetes]&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2026 ==&lt;br /&gt;
[[Image:Fosdem.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''February 1, 2026, Brussels, Belgium'''&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2026/schedule/event/F9RANH-forensic-snapshots-in-kubernetes/ Investigating Security Incidents with Forensic Snapshots in Kubernetes]&lt;br /&gt;
&lt;br /&gt;
[https://fosdem.org/2026/schedule/event/DTGNQS-k8s-checkpoint-restore-wg/ Introducing the Kubernetes Checkpoint Restore Working Group]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Linux Plumbers Conference 2025 ==&lt;br /&gt;
[[Image:Linuxplumbers.png|left|100px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''December 12, 2025, Tokyo, Japan, [https://lpc.events/event/19/sessions/217/ Containers and Checkpoint/Restore Microconference]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2240/ Files on Unmounted Mounts]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2237/ Guarded Control Stack on arm64: Challenges in Enabling Shadow Stack Support for CRIU]&lt;br /&gt;
&lt;br /&gt;
[https://lpc.events/event/19/contributions/2236/ Optimizing Checkpoints with Built-in Memory Page Compression]&lt;br /&gt;
&lt;br /&gt;
== CANOPIE-HPC @ Supercomputing 2025 ==&lt;br /&gt;
[[Image:Sc25_logo.png ‎|left|140px|link=]]&lt;br /&gt;
&lt;br /&gt;
'''November 17, 2025, St. Louis, MO'''&lt;br /&gt;
&lt;br /&gt;
[https://sc25.conference-program.com/presentation/?id=ws_canopie105&amp;amp;sess=sess199 Engine-Agnostic Model Hot-Swapping for Cost-Effective LLM Inference]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&amp;lt;endFeed/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[News/events/past|Past events]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=GSoC_completed_projects&amp;diff=5854</id>
		<title>GSoC completed projects</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=GSoC_completed_projects&amp;diff=5854"/>
		<updated>2026-01-25T12:53:32Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Coordinated checkpointing of distributed applications ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Enable coordinated container checkpointing with Kubernetes.&lt;br /&gt;
&lt;br /&gt;
Checkpointing support has been recently introduced in Kubernetes, where the&lt;br /&gt;
smallest deployable unit is a Pod (a group of containers).  Kubernetes is often&lt;br /&gt;
used to deploy applications that are distributed across multiple nodes.&lt;br /&gt;
However, checkpointing such distributed applications requires a coordination&lt;br /&gt;
mechanism to synchronize the checkpoint and restore operations. To address this&lt;br /&gt;
challenge, we have developed a new tool called &amp;lt;code&amp;gt;criu-coordinator&amp;lt;/code&amp;gt;&lt;br /&gt;
that relies on the action-script functionality of CRIU to enable synchronization&lt;br /&gt;
in distributed environments. This project aims to extend this tool to enable&lt;br /&gt;
seamless integration with the checkpointing functionality of Kubernetes.&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/behouba Behouba Manassé]&lt;br /&gt;
* [https://github.com/behouba/gsoc-2025 Final Report]&lt;br /&gt;
* [https://docs.google.com/presentation/d/e/2PACX-1vTNV6nObjjlGwH9wR555WJVC8k1jYhTCJ9GeHsFXlRUe91YRXESPHw2GtYKzsUJ1l907z_cic6PQHio/pub Presentation Slides]&lt;br /&gt;
* [https://youtu.be/fzXDqbq2X3s Presentation Recording]&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Rust / Go / C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for arm64 Guarded Control Stack (GCS) ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support arm64 Guarded Control Stack (GCS)&lt;br /&gt;
 &lt;br /&gt;
The arm64 Guarded Control Stack (GCS) feature provides support for&lt;br /&gt;
hardware protected stacks of return addresses, intended to provide&lt;br /&gt;
hardening against return oriented programming (ROP) attacks and to make&lt;br /&gt;
it easier to gather call stacks for applications such as profiling (taken from [1]).&lt;br /&gt;
We would like to support arm64 Guarded Control Stack (GCS) in CRIU, which means&lt;br /&gt;
that CRIU should be able to Checkpoint/Restore applications using GCS.&lt;br /&gt;
&lt;br /&gt;
This task should not require any Linux kernel modifications&lt;br /&gt;
but will require a lot of effort to understand Linux kernel and&lt;br /&gt;
glibc support patches. We have a good example of support for&lt;br /&gt;
x86 shadow stack [4].&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [1] kernel support https://lore.kernel.org/all/20241001-arm64-gcs-v13-0-222b78d87eee@kernel.org&lt;br /&gt;
* [2] libc support https://inbox.sourceware.org/libc-alpha/20250117174119.3254972-1-yury.khrustalev@arm.com&lt;br /&gt;
* [3] libc tests https://inbox.sourceware.org/libc-alpha/20250210114538.1723249-1-yury.khrustalev@arm.com&lt;br /&gt;
* [4] x86 support https://github.com/checkpoint-restore/criu/pull/2306&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/svilenkov Igor Svilenkov Bozic]&lt;br /&gt;
* [https://github.com/checkpoint-restore/criu/pull/2725 Pull Request for CRIU]&lt;br /&gt;
* [https://drive.google.com/file/d/1Uoz_E5K-1zRcZwEWXKVcsNtxmdzDIpiY/view?usp=sharing Presentation Recording]&lt;br /&gt;
* Linux Plumbers Conference Talk: [https://lpc.events/event/19/contributions/2237/ Guarded Control Stack on arm64: Challenges in Enabling Shadow Stack Support for CRIU]&lt;br /&gt;
* Skill level: expert (a lot of moving parts: Linux kernel / libc / CRIU)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Mike Rapoport &amp;lt;rppt@kernel.org&amp;gt;&lt;br /&gt;
* Mentors: Mike Rapoport &amp;lt;rppt@kernel.org&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kubernetes operator for managing container checkpoints ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Develop a Kubernetes operator that automates the management of container checkpoints&lt;br /&gt;
&lt;br /&gt;
Container checkpointing has recently been introduced as an alpha feature in Kubernetes.&lt;br /&gt;
To enable this feature, the kubelet API was extended with an endpoint that enables the&lt;br /&gt;
creation of checkpoints for individual containers. By default, all container checkpoints&lt;br /&gt;
are stored as tar archives in &amp;lt;code&amp;gt;/var/lib/kubelet/checkpoints&amp;lt;/code&amp;gt; using the following&lt;br /&gt;
file name format: &amp;lt;code&amp;gt;checkpoint-&amp;lt;pod-name&amp;gt;_&amp;lt;namespace-name&amp;gt;-&amp;lt;container-name&amp;gt;-&amp;lt;timestamp&amp;gt;.tar&amp;lt;/code&amp;gt;.&lt;br /&gt;
However, the current implementation does not provide a mechanism for limiting the number&lt;br /&gt;
of checkpoints, which may lead to filling up all existing disk space. This project aims to&lt;br /&gt;
develop a Kubernetes operator that automates the management of checkpoints and provides&lt;br /&gt;
a garbage collection mechanism to discard obsolete checkpoints.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api/&lt;br /&gt;
* https://kubernetes.io/blog/2022/12/05/forensic-container-checkpointing-alpha/&lt;br /&gt;
* https://kubernetes.io/blog/2023/03/10/forensic-container-analysis/&lt;br /&gt;
* https://github.com/kubernetes/kubernetes/pull/115888&lt;br /&gt;
* https://github.com/kubernetes/enhancements/issues/2008&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/Parthiba-Hazra Parthiba Hazra]&lt;br /&gt;
* [https://github.com/Parthiba-Hazra/gsoc-2024 Final Report]&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Adrian Reber &amp;lt;areber@redhat.com&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Adrian Reber&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add support for pidfd file descriptors ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support C/R of pidfd descriptors&lt;br /&gt;
&lt;br /&gt;
There is pidfd_open syscall which allows opening&lt;br /&gt;
a special PID file descriptor. A user can send a signal to&lt;br /&gt;
the process (pidfd_send_signal syscall), wait for the process&lt;br /&gt;
(poll() on pidfd).&lt;br /&gt;
&lt;br /&gt;
At the moment CRIU can't dump processes that have pidfd's opened.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://lwn.net/Articles/801319/&lt;br /&gt;
* https://lwn.net/Articles/794707/&lt;br /&gt;
* https://github.com/torvalds/linux/blob/v5.16/kernel/fork.c#L1877&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Christian Brauner &amp;lt;christian@brauner.io&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memfd_secret file descriptors ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support C/R of memfd_secret descriptors&lt;br /&gt;
&lt;br /&gt;
There is memfd_secret syscall which allows user to open&lt;br /&gt;
special memfd which is backed by special memory range which&lt;br /&gt;
is inaccessible by another processes (and the kernel too!).&lt;br /&gt;
&lt;br /&gt;
At the moment CRIU can't dump processes that have memfd_secret's opened.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://lwn.net/Articles/865256/&lt;br /&gt;
* https://warusadura.github.io/gsoc23-final-report.html&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/2247&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Mike Rapoport &amp;lt;mike.rapoport@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Forensic analysis of container checkpoints ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extending go-crit and checkpointctl with capabilities for forensic analysis&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/checkpointctl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Go implementation of the [[crit]] tool was developed during GSoC 2022 to enable native Go–based decoding and encoding of CRIU [[images]]. In GSoC 2023, this tool was integrated with [https://github.com/checkpoint-restore/checkpointctl checkpointctl] to enable forensic analysis capabilities for container checkpoints. Behouba Manassé implemented support for memory forensics by extending the Go version of the crit tool and checkpointctl with support for parsing memory pages (&amp;lt;code&amp;gt;checkpointctl memparse&amp;lt;/code&amp;gt;), and displaying information about the command-line arguments and environment variables when analysing checkpoints with the &amp;lt;code&amp;gt;checkpointctl inspect&amp;lt;/code&amp;gt; command. Prajwal Nadig build upon his previous work during GSoC 2022, by implementing capabilities for analysing the process tree, open files, and sockets within a checkpoint, as well as introducing CI tests.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://criu.org/CRIT_(Go_library)&lt;br /&gt;
* https://github.com/checkpoint-restore/go-criu/tree/master/crit&lt;br /&gt;
* https://kubernetes.io/blog/2022/12/05/forensic-container-checkpointing-alpha/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/behouba Behouba Manassé] and [https://github.com/snprajwal Prajwal Nadig]&lt;br /&gt;
* Final Report: [https://github.com/behouba/gsoc-2023 Behouba Manassé], [https://github.com/snprajwal/gsoc-2023 Prajwal Nadig]&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restrict checks for open/mmaped files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Make sure the file opened (for fd or mapping) at restore is &amp;quot;the same&amp;quot; as it was on dump&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/pull/1123&lt;br /&gt;
&lt;br /&gt;
CRIU doesn't carry files contents (except for ghost ones) into images. Thus on dump it saves some &amp;quot;meta&amp;quot; for file to validate it's &amp;quot;the same&amp;quot; on restore. Currently this meta includes only the file size. The task is to add some cookie value that's somehow affected by file's contents. This is primarily needed to reduce the possibility to restore with wrong libraries.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://www.criu.org/Category:Files&lt;br /&gt;
* https://en.wikipedia.org/wiki/File_verification&lt;br /&gt;
&lt;br /&gt;
=== Optimize the pre-dump algorithm ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Optimize the pre-dump algorithm to avoid pinning to many memory in RAM&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/commit/98608b90de0f853b1c8a6e15b312320e1441c359 &lt;br /&gt;
&lt;br /&gt;
Current [[CLI/cmd/pre-dump|pre-dump]] mode is used to write task memory contents into image&lt;br /&gt;
files w/o stopping the task for too long. It does this by stopping the task, infecting it and&lt;br /&gt;
draining all the memory into a set of pipes. Then the task is cured, resumed and the pipes'&lt;br /&gt;
contents is written into images (maybe a [[page server]]). Unfortunately, this approach creates&lt;br /&gt;
a big stress on the memory subsystem, as keeping all memory in pipes creates a lot of unreclaimable&lt;br /&gt;
memory (pages in pipes are not swappable), as well as the number of pipes themselves can be huge, as&lt;br /&gt;
one pipe doesn't store more than a fixed amount of data (see pipe(7) man page).&lt;br /&gt;
&lt;br /&gt;
A solution for this problem is to use a sys_read_process_vm() syscall, which will mitigate&lt;br /&gt;
all of the above. To do this we need to allocate a temporary buffer in criu, then walk the&lt;br /&gt;
target process vm by copying the memory piece-by-piece into it, then flush the data into image&lt;br /&gt;
(or page server), and repeat.&lt;br /&gt;
&lt;br /&gt;
Ideally there should be sys_splice_process_vm() syscall in the kernel, that does the same as&lt;br /&gt;
the read_process_vm does, but vmsplices the data&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Memory pre dump]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/351&lt;br /&gt;
* [[Memory dumping and restoring]], [[Memory changes tracking]]&lt;br /&gt;
* [http://man7.org/linux/man-pages/man2/process_vm_readv.2.html process_vm_readv(2)] [http://man7.org/linux/man-pages/man2/vmsplice.2.html vmsplice(2)] [https://lkml.org/lkml/2018/1/9/32 RFC for splice_process_vm syscall]&lt;br /&gt;
&lt;br /&gt;
=== Porting crit functionalities in GO ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Implement image view and manipulation in Go&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/go-criu/pull/66&lt;br /&gt;
 &lt;br /&gt;
CRIU's checkpoint images are stored on disk using protobuf. For easier analysis of checkpoint files CRIU has a tool called [[CRIT|CRiu Image Tool (CRIT)]]. It can display/decode CRIU image files from binary protobuf to JSON as well as encode JSON files back to the binary format. With closer integration of CRIU in container runtimes it becomes important to be able to view the CRIU output files. Either for manipulation before restoring or for reading checkpoint statistics (memory pages written to disk, memory pages skipped, process downtime).&lt;br /&gt;
&lt;br /&gt;
Currently CRIT is implemented in Python, for easier integration in other Go projects it is important to have image manipulation and analysis available from GO. This means we need a Go based library to read/modify/write/encode/decode CRIU's image files. Based on this library a Go based implementation of CRIT would be useful.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[CRIT (Go library)]]&lt;br /&gt;
* [https://github.com/snprajwal/gsoc-2022 Final Report]&lt;br /&gt;
&lt;br /&gt;
=== Use eBPF to lock and unlock the network ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Use eBPF instead of external iptables-restore tool for network lock and unlock.&lt;br /&gt;
&lt;br /&gt;
During checkpointing and restoring CRIU locks the network to make sure no network packets are accepted by the network stack during the time the process is checkpointed. Currently CRIU calls out to iptables-restore to create and delete the corresponding iptables rules. Another approach which avoids calling out to the external binary iptables-restore would be to directly inject eBPF rules. There have been reports from users that iptables-restore fails in some way and eBPF could avoid this external dependency.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://www.criu.org/TCP_connection#Checkpoint_and_restore_TCP_connection&lt;br /&gt;
* https://github.com/systemd/systemd/blob/master/src/core/bpf-firewall.c&lt;br /&gt;
* https://blog.zeyady.com/2021-08-16/gsoc-criu&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/ZeyadYasser Zeyad Yasser]&lt;br /&gt;
* [https://github.com/checkpoint-restore/criu/pull/1539 CRIU Pull Request]&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Support sparse ghosts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' While sparse ghost files were in part supported for quiet some time, we still was not able to handle big sparse ghost files and highly fragmented sparse ghost files effectively.&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/pull/1944 https://github.com/checkpoint-restore/criu/pull/1963&lt;br /&gt;
&lt;br /&gt;
When criu dumps processes it also dumps files that are opened by them. It does this by saving file names by which the files are accessible. But sometimes files can have no names. It may happen if a task opened a file and then removed it. To dump this file criu cannot save its name (because the name doesn't exist). Instead criu saves the whole file. This is called &amp;quot;ghost file&amp;quot;. Since saving the whole file is very expensive (copying lots of data on disk) criu limits the maximum size of a ghost file. The latter is also not good, because there are &amp;quot;sparse&amp;quot; files, that are large in size, but may be small from the real disk usage perspective. The goal of the task is to support sparse ghost files, i.e. limit the size of the ghost not by its length but by disk usage and when copying the data detect the used blocks and save only those.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
 &lt;br /&gt;
*[https://en.wikipedia.org/wiki/Sparse_file Sparse files]&lt;br /&gt;
*[[Dumping files]]&lt;br /&gt;
*[[Invisible files]]&lt;br /&gt;
*[https://www.kernel.org/doc/html/latest/filesystems/fiemap.html Fiemap ioctl]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=GSoC_completed_projects&amp;diff=5853</id>
		<title>GSoC completed projects</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=GSoC_completed_projects&amp;diff=5853"/>
		<updated>2026-01-25T12:50:04Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* Forensic analysis of container checkpoints */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Coordinated checkpointing of distributed applications ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Enable coordinated container checkpointing with Kubernetes.&lt;br /&gt;
&lt;br /&gt;
Checkpointing support has been recently introduced in Kubernetes, where the&lt;br /&gt;
smallest deployable unit is a Pod (a group of containers).  Kubernetes is often&lt;br /&gt;
used to deploy applications that are distributed across multiple nodes.&lt;br /&gt;
However, checkpointing such distributed applications requires a coordination&lt;br /&gt;
mechanism to synchronize the checkpoint and restore operations. To address this&lt;br /&gt;
challenge, we have developed a new tool called &amp;lt;code&amp;gt;criu-coordinator&amp;lt;/code&amp;gt;&lt;br /&gt;
that relies on the action-script functionality of CRIU to enable synchronization&lt;br /&gt;
in distributed environments. This project aims to extend this tool to enable&lt;br /&gt;
seamless integration with the checkpointing functionality of Kubernetes.&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/behouba Behouba Manassé]&lt;br /&gt;
* [https://github.com/behouba/gsoc-2025 Final Report]&lt;br /&gt;
* [https://docs.google.com/presentation/d/e/2PACX-1vTNV6nObjjlGwH9wR555WJVC8k1jYhTCJ9GeHsFXlRUe91YRXESPHw2GtYKzsUJ1l907z_cic6PQHio/pub Presentation Slides]&lt;br /&gt;
* [https://youtu.be/fzXDqbq2X3s Presentation Recording]&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Rust / Go / C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for arm64 Guarded Control Stack (GCS) ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support arm64 Guarded Control Stack (GCS)&lt;br /&gt;
 &lt;br /&gt;
The arm64 Guarded Control Stack (GCS) feature provides support for&lt;br /&gt;
hardware protected stacks of return addresses, intended to provide&lt;br /&gt;
hardening against return oriented programming (ROP) attacks and to make&lt;br /&gt;
it easier to gather call stacks for applications such as profiling (taken from [1]).&lt;br /&gt;
We would like to support arm64 Guarded Control Stack (GCS) in CRIU, which means&lt;br /&gt;
that CRIU should be able to Checkpoint/Restore applications using GCS.&lt;br /&gt;
&lt;br /&gt;
This task should not require any Linux kernel modifications&lt;br /&gt;
but will require a lot of effort to understand Linux kernel and&lt;br /&gt;
glibc support patches. We have a good example of support for&lt;br /&gt;
x86 shadow stack [4].&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [1] kernel support https://lore.kernel.org/all/20241001-arm64-gcs-v13-0-222b78d87eee@kernel.org&lt;br /&gt;
* [2] libc support https://inbox.sourceware.org/libc-alpha/20250117174119.3254972-1-yury.khrustalev@arm.com&lt;br /&gt;
* [3] libc tests https://inbox.sourceware.org/libc-alpha/20250210114538.1723249-1-yury.khrustalev@arm.com&lt;br /&gt;
* [4] x86 support https://github.com/checkpoint-restore/criu/pull/2306&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/svilenkov Igor Svilenkov Bozic]&lt;br /&gt;
* [https://github.com/checkpoint-restore/criu/pull/2725 Pull Request for CRIU]&lt;br /&gt;
* [https://drive.google.com/file/d/1Uoz_E5K-1zRcZwEWXKVcsNtxmdzDIpiY/view?usp=sharing Presentation Recording]&lt;br /&gt;
* Linux Plumbers Conference Talk: [https://lpc.events/event/19/contributions/2237/ Guarded Control Stack on arm64: Challenges in Enabling Shadow Stack Support for CRIU]&lt;br /&gt;
* Skill level: expert (a lot of moving parts: Linux kernel / libc / CRIU)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Mike Rapoport &amp;lt;rppt@kernel.org&amp;gt;&lt;br /&gt;
* Mentors: Mike Rapoport &amp;lt;rppt@kernel.org&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kubernetes operator for managing container checkpoints ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Develop a Kubernetes operator that automates the management of container checkpoints&lt;br /&gt;
&lt;br /&gt;
Container checkpointing has recently been introduced as an alpha feature in Kubernetes.&lt;br /&gt;
To enable this feature, the kubelet API was extended with an endpoint that enables the&lt;br /&gt;
creation of checkpoints for individual containers. By default, all container checkpoints&lt;br /&gt;
are stored as tar archives in &amp;lt;code&amp;gt;/var/lib/kubelet/checkpoints&amp;lt;/code&amp;gt; using the following&lt;br /&gt;
file name format: &amp;lt;code&amp;gt;checkpoint-&amp;lt;pod-name&amp;gt;_&amp;lt;namespace-name&amp;gt;-&amp;lt;container-name&amp;gt;-&amp;lt;timestamp&amp;gt;.tar&amp;lt;/code&amp;gt;.&lt;br /&gt;
However, the current implementation does not provide a mechanism for limiting the number&lt;br /&gt;
of checkpoints, which may lead to filling up all existing disk space. This project aims to&lt;br /&gt;
develop a Kubernetes operator that automates the management of checkpoints and provides&lt;br /&gt;
a garbage collection mechanism to discard obsolete checkpoints.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api/&lt;br /&gt;
* https://kubernetes.io/blog/2022/12/05/forensic-container-checkpointing-alpha/&lt;br /&gt;
* https://kubernetes.io/blog/2023/03/10/forensic-container-analysis/&lt;br /&gt;
* https://github.com/kubernetes/kubernetes/pull/115888&lt;br /&gt;
* https://github.com/kubernetes/enhancements/issues/2008&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Adrian Reber &amp;lt;areber@redhat.com&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Adrian Reber&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add support for pidfd file descriptors ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support C/R of pidfd descriptors&lt;br /&gt;
&lt;br /&gt;
There is pidfd_open syscall which allows opening&lt;br /&gt;
a special PID file descriptor. A user can send a signal to&lt;br /&gt;
the process (pidfd_send_signal syscall), wait for the process&lt;br /&gt;
(poll() on pidfd).&lt;br /&gt;
&lt;br /&gt;
At the moment CRIU can't dump processes that have pidfd's opened.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://lwn.net/Articles/801319/&lt;br /&gt;
* https://lwn.net/Articles/794707/&lt;br /&gt;
* https://github.com/torvalds/linux/blob/v5.16/kernel/fork.c#L1877&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Christian Brauner &amp;lt;christian@brauner.io&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memfd_secret file descriptors ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support C/R of memfd_secret descriptors&lt;br /&gt;
&lt;br /&gt;
There is memfd_secret syscall which allows user to open&lt;br /&gt;
special memfd which is backed by special memory range which&lt;br /&gt;
is inaccessible by another processes (and the kernel too!).&lt;br /&gt;
&lt;br /&gt;
At the moment CRIU can't dump processes that have memfd_secret's opened.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://lwn.net/Articles/865256/&lt;br /&gt;
* https://warusadura.github.io/gsoc23-final-report.html&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/2247&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Mike Rapoport &amp;lt;mike.rapoport@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Forensic analysis of container checkpoints ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extending go-crit and checkpointctl with capabilities for forensic analysis&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/checkpointctl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Go implementation of the [[crit]] tool was developed during GSoC 2022 to enable native Go–based decoding and encoding of CRIU [[images]]. In GSoC 2023, this tool was integrated with [https://github.com/checkpoint-restore/checkpointctl checkpointctl] to enable forensic analysis capabilities for container checkpoints. Behouba Manassé implemented support for memory forensics by extending the Go version of the crit tool and checkpointctl with support for parsing memory pages (&amp;lt;code&amp;gt;checkpointctl memparse&amp;lt;/code&amp;gt;), and displaying information about the command-line arguments and environment variables when analysing checkpoints with the &amp;lt;code&amp;gt;checkpointctl inspect&amp;lt;/code&amp;gt; command. Prajwal Nadig build upon his previous work during GSoC 2022, by implementing capabilities for analysing the process tree, open files, and sockets within a checkpoint, as well as introducing CI tests.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://criu.org/CRIT_(Go_library)&lt;br /&gt;
* https://github.com/checkpoint-restore/go-criu/tree/master/crit&lt;br /&gt;
* https://kubernetes.io/blog/2022/12/05/forensic-container-checkpointing-alpha/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/behouba Behouba Manassé] and [https://github.com/snprajwal Prajwal Nadig]&lt;br /&gt;
* Final Report: [https://github.com/behouba/gsoc-2023 Behouba Manassé], [https://github.com/snprajwal/gsoc-2023 Prajwal Nadig]&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restrict checks for open/mmaped files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Make sure the file opened (for fd or mapping) at restore is &amp;quot;the same&amp;quot; as it was on dump&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/pull/1123&lt;br /&gt;
&lt;br /&gt;
CRIU doesn't carry files contents (except for ghost ones) into images. Thus on dump it saves some &amp;quot;meta&amp;quot; for file to validate it's &amp;quot;the same&amp;quot; on restore. Currently this meta includes only the file size. The task is to add some cookie value that's somehow affected by file's contents. This is primarily needed to reduce the possibility to restore with wrong libraries.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://www.criu.org/Category:Files&lt;br /&gt;
* https://en.wikipedia.org/wiki/File_verification&lt;br /&gt;
&lt;br /&gt;
=== Optimize the pre-dump algorithm ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Optimize the pre-dump algorithm to avoid pinning to many memory in RAM&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/commit/98608b90de0f853b1c8a6e15b312320e1441c359 &lt;br /&gt;
&lt;br /&gt;
Current [[CLI/cmd/pre-dump|pre-dump]] mode is used to write task memory contents into image&lt;br /&gt;
files w/o stopping the task for too long. It does this by stopping the task, infecting it and&lt;br /&gt;
draining all the memory into a set of pipes. Then the task is cured, resumed and the pipes'&lt;br /&gt;
contents is written into images (maybe a [[page server]]). Unfortunately, this approach creates&lt;br /&gt;
a big stress on the memory subsystem, as keeping all memory in pipes creates a lot of unreclaimable&lt;br /&gt;
memory (pages in pipes are not swappable), as well as the number of pipes themselves can be huge, as&lt;br /&gt;
one pipe doesn't store more than a fixed amount of data (see pipe(7) man page).&lt;br /&gt;
&lt;br /&gt;
A solution for this problem is to use a sys_read_process_vm() syscall, which will mitigate&lt;br /&gt;
all of the above. To do this we need to allocate a temporary buffer in criu, then walk the&lt;br /&gt;
target process vm by copying the memory piece-by-piece into it, then flush the data into image&lt;br /&gt;
(or page server), and repeat.&lt;br /&gt;
&lt;br /&gt;
Ideally there should be sys_splice_process_vm() syscall in the kernel, that does the same as&lt;br /&gt;
the read_process_vm does, but vmsplices the data&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Memory pre dump]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/351&lt;br /&gt;
* [[Memory dumping and restoring]], [[Memory changes tracking]]&lt;br /&gt;
* [http://man7.org/linux/man-pages/man2/process_vm_readv.2.html process_vm_readv(2)] [http://man7.org/linux/man-pages/man2/vmsplice.2.html vmsplice(2)] [https://lkml.org/lkml/2018/1/9/32 RFC for splice_process_vm syscall]&lt;br /&gt;
&lt;br /&gt;
=== Porting crit functionalities in GO ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Implement image view and manipulation in Go&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/go-criu/pull/66&lt;br /&gt;
 &lt;br /&gt;
CRIU's checkpoint images are stored on disk using protobuf. For easier analysis of checkpoint files CRIU has a tool called [[CRIT|CRiu Image Tool (CRIT)]]. It can display/decode CRIU image files from binary protobuf to JSON as well as encode JSON files back to the binary format. With closer integration of CRIU in container runtimes it becomes important to be able to view the CRIU output files. Either for manipulation before restoring or for reading checkpoint statistics (memory pages written to disk, memory pages skipped, process downtime).&lt;br /&gt;
&lt;br /&gt;
Currently CRIT is implemented in Python, for easier integration in other Go projects it is important to have image manipulation and analysis available from GO. This means we need a Go based library to read/modify/write/encode/decode CRIU's image files. Based on this library a Go based implementation of CRIT would be useful.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[CRIT (Go library)]]&lt;br /&gt;
* [https://github.com/snprajwal/gsoc-2022 Final Report]&lt;br /&gt;
&lt;br /&gt;
=== Use eBPF to lock and unlock the network ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Use eBPF instead of external iptables-restore tool for network lock and unlock.&lt;br /&gt;
&lt;br /&gt;
During checkpointing and restoring CRIU locks the network to make sure no network packets are accepted by the network stack during the time the process is checkpointed. Currently CRIU calls out to iptables-restore to create and delete the corresponding iptables rules. Another approach which avoids calling out to the external binary iptables-restore would be to directly inject eBPF rules. There have been reports from users that iptables-restore fails in some way and eBPF could avoid this external dependency.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://www.criu.org/TCP_connection#Checkpoint_and_restore_TCP_connection&lt;br /&gt;
* https://github.com/systemd/systemd/blob/master/src/core/bpf-firewall.c&lt;br /&gt;
* https://blog.zeyady.com/2021-08-16/gsoc-criu&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/ZeyadYasser Zeyad Yasser]&lt;br /&gt;
* [https://github.com/checkpoint-restore/criu/pull/1539 CRIU Pull Request]&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Support sparse ghosts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' While sparse ghost files were in part supported for quiet some time, we still was not able to handle big sparse ghost files and highly fragmented sparse ghost files effectively.&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/pull/1944 https://github.com/checkpoint-restore/criu/pull/1963&lt;br /&gt;
&lt;br /&gt;
When criu dumps processes it also dumps files that are opened by them. It does this by saving file names by which the files are accessible. But sometimes files can have no names. It may happen if a task opened a file and then removed it. To dump this file criu cannot save its name (because the name doesn't exist). Instead criu saves the whole file. This is called &amp;quot;ghost file&amp;quot;. Since saving the whole file is very expensive (copying lots of data on disk) criu limits the maximum size of a ghost file. The latter is also not good, because there are &amp;quot;sparse&amp;quot; files, that are large in size, but may be small from the real disk usage perspective. The goal of the task is to support sparse ghost files, i.e. limit the size of the ghost not by its length but by disk usage and when copying the data detect the used blocks and save only those.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
 &lt;br /&gt;
*[https://en.wikipedia.org/wiki/Sparse_file Sparse files]&lt;br /&gt;
*[[Dumping files]]&lt;br /&gt;
*[[Invisible files]]&lt;br /&gt;
*[https://www.kernel.org/doc/html/latest/filesystems/fiemap.html Fiemap ioctl]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=GSoC_completed_projects&amp;diff=5852</id>
		<title>GSoC completed projects</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=GSoC_completed_projects&amp;diff=5852"/>
		<updated>2026-01-25T12:48:42Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Coordinated checkpointing of distributed applications ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Enable coordinated container checkpointing with Kubernetes.&lt;br /&gt;
&lt;br /&gt;
Checkpointing support has been recently introduced in Kubernetes, where the&lt;br /&gt;
smallest deployable unit is a Pod (a group of containers).  Kubernetes is often&lt;br /&gt;
used to deploy applications that are distributed across multiple nodes.&lt;br /&gt;
However, checkpointing such distributed applications requires a coordination&lt;br /&gt;
mechanism to synchronize the checkpoint and restore operations. To address this&lt;br /&gt;
challenge, we have developed a new tool called &amp;lt;code&amp;gt;criu-coordinator&amp;lt;/code&amp;gt;&lt;br /&gt;
that relies on the action-script functionality of CRIU to enable synchronization&lt;br /&gt;
in distributed environments. This project aims to extend this tool to enable&lt;br /&gt;
seamless integration with the checkpointing functionality of Kubernetes.&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/behouba Behouba Manassé]&lt;br /&gt;
* [https://github.com/behouba/gsoc-2025 Final Report]&lt;br /&gt;
* [https://docs.google.com/presentation/d/e/2PACX-1vTNV6nObjjlGwH9wR555WJVC8k1jYhTCJ9GeHsFXlRUe91YRXESPHw2GtYKzsUJ1l907z_cic6PQHio/pub Presentation Slides]&lt;br /&gt;
* [https://youtu.be/fzXDqbq2X3s Presentation Recording]&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Rust / Go / C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for arm64 Guarded Control Stack (GCS) ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support arm64 Guarded Control Stack (GCS)&lt;br /&gt;
 &lt;br /&gt;
The arm64 Guarded Control Stack (GCS) feature provides support for&lt;br /&gt;
hardware protected stacks of return addresses, intended to provide&lt;br /&gt;
hardening against return oriented programming (ROP) attacks and to make&lt;br /&gt;
it easier to gather call stacks for applications such as profiling (taken from [1]).&lt;br /&gt;
We would like to support arm64 Guarded Control Stack (GCS) in CRIU, which means&lt;br /&gt;
that CRIU should be able to Checkpoint/Restore applications using GCS.&lt;br /&gt;
&lt;br /&gt;
This task should not require any Linux kernel modifications&lt;br /&gt;
but will require a lot of effort to understand Linux kernel and&lt;br /&gt;
glibc support patches. We have a good example of support for&lt;br /&gt;
x86 shadow stack [4].&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [1] kernel support https://lore.kernel.org/all/20241001-arm64-gcs-v13-0-222b78d87eee@kernel.org&lt;br /&gt;
* [2] libc support https://inbox.sourceware.org/libc-alpha/20250117174119.3254972-1-yury.khrustalev@arm.com&lt;br /&gt;
* [3] libc tests https://inbox.sourceware.org/libc-alpha/20250210114538.1723249-1-yury.khrustalev@arm.com&lt;br /&gt;
* [4] x86 support https://github.com/checkpoint-restore/criu/pull/2306&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/svilenkov Igor Svilenkov Bozic]&lt;br /&gt;
* [https://github.com/checkpoint-restore/criu/pull/2725 Pull Request for CRIU]&lt;br /&gt;
* [https://drive.google.com/file/d/1Uoz_E5K-1zRcZwEWXKVcsNtxmdzDIpiY/view?usp=sharing Presentation Recording]&lt;br /&gt;
* Linux Plumbers Conference Talk: [https://lpc.events/event/19/contributions/2237/ Guarded Control Stack on arm64: Challenges in Enabling Shadow Stack Support for CRIU]&lt;br /&gt;
* Skill level: expert (a lot of moving parts: Linux kernel / libc / CRIU)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Mike Rapoport &amp;lt;rppt@kernel.org&amp;gt;&lt;br /&gt;
* Mentors: Mike Rapoport &amp;lt;rppt@kernel.org&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kubernetes operator for managing container checkpoints ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Develop a Kubernetes operator that automates the management of container checkpoints&lt;br /&gt;
&lt;br /&gt;
Container checkpointing has recently been introduced as an alpha feature in Kubernetes.&lt;br /&gt;
To enable this feature, the kubelet API was extended with an endpoint that enables the&lt;br /&gt;
creation of checkpoints for individual containers. By default, all container checkpoints&lt;br /&gt;
are stored as tar archives in &amp;lt;code&amp;gt;/var/lib/kubelet/checkpoints&amp;lt;/code&amp;gt; using the following&lt;br /&gt;
file name format: &amp;lt;code&amp;gt;checkpoint-&amp;lt;pod-name&amp;gt;_&amp;lt;namespace-name&amp;gt;-&amp;lt;container-name&amp;gt;-&amp;lt;timestamp&amp;gt;.tar&amp;lt;/code&amp;gt;.&lt;br /&gt;
However, the current implementation does not provide a mechanism for limiting the number&lt;br /&gt;
of checkpoints, which may lead to filling up all existing disk space. This project aims to&lt;br /&gt;
develop a Kubernetes operator that automates the management of checkpoints and provides&lt;br /&gt;
a garbage collection mechanism to discard obsolete checkpoints.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api/&lt;br /&gt;
* https://kubernetes.io/blog/2022/12/05/forensic-container-checkpointing-alpha/&lt;br /&gt;
* https://kubernetes.io/blog/2023/03/10/forensic-container-analysis/&lt;br /&gt;
* https://github.com/kubernetes/kubernetes/pull/115888&lt;br /&gt;
* https://github.com/kubernetes/enhancements/issues/2008&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Adrian Reber &amp;lt;areber@redhat.com&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Adrian Reber&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add support for pidfd file descriptors ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support C/R of pidfd descriptors&lt;br /&gt;
&lt;br /&gt;
There is pidfd_open syscall which allows opening&lt;br /&gt;
a special PID file descriptor. A user can send a signal to&lt;br /&gt;
the process (pidfd_send_signal syscall), wait for the process&lt;br /&gt;
(poll() on pidfd).&lt;br /&gt;
&lt;br /&gt;
At the moment CRIU can't dump processes that have pidfd's opened.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://lwn.net/Articles/801319/&lt;br /&gt;
* https://lwn.net/Articles/794707/&lt;br /&gt;
* https://github.com/torvalds/linux/blob/v5.16/kernel/fork.c#L1877&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Christian Brauner &amp;lt;christian@brauner.io&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memfd_secret file descriptors ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support C/R of memfd_secret descriptors&lt;br /&gt;
&lt;br /&gt;
There is memfd_secret syscall which allows user to open&lt;br /&gt;
special memfd which is backed by special memory range which&lt;br /&gt;
is inaccessible by another processes (and the kernel too!).&lt;br /&gt;
&lt;br /&gt;
At the moment CRIU can't dump processes that have memfd_secret's opened.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://lwn.net/Articles/865256/&lt;br /&gt;
* https://warusadura.github.io/gsoc23-final-report.html&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/2247&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Mike Rapoport &amp;lt;mike.rapoport@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Forensic analysis of container checkpoints ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extending go-crit and checkpointctl with capabilities for forensic analysis&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/checkpointctl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Go implementation of the [[crit]] tool was developed during GSoC 2022 to enable native Go–based decoding and encoding of CRIU [[images]]. In GSoC 2023, this tool was integrated with [https://github.com/checkpoint-restore/checkpointctl checkpointctl] to enable forensic analysis capabilities for container checkpoints. Behouba Manassé implemented support for memory forensics by extending the Go version of the crit tool and checkpointctl with support for parsing memory pages, and displaying information about the command-line arguments and environment variables when analysing checkpoints with the &amp;lt;code&amp;gt;inspect&amp;lt;/code&amp;gt; command. Prajwal Nadig build upon his previous work during GSoC 2022, by implementing capabilities for analysing the process tree, open files, and sockets within a checkpoint, as well as introducing CI tests.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://criu.org/CRIT_(Go_library)&lt;br /&gt;
* https://github.com/checkpoint-restore/go-criu/tree/master/crit&lt;br /&gt;
* https://kubernetes.io/blog/2022/12/05/forensic-container-checkpointing-alpha/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/behouba Behouba Manassé] and [https://github.com/snprajwal Prajwal Nadig]&lt;br /&gt;
* Final Report: [https://github.com/behouba/gsoc-2023 Behouba Manassé], [https://github.com/snprajwal/gsoc-2023 Prajwal Nadig]&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Restrict checks for open/mmaped files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Make sure the file opened (for fd or mapping) at restore is &amp;quot;the same&amp;quot; as it was on dump&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/pull/1123&lt;br /&gt;
&lt;br /&gt;
CRIU doesn't carry files contents (except for ghost ones) into images. Thus on dump it saves some &amp;quot;meta&amp;quot; for file to validate it's &amp;quot;the same&amp;quot; on restore. Currently this meta includes only the file size. The task is to add some cookie value that's somehow affected by file's contents. This is primarily needed to reduce the possibility to restore with wrong libraries.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://www.criu.org/Category:Files&lt;br /&gt;
* https://en.wikipedia.org/wiki/File_verification&lt;br /&gt;
&lt;br /&gt;
=== Optimize the pre-dump algorithm ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Optimize the pre-dump algorithm to avoid pinning to many memory in RAM&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/commit/98608b90de0f853b1c8a6e15b312320e1441c359 &lt;br /&gt;
&lt;br /&gt;
Current [[CLI/cmd/pre-dump|pre-dump]] mode is used to write task memory contents into image&lt;br /&gt;
files w/o stopping the task for too long. It does this by stopping the task, infecting it and&lt;br /&gt;
draining all the memory into a set of pipes. Then the task is cured, resumed and the pipes'&lt;br /&gt;
contents is written into images (maybe a [[page server]]). Unfortunately, this approach creates&lt;br /&gt;
a big stress on the memory subsystem, as keeping all memory in pipes creates a lot of unreclaimable&lt;br /&gt;
memory (pages in pipes are not swappable), as well as the number of pipes themselves can be huge, as&lt;br /&gt;
one pipe doesn't store more than a fixed amount of data (see pipe(7) man page).&lt;br /&gt;
&lt;br /&gt;
A solution for this problem is to use a sys_read_process_vm() syscall, which will mitigate&lt;br /&gt;
all of the above. To do this we need to allocate a temporary buffer in criu, then walk the&lt;br /&gt;
target process vm by copying the memory piece-by-piece into it, then flush the data into image&lt;br /&gt;
(or page server), and repeat.&lt;br /&gt;
&lt;br /&gt;
Ideally there should be sys_splice_process_vm() syscall in the kernel, that does the same as&lt;br /&gt;
the read_process_vm does, but vmsplices the data&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Memory pre dump]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/351&lt;br /&gt;
* [[Memory dumping and restoring]], [[Memory changes tracking]]&lt;br /&gt;
* [http://man7.org/linux/man-pages/man2/process_vm_readv.2.html process_vm_readv(2)] [http://man7.org/linux/man-pages/man2/vmsplice.2.html vmsplice(2)] [https://lkml.org/lkml/2018/1/9/32 RFC for splice_process_vm syscall]&lt;br /&gt;
&lt;br /&gt;
=== Porting crit functionalities in GO ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Implement image view and manipulation in Go&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/go-criu/pull/66&lt;br /&gt;
 &lt;br /&gt;
CRIU's checkpoint images are stored on disk using protobuf. For easier analysis of checkpoint files CRIU has a tool called [[CRIT|CRiu Image Tool (CRIT)]]. It can display/decode CRIU image files from binary protobuf to JSON as well as encode JSON files back to the binary format. With closer integration of CRIU in container runtimes it becomes important to be able to view the CRIU output files. Either for manipulation before restoring or for reading checkpoint statistics (memory pages written to disk, memory pages skipped, process downtime).&lt;br /&gt;
&lt;br /&gt;
Currently CRIT is implemented in Python, for easier integration in other Go projects it is important to have image manipulation and analysis available from GO. This means we need a Go based library to read/modify/write/encode/decode CRIU's image files. Based on this library a Go based implementation of CRIT would be useful.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[CRIT (Go library)]]&lt;br /&gt;
* [https://github.com/snprajwal/gsoc-2022 Final Report]&lt;br /&gt;
&lt;br /&gt;
=== Use eBPF to lock and unlock the network ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Use eBPF instead of external iptables-restore tool for network lock and unlock.&lt;br /&gt;
&lt;br /&gt;
During checkpointing and restoring CRIU locks the network to make sure no network packets are accepted by the network stack during the time the process is checkpointed. Currently CRIU calls out to iptables-restore to create and delete the corresponding iptables rules. Another approach which avoids calling out to the external binary iptables-restore would be to directly inject eBPF rules. There have been reports from users that iptables-restore fails in some way and eBPF could avoid this external dependency.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://www.criu.org/TCP_connection#Checkpoint_and_restore_TCP_connection&lt;br /&gt;
* https://github.com/systemd/systemd/blob/master/src/core/bpf-firewall.c&lt;br /&gt;
* https://blog.zeyady.com/2021-08-16/gsoc-criu&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/ZeyadYasser Zeyad Yasser]&lt;br /&gt;
* [https://github.com/checkpoint-restore/criu/pull/1539 CRIU Pull Request]&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Support sparse ghosts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' While sparse ghost files were in part supported for quiet some time, we still was not able to handle big sparse ghost files and highly fragmented sparse ghost files effectively.&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/pull/1944 https://github.com/checkpoint-restore/criu/pull/1963&lt;br /&gt;
&lt;br /&gt;
When criu dumps processes it also dumps files that are opened by them. It does this by saving file names by which the files are accessible. But sometimes files can have no names. It may happen if a task opened a file and then removed it. To dump this file criu cannot save its name (because the name doesn't exist). Instead criu saves the whole file. This is called &amp;quot;ghost file&amp;quot;. Since saving the whole file is very expensive (copying lots of data on disk) criu limits the maximum size of a ghost file. The latter is also not good, because there are &amp;quot;sparse&amp;quot; files, that are large in size, but may be small from the real disk usage perspective. The goal of the task is to support sparse ghost files, i.e. limit the size of the ghost not by its length but by disk usage and when copying the data detect the used blocks and save only those.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
 &lt;br /&gt;
*[https://en.wikipedia.org/wiki/Sparse_file Sparse files]&lt;br /&gt;
*[[Dumping files]]&lt;br /&gt;
*[[Invisible files]]&lt;br /&gt;
*[https://www.kernel.org/doc/html/latest/filesystems/fiemap.html Fiemap ioctl]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5851</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5851"/>
		<updated>2026-01-25T12:30:24Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Add support for memory compression ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support compression for page images&lt;br /&gt;
 &lt;br /&gt;
We would like to support memory page files compression&lt;br /&gt;
in CRIU using one of the fastest algorithms (it's matter&lt;br /&gt;
of discussion which one to choose!).&lt;br /&gt;
&lt;br /&gt;
This task does not require any Linux kernel modifications&lt;br /&gt;
and scope is limited to CRIU itself. At the same time it's&lt;br /&gt;
complex enough as we need to touch memory dump/restore codepath&lt;br /&gt;
in CRIU and also handle many corner cases like page-server and stuff.&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files on detached mounts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Initial support of open files on &amp;quot;detached&amp;quot; mounts&lt;br /&gt;
&lt;br /&gt;
When criu dumps a process with an open fd on a file, it gets the mount identifier (mnt_id) via /proc/&amp;lt;pid&amp;gt;/fdinfo/&amp;lt;fd&amp;gt;, so that criu knows from which exact mount the file was initially opened. This way criu can restore this fd by opening the same exact file from topologically the same mount in restored mount tree.&lt;br /&gt;
&lt;br /&gt;
Restoring fd from the right mount can be important in different cases, for instance if the process would later want to resolve paths relative to the fd, and obviously resolving from the same file on different mount can lead to different resolved paths, or if the process wants to check path to the file via /proc/&amp;lt;pid&amp;gt;/fd/&amp;lt;fd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
But we have a problem finding on which mount we need to reopen the file at restore if we only know mnt_id but can't find this mnt_id in /proc/&amp;lt;pid&amp;gt;/mountinfo.&lt;br /&gt;
&lt;br /&gt;
Mountinfo file shows the mount tree topology of current mntns: parent - child relations, sharing group information, mountpoint and fs root information. And if we don't see mnt_id in it we don't know anything about this mount.&lt;br /&gt;
&lt;br /&gt;
This can happen in two cases&lt;br /&gt;
&lt;br /&gt;
* 1) external mount or file - if file was opened from e.g. host it's mount would not be visible in container mountinfo&lt;br /&gt;
* 2) mount was lazily unmounted&lt;br /&gt;
&lt;br /&gt;
In case of 1) we have criu options to help criu handle external dependencies.&lt;br /&gt;
&lt;br /&gt;
In case of 2) or no options provided criu can't resolve mnt_id in mountinfo and criu fails.&lt;br /&gt;
&lt;br /&gt;
'''Solution:'''&lt;br /&gt;
We can handle 2) with: resolving major/minor via fstat, using name_to_handle_at and open_by_handle_at to open same file on any other available mount from same superblock (same major/minor) in container. Now we have fd2 of the same file as fd, but on existing mount we can dump it as usual instead, and mark it as &amp;quot;detached&amp;quot; in image, now criu on restore knows where to find this file, but instead of just opening fd2 from actually restored mount, we create a temporary bindmount which is lazy unmounted just after open making the file appear as a file on detached mount.&lt;br /&gt;
&lt;br /&gt;
Known problems with this approach:&lt;br /&gt;
&lt;br /&gt;
* Stat on btrfs gives wrong major/minor&lt;br /&gt;
* file handles does not work everywhere&lt;br /&gt;
* file handles can return fd2 on deleted file or on other hardlink, this needs special handling.&lt;br /&gt;
&lt;br /&gt;
Additionally (optional part):&lt;br /&gt;
We can export real major/minor in fdinfo (kernel).&lt;br /&gt;
We can think of new kernel interface to get mount's major/minor and root (shift from fsroot) for detached mounts, if we have it we don't need file handle hack to find file on other mount (see fsinfo or getvalues kernel patches in LKML, can we add this info there?).&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentor: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=GSoC_completed_projects&amp;diff=5850</id>
		<title>GSoC completed projects</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=GSoC_completed_projects&amp;diff=5850"/>
		<updated>2026-01-25T12:29:53Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Coordinated checkpointing of distributed applications ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Enable coordinated container checkpointing with Kubernetes.&lt;br /&gt;
&lt;br /&gt;
Checkpointing support has been recently introduced in Kubernetes, where the&lt;br /&gt;
smallest deployable unit is a Pod (a group of containers).  Kubernetes is often&lt;br /&gt;
used to deploy applications that are distributed across multiple nodes.&lt;br /&gt;
However, checkpointing such distributed applications requires a coordination&lt;br /&gt;
mechanism to synchronize the checkpoint and restore operations. To address this&lt;br /&gt;
challenge, we have developed a new tool called &amp;lt;code&amp;gt;criu-coordinator&amp;lt;/code&amp;gt;&lt;br /&gt;
that relies on the action-script functionality of CRIU to enable synchronization&lt;br /&gt;
in distributed environments. This project aims to extend this tool to enable&lt;br /&gt;
seamless integration with the checkpointing functionality of Kubernetes.&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/behouba Behouba Manassé]&lt;br /&gt;
* [https://github.com/behouba/gsoc-2025 Final Report]&lt;br /&gt;
* [https://docs.google.com/presentation/d/e/2PACX-1vTNV6nObjjlGwH9wR555WJVC8k1jYhTCJ9GeHsFXlRUe91YRXESPHw2GtYKzsUJ1l907z_cic6PQHio/pub Presentation Slides]&lt;br /&gt;
* [https://youtu.be/fzXDqbq2X3s Presentation Recording]&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Rust / Go / C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for arm64 Guarded Control Stack (GCS) ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support arm64 Guarded Control Stack (GCS)&lt;br /&gt;
 &lt;br /&gt;
The arm64 Guarded Control Stack (GCS) feature provides support for&lt;br /&gt;
hardware protected stacks of return addresses, intended to provide&lt;br /&gt;
hardening against return oriented programming (ROP) attacks and to make&lt;br /&gt;
it easier to gather call stacks for applications such as profiling (taken from [1]).&lt;br /&gt;
We would like to support arm64 Guarded Control Stack (GCS) in CRIU, which means&lt;br /&gt;
that CRIU should be able to Checkpoint/Restore applications using GCS.&lt;br /&gt;
&lt;br /&gt;
This task should not require any Linux kernel modifications&lt;br /&gt;
but will require a lot of effort to understand Linux kernel and&lt;br /&gt;
glibc support patches. We have a good example of support for&lt;br /&gt;
x86 shadow stack [4].&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [1] kernel support https://lore.kernel.org/all/20241001-arm64-gcs-v13-0-222b78d87eee@kernel.org&lt;br /&gt;
* [2] libc support https://inbox.sourceware.org/libc-alpha/20250117174119.3254972-1-yury.khrustalev@arm.com&lt;br /&gt;
* [3] libc tests https://inbox.sourceware.org/libc-alpha/20250210114538.1723249-1-yury.khrustalev@arm.com&lt;br /&gt;
* [4] x86 support https://github.com/checkpoint-restore/criu/pull/2306&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/svilenkov Igor Svilenkov Bozic]&lt;br /&gt;
* [https://github.com/checkpoint-restore/criu/pull/2725 Pull Request for CRIU]&lt;br /&gt;
* [https://drive.google.com/file/d/1Uoz_E5K-1zRcZwEWXKVcsNtxmdzDIpiY/view?usp=sharing Presentation Recording]&lt;br /&gt;
* Linux Plumbers Conference Talk: [https://lpc.events/event/19/contributions/2237/ Guarded Control Stack on arm64: Challenges in Enabling Shadow Stack Support for CRIU]&lt;br /&gt;
* Skill level: expert (a lot of moving parts: Linux kernel / libc / CRIU)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Mike Rapoport &amp;lt;rppt@kernel.org&amp;gt;&lt;br /&gt;
* Mentors: Mike Rapoport &amp;lt;rppt@kernel.org&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kubernetes operator for managing container checkpoints ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Develop a Kubernetes operator that automates the management of container checkpoints&lt;br /&gt;
&lt;br /&gt;
Container checkpointing has recently been introduced as an alpha feature in Kubernetes.&lt;br /&gt;
To enable this feature, the kubelet API was extended with an endpoint that enables the&lt;br /&gt;
creation of checkpoints for individual containers. By default, all container checkpoints&lt;br /&gt;
are stored as tar archives in &amp;lt;code&amp;gt;/var/lib/kubelet/checkpoints&amp;lt;/code&amp;gt; using the following&lt;br /&gt;
file name format: &amp;lt;code&amp;gt;checkpoint-&amp;lt;pod-name&amp;gt;_&amp;lt;namespace-name&amp;gt;-&amp;lt;container-name&amp;gt;-&amp;lt;timestamp&amp;gt;.tar&amp;lt;/code&amp;gt;.&lt;br /&gt;
However, the current implementation does not provide a mechanism for limiting the number&lt;br /&gt;
of checkpoints, which may lead to filling up all existing disk space. This project aims to&lt;br /&gt;
develop a Kubernetes operator that automates the management of checkpoints and provides&lt;br /&gt;
a garbage collection mechanism to discard obsolete checkpoints.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api/&lt;br /&gt;
* https://kubernetes.io/blog/2022/12/05/forensic-container-checkpointing-alpha/&lt;br /&gt;
* https://kubernetes.io/blog/2023/03/10/forensic-container-analysis/&lt;br /&gt;
* https://github.com/kubernetes/kubernetes/pull/115888&lt;br /&gt;
* https://github.com/kubernetes/enhancements/issues/2008&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Adrian Reber &amp;lt;areber@redhat.com&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Adrian Reber&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add support for pidfd file descriptors ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support C/R of pidfd descriptors&lt;br /&gt;
&lt;br /&gt;
There is pidfd_open syscall which allows opening&lt;br /&gt;
a special PID file descriptor. A user can send a signal to&lt;br /&gt;
the process (pidfd_send_signal syscall), wait for the process&lt;br /&gt;
(poll() on pidfd).&lt;br /&gt;
&lt;br /&gt;
At the moment CRIU can't dump processes that have pidfd's opened.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://lwn.net/Articles/801319/&lt;br /&gt;
* https://lwn.net/Articles/794707/&lt;br /&gt;
* https://github.com/torvalds/linux/blob/v5.16/kernel/fork.c#L1877&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Christian Brauner &amp;lt;christian@brauner.io&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memfd_secret file descriptors ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support C/R of memfd_secret descriptors&lt;br /&gt;
&lt;br /&gt;
There is memfd_secret syscall which allows user to open&lt;br /&gt;
special memfd which is backed by special memory range which&lt;br /&gt;
is inaccessible by another processes (and the kernel too!).&lt;br /&gt;
&lt;br /&gt;
At the moment CRIU can't dump processes that have memfd_secret's opened.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://lwn.net/Articles/865256/&lt;br /&gt;
* https://warusadura.github.io/gsoc23-final-report.html&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/2247&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Mike Rapoport &amp;lt;mike.rapoport@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Forensic analysis of container checkpoints ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extending go-crit with capabilities for forensic analysis&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/checkpointctl&lt;br /&gt;
&lt;br /&gt;
The go-crit tool was created during GSoC 2022 to enable analysis of CRIU [[images]] with tools written in Go. It allows container management tools such as [https://github.com/checkpoint-restore/checkpointctl checkpointctl] and Podman to provide capabilities similar to CRIT. The goal of this project is to extend go-crit with functionality for forensic analysis of container checkpoints to provide a better user experience.&lt;br /&gt;
&lt;br /&gt;
The go-crit tool is still in its early stages of development. To effectively utilise this new feature, the checkpointctl tool would be extended to display information about the processes included in a container checkpoint and their runtime state (e.g., memory, open files, sockets, etc).&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://criu.org/CRIT_(Go_library)&lt;br /&gt;
* https://github.com/checkpoint-restore/go-criu/tree/master/crit&lt;br /&gt;
* https://kubernetes.io/blog/2022/12/05/forensic-container-checkpointing-alpha/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Restrict checks for open/mmaped files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Make sure the file opened (for fd or mapping) at restore is &amp;quot;the same&amp;quot; as it was on dump&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/pull/1123&lt;br /&gt;
&lt;br /&gt;
CRIU doesn't carry files contents (except for ghost ones) into images. Thus on dump it saves some &amp;quot;meta&amp;quot; for file to validate it's &amp;quot;the same&amp;quot; on restore. Currently this meta includes only the file size. The task is to add some cookie value that's somehow affected by file's contents. This is primarily needed to reduce the possibility to restore with wrong libraries.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://www.criu.org/Category:Files&lt;br /&gt;
* https://en.wikipedia.org/wiki/File_verification&lt;br /&gt;
&lt;br /&gt;
=== Optimize the pre-dump algorithm ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Optimize the pre-dump algorithm to avoid pinning to many memory in RAM&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/commit/98608b90de0f853b1c8a6e15b312320e1441c359 &lt;br /&gt;
&lt;br /&gt;
Current [[CLI/cmd/pre-dump|pre-dump]] mode is used to write task memory contents into image&lt;br /&gt;
files w/o stopping the task for too long. It does this by stopping the task, infecting it and&lt;br /&gt;
draining all the memory into a set of pipes. Then the task is cured, resumed and the pipes'&lt;br /&gt;
contents is written into images (maybe a [[page server]]). Unfortunately, this approach creates&lt;br /&gt;
a big stress on the memory subsystem, as keeping all memory in pipes creates a lot of unreclaimable&lt;br /&gt;
memory (pages in pipes are not swappable), as well as the number of pipes themselves can be huge, as&lt;br /&gt;
one pipe doesn't store more than a fixed amount of data (see pipe(7) man page).&lt;br /&gt;
&lt;br /&gt;
A solution for this problem is to use a sys_read_process_vm() syscall, which will mitigate&lt;br /&gt;
all of the above. To do this we need to allocate a temporary buffer in criu, then walk the&lt;br /&gt;
target process vm by copying the memory piece-by-piece into it, then flush the data into image&lt;br /&gt;
(or page server), and repeat.&lt;br /&gt;
&lt;br /&gt;
Ideally there should be sys_splice_process_vm() syscall in the kernel, that does the same as&lt;br /&gt;
the read_process_vm does, but vmsplices the data&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Memory pre dump]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/351&lt;br /&gt;
* [[Memory dumping and restoring]], [[Memory changes tracking]]&lt;br /&gt;
* [http://man7.org/linux/man-pages/man2/process_vm_readv.2.html process_vm_readv(2)] [http://man7.org/linux/man-pages/man2/vmsplice.2.html vmsplice(2)] [https://lkml.org/lkml/2018/1/9/32 RFC for splice_process_vm syscall]&lt;br /&gt;
&lt;br /&gt;
=== Porting crit functionalities in GO ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Implement image view and manipulation in Go&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/go-criu/pull/66&lt;br /&gt;
 &lt;br /&gt;
CRIU's checkpoint images are stored on disk using protobuf. For easier analysis of checkpoint files CRIU has a tool called [[CRIT|CRiu Image Tool (CRIT)]]. It can display/decode CRIU image files from binary protobuf to JSON as well as encode JSON files back to the binary format. With closer integration of CRIU in container runtimes it becomes important to be able to view the CRIU output files. Either for manipulation before restoring or for reading checkpoint statistics (memory pages written to disk, memory pages skipped, process downtime).&lt;br /&gt;
&lt;br /&gt;
Currently CRIT is implemented in Python, for easier integration in other Go projects it is important to have image manipulation and analysis available from GO. This means we need a Go based library to read/modify/write/encode/decode CRIU's image files. Based on this library a Go based implementation of CRIT would be useful.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[CRIT (Go library)]]&lt;br /&gt;
* [https://github.com/snprajwal/gsoc-2022 Final Report]&lt;br /&gt;
&lt;br /&gt;
=== Use eBPF to lock and unlock the network ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Use eBPF instead of external iptables-restore tool for network lock and unlock.&lt;br /&gt;
&lt;br /&gt;
During checkpointing and restoring CRIU locks the network to make sure no network packets are accepted by the network stack during the time the process is checkpointed. Currently CRIU calls out to iptables-restore to create and delete the corresponding iptables rules. Another approach which avoids calling out to the external binary iptables-restore would be to directly inject eBPF rules. There have been reports from users that iptables-restore fails in some way and eBPF could avoid this external dependency.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://www.criu.org/TCP_connection#Checkpoint_and_restore_TCP_connection&lt;br /&gt;
* https://github.com/systemd/systemd/blob/master/src/core/bpf-firewall.c&lt;br /&gt;
* https://blog.zeyady.com/2021-08-16/gsoc-criu&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/ZeyadYasser Zeyad Yasser]&lt;br /&gt;
* [https://github.com/checkpoint-restore/criu/pull/1539 CRIU Pull Request]&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Support sparse ghosts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' While sparse ghost files were in part supported for quiet some time, we still was not able to handle big sparse ghost files and highly fragmented sparse ghost files effectively.&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/pull/1944 https://github.com/checkpoint-restore/criu/pull/1963&lt;br /&gt;
&lt;br /&gt;
When criu dumps processes it also dumps files that are opened by them. It does this by saving file names by which the files are accessible. But sometimes files can have no names. It may happen if a task opened a file and then removed it. To dump this file criu cannot save its name (because the name doesn't exist). Instead criu saves the whole file. This is called &amp;quot;ghost file&amp;quot;. Since saving the whole file is very expensive (copying lots of data on disk) criu limits the maximum size of a ghost file. The latter is also not good, because there are &amp;quot;sparse&amp;quot; files, that are large in size, but may be small from the real disk usage perspective. The goal of the task is to support sparse ghost files, i.e. limit the size of the ghost not by its length but by disk usage and when copying the data detect the used blocks and save only those.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
 &lt;br /&gt;
*[https://en.wikipedia.org/wiki/Sparse_file Sparse files]&lt;br /&gt;
*[[Dumping files]]&lt;br /&gt;
*[[Invisible files]]&lt;br /&gt;
*[https://www.kernel.org/doc/html/latest/filesystems/fiemap.html Fiemap ioctl]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=GSoC_completed_projects&amp;diff=5849</id>
		<title>GSoC completed projects</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=GSoC_completed_projects&amp;diff=5849"/>
		<updated>2026-01-25T12:25:55Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* Add support for arm64 Guarded Control Stack (GCS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Coordinated checkpointing of distributed applications ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Enable coordinated container checkpointing with Kubernetes.&lt;br /&gt;
&lt;br /&gt;
Checkpointing support has been recently introduced in Kubernetes, where the&lt;br /&gt;
smallest deployable unit is a Pod (a group of containers).  Kubernetes is often&lt;br /&gt;
used to deploy applications that are distributed across multiple nodes.&lt;br /&gt;
However, checkpointing such distributed applications requires a coordination&lt;br /&gt;
mechanism to synchronize the checkpoint and restore operations. To address this&lt;br /&gt;
challenge, we have developed a new tool called &amp;lt;code&amp;gt;criu-coordinator&amp;lt;/code&amp;gt;&lt;br /&gt;
that relies on the action-script functionality of CRIU to enable synchronization&lt;br /&gt;
in distributed environments. This project aims to extend this tool to enable&lt;br /&gt;
seamless integration with the checkpointing functionality of Kubernetes.&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/behouba Behouba Manassé]&lt;br /&gt;
* [https://github.com/behouba/gsoc-2025 Final Report]&lt;br /&gt;
* [https://docs.google.com/presentation/d/e/2PACX-1vTNV6nObjjlGwH9wR555WJVC8k1jYhTCJ9GeHsFXlRUe91YRXESPHw2GtYKzsUJ1l907z_cic6PQHio/pub Presentation Slides]&lt;br /&gt;
* [https://youtu.be/fzXDqbq2X3s Presentation Recording]&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Rust / Go / C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for arm64 Guarded Control Stack (GCS) ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support arm64 Guarded Control Stack (GCS)&lt;br /&gt;
 &lt;br /&gt;
The arm64 Guarded Control Stack (GCS) feature provides support for&lt;br /&gt;
hardware protected stacks of return addresses, intended to provide&lt;br /&gt;
hardening against return oriented programming (ROP) attacks and to make&lt;br /&gt;
it easier to gather call stacks for applications such as profiling (taken from [1]).&lt;br /&gt;
We would like to support arm64 Guarded Control Stack (GCS) in CRIU, which means&lt;br /&gt;
that CRIU should be able to Checkpoint/Restore applications using GCS.&lt;br /&gt;
&lt;br /&gt;
This task should not require any Linux kernel modifications&lt;br /&gt;
but will require a lot of effort to understand Linux kernel and&lt;br /&gt;
glibc support patches. We have a good example of support for&lt;br /&gt;
x86 shadow stack [4].&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [1] kernel support https://lore.kernel.org/all/20241001-arm64-gcs-v13-0-222b78d87eee@kernel.org&lt;br /&gt;
* [2] libc support https://inbox.sourceware.org/libc-alpha/20250117174119.3254972-1-yury.khrustalev@arm.com&lt;br /&gt;
* [3] libc tests https://inbox.sourceware.org/libc-alpha/20250210114538.1723249-1-yury.khrustalev@arm.com&lt;br /&gt;
* [4] x86 support https://github.com/checkpoint-restore/criu/pull/2306&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/svilenkov Igor Svilenkov Bozic]&lt;br /&gt;
* [https://github.com/checkpoint-restore/criu/pull/2725 Pull Request for CRIU]&lt;br /&gt;
* [https://drive.google.com/file/d/1Uoz_E5K-1zRcZwEWXKVcsNtxmdzDIpiY/view?usp=sharing Presentation Recording]&lt;br /&gt;
* Linux Plumbers Conference Talk: [https://lpc.events/event/19/contributions/2237/ Guarded Control Stack on arm64: Challenges in Enabling Shadow Stack Support for CRIU]&lt;br /&gt;
* Skill level: expert (a lot of moving parts: Linux kernel / libc / CRIU)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Mike Rapoport &amp;lt;rppt@kernel.org&amp;gt;&lt;br /&gt;
* Mentors: Mike Rapoport &amp;lt;rppt@kernel.org&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kubernetes operator for managing container checkpoints ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Develop a Kubernetes operator that automates the management of container checkpoints&lt;br /&gt;
&lt;br /&gt;
Container checkpointing has recently been introduced as an alpha feature in Kubernetes.&lt;br /&gt;
To enable this feature, the kubelet API was extended with an endpoint that enables the&lt;br /&gt;
creation of checkpoints for individual containers. By default, all container checkpoints&lt;br /&gt;
are stored as tar archives in &amp;lt;code&amp;gt;/var/lib/kubelet/checkpoints&amp;lt;/code&amp;gt; using the following&lt;br /&gt;
file name format: &amp;lt;code&amp;gt;checkpoint-&amp;lt;pod-name&amp;gt;_&amp;lt;namespace-name&amp;gt;-&amp;lt;container-name&amp;gt;-&amp;lt;timestamp&amp;gt;.tar&amp;lt;/code&amp;gt;.&lt;br /&gt;
However, the current implementation does not provide a mechanism for limiting the number&lt;br /&gt;
of checkpoints, which may lead to filling up all existing disk space. This project aims to&lt;br /&gt;
develop a Kubernetes operator that automates the management of checkpoints and provides&lt;br /&gt;
a garbage collection mechanism to discard obsolete checkpoints.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api/&lt;br /&gt;
* https://kubernetes.io/blog/2022/12/05/forensic-container-checkpointing-alpha/&lt;br /&gt;
* https://kubernetes.io/blog/2023/03/10/forensic-container-analysis/&lt;br /&gt;
* https://github.com/kubernetes/kubernetes/pull/115888&lt;br /&gt;
* https://github.com/kubernetes/enhancements/issues/2008&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Adrian Reber &amp;lt;areber@redhat.com&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Adrian Reber&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add support for pidfd file descriptors ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support C/R of pidfd descriptors&lt;br /&gt;
&lt;br /&gt;
There is pidfd_open syscall which allows opening&lt;br /&gt;
a special PID file descriptor. A user can send a signal to&lt;br /&gt;
the process (pidfd_send_signal syscall), wait for the process&lt;br /&gt;
(poll() on pidfd).&lt;br /&gt;
&lt;br /&gt;
At the moment CRIU can't dump processes that have pidfd's opened.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://lwn.net/Articles/801319/&lt;br /&gt;
* https://lwn.net/Articles/794707/&lt;br /&gt;
* https://github.com/torvalds/linux/blob/v5.16/kernel/fork.c#L1877&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Christian Brauner &amp;lt;christian@brauner.io&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memfd_secret file descriptors ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support C/R of memfd_secret descriptors&lt;br /&gt;
&lt;br /&gt;
There is memfd_secret syscall which allows user to open&lt;br /&gt;
special memfd which is backed by special memory range which&lt;br /&gt;
is inaccessible by another processes (and the kernel too!).&lt;br /&gt;
&lt;br /&gt;
At the moment CRIU can't dump processes that have memfd_secret's opened.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://lwn.net/Articles/865256/&lt;br /&gt;
* https://warusadura.github.io/gsoc23-final-report.html&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/2247&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Mike Rapoport &amp;lt;mike.rapoport@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Forensic analysis of container checkpoints ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extending go-crit with capabilities for forensic analysis&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/checkpointctl&lt;br /&gt;
&lt;br /&gt;
The go-crit tool was created during GSoC 2022 to enable analysis of CRIU [[images]] with tools written in Go. It allows container management tools such as [https://github.com/checkpoint-restore/checkpointctl checkpointctl] and Podman to provide capabilities similar to CRIT. The goal of this project is to extend go-crit with functionality for forensic analysis of container checkpoints to provide a better user experience.&lt;br /&gt;
&lt;br /&gt;
The go-crit tool is still in its early stages of development. To effectively utilise this new feature, the checkpointctl tool would be extended to display information about the processes included in a container checkpoint and their runtime state (e.g., memory, open files, sockets, etc).&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://criu.org/CRIT_(Go_library)&lt;br /&gt;
* https://github.com/checkpoint-restore/go-criu/tree/master/crit&lt;br /&gt;
* https://kubernetes.io/blog/2022/12/05/forensic-container-checkpointing-alpha/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Restrict checks for open/mmaped files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Make sure the file opened (for fd or mapping) at restore is &amp;quot;the same&amp;quot; as it was on dump&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/pull/1123&lt;br /&gt;
&lt;br /&gt;
CRIU doesn't carry files contents (except for ghost ones) into images. Thus on dump it saves some &amp;quot;meta&amp;quot; for file to validate it's &amp;quot;the same&amp;quot; on restore. Currently this meta includes only the file size. The task is to add some cookie value that's somehow affected by file's contents. This is primarily needed to reduce the possibility to restore with wrong libraries.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://www.criu.org/Category:Files&lt;br /&gt;
* https://en.wikipedia.org/wiki/File_verification&lt;br /&gt;
&lt;br /&gt;
=== Optimize the pre-dump algorithm ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Optimize the pre-dump algorithm to avoid pinning to many memory in RAM&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/commit/98608b90de0f853b1c8a6e15b312320e1441c359 &lt;br /&gt;
&lt;br /&gt;
Current [[CLI/cmd/pre-dump|pre-dump]] mode is used to write task memory contents into image&lt;br /&gt;
files w/o stopping the task for too long. It does this by stopping the task, infecting it and&lt;br /&gt;
draining all the memory into a set of pipes. Then the task is cured, resumed and the pipes'&lt;br /&gt;
contents is written into images (maybe a [[page server]]). Unfortunately, this approach creates&lt;br /&gt;
a big stress on the memory subsystem, as keeping all memory in pipes creates a lot of unreclaimable&lt;br /&gt;
memory (pages in pipes are not swappable), as well as the number of pipes themselves can be huge, as&lt;br /&gt;
one pipe doesn't store more than a fixed amount of data (see pipe(7) man page).&lt;br /&gt;
&lt;br /&gt;
A solution for this problem is to use a sys_read_process_vm() syscall, which will mitigate&lt;br /&gt;
all of the above. To do this we need to allocate a temporary buffer in criu, then walk the&lt;br /&gt;
target process vm by copying the memory piece-by-piece into it, then flush the data into image&lt;br /&gt;
(or page server), and repeat.&lt;br /&gt;
&lt;br /&gt;
Ideally there should be sys_splice_process_vm() syscall in the kernel, that does the same as&lt;br /&gt;
the read_process_vm does, but vmsplices the data&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Memory pre dump]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/351&lt;br /&gt;
* [[Memory dumping and restoring]], [[Memory changes tracking]]&lt;br /&gt;
* [http://man7.org/linux/man-pages/man2/process_vm_readv.2.html process_vm_readv(2)] [http://man7.org/linux/man-pages/man2/vmsplice.2.html vmsplice(2)] [https://lkml.org/lkml/2018/1/9/32 RFC for splice_process_vm syscall]&lt;br /&gt;
&lt;br /&gt;
=== Porting crit functionalities in GO ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Implement image view and manipulation in Go&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/go-criu/pull/66&lt;br /&gt;
 &lt;br /&gt;
CRIU's checkpoint images are stored on disk using protobuf. For easier analysis of checkpoint files CRIU has a tool called [[CRIT|CRiu Image Tool (CRIT)]]. It can display/decode CRIU image files from binary protobuf to JSON as well as encode JSON files back to the binary format. With closer integration of CRIU in container runtimes it becomes important to be able to view the CRIU output files. Either for manipulation before restoring or for reading checkpoint statistics (memory pages written to disk, memory pages skipped, process downtime).&lt;br /&gt;
&lt;br /&gt;
Currently CRIT is implemented in Python, for easier integration in other Go projects it is important to have image manipulation and analysis available from GO. This means we need a Go based library to read/modify/write/encode/decode CRIU's image files. Based on this library a Go based implementation of CRIT would be useful.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[CRIT (Go library)]]&lt;br /&gt;
* https://github.com/snprajwal/gsoc-2022&lt;br /&gt;
&lt;br /&gt;
=== Support sparse ghosts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' While sparse ghost files were in part supported for quiet some time, we still was not able to handle big sparse ghost files and highly fragmented sparse ghost files effectively.&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/pull/1944 https://github.com/checkpoint-restore/criu/pull/1963&lt;br /&gt;
&lt;br /&gt;
When criu dumps processes it also dumps files that are opened by them. It does this by saving file names by which the files are accessible. But sometimes files can have no names. It may happen if a task opened a file and then removed it. To dump this file criu cannot save its name (because the name doesn't exist). Instead criu saves the whole file. This is called &amp;quot;ghost file&amp;quot;. Since saving the whole file is very expensive (copying lots of data on disk) criu limits the maximum size of a ghost file. The latter is also not good, because there are &amp;quot;sparse&amp;quot; files, that are large in size, but may be small from the real disk usage perspective. The goal of the task is to support sparse ghost files, i.e. limit the size of the ghost not by its length but by disk usage and when copying the data detect the used blocks and save only those.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
 &lt;br /&gt;
*[https://en.wikipedia.org/wiki/Sparse_file Sparse files]&lt;br /&gt;
*[[Dumping files]]&lt;br /&gt;
*[[Invisible files]]&lt;br /&gt;
*[https://www.kernel.org/doc/html/latest/filesystems/fiemap.html Fiemap ioctl]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5848</id>
		<title>Google Summer of Code Ideas</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Google_Summer_of_Code_Ideas&amp;diff=5848"/>
		<updated>2026-01-25T12:25:06Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. &lt;br /&gt;
&lt;br /&gt;
This page contains project ideas for upcoming Google Summer of Code.&lt;br /&gt;
&lt;br /&gt;
== Contact ==&lt;br /&gt;
&lt;br /&gt;
First, make sure to go through the [[GSoC Students Recommendations]]. Once you build CRIU locally and C/R a simple process successfully, please contact the respective mentor for the idea you are interested in. For general questions feel free to send an email to the [mailto:criu@lists.linux.dev mailing list] or write in [https://gitter.im/save-restore/criu gitter].&lt;br /&gt;
&lt;br /&gt;
== Project ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Add support for memory compression ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support compression for page images&lt;br /&gt;
 &lt;br /&gt;
We would like to support memory page files compression&lt;br /&gt;
in CRIU using one of the fastest algorithms (it's matter&lt;br /&gt;
of discussion which one to choose!).&lt;br /&gt;
&lt;br /&gt;
This task does not require any Linux kernel modifications&lt;br /&gt;
and scope is limited to CRIU itself. At the same time it's&lt;br /&gt;
complex enough as we need to touch memory dump/restore codepath&lt;br /&gt;
in CRIU and also handle many corner cases like page-server and stuff.&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Use eBPF to lock and unlock the network ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Use eBPF instead of external iptables-restore tool for network lock and unlock.&lt;br /&gt;
&lt;br /&gt;
During checkpointing and restoring CRIU locks the network to make sure no network packets are accepted by the network stack during the time the process is checkpointed. Currently CRIU calls out to iptables-restore to create and delete the corresponding iptables rules. Another approach which avoids calling out to the external binary iptables-restore would be to directly inject eBPF rules. There have been reports from users that iptables-restore fails in some way and eBPF could avoid this external dependency.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://www.criu.org/TCP_connection#Checkpoint_and_restore_TCP_connection&lt;br /&gt;
* https://github.com/systemd/systemd/blob/master/src/core/bpf-firewall.c&lt;br /&gt;
* https://blog.zeyady.com/2021-08-16/gsoc-criu&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files on detached mounts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Initial support of open files on &amp;quot;detached&amp;quot; mounts&lt;br /&gt;
&lt;br /&gt;
When criu dumps a process with an open fd on a file, it gets the mount identifier (mnt_id) via /proc/&amp;lt;pid&amp;gt;/fdinfo/&amp;lt;fd&amp;gt;, so that criu knows from which exact mount the file was initially opened. This way criu can restore this fd by opening the same exact file from topologically the same mount in restored mount tree.&lt;br /&gt;
&lt;br /&gt;
Restoring fd from the right mount can be important in different cases, for instance if the process would later want to resolve paths relative to the fd, and obviously resolving from the same file on different mount can lead to different resolved paths, or if the process wants to check path to the file via /proc/&amp;lt;pid&amp;gt;/fd/&amp;lt;fd&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
But we have a problem finding on which mount we need to reopen the file at restore if we only know mnt_id but can't find this mnt_id in /proc/&amp;lt;pid&amp;gt;/mountinfo.&lt;br /&gt;
&lt;br /&gt;
Mountinfo file shows the mount tree topology of current mntns: parent - child relations, sharing group information, mountpoint and fs root information. And if we don't see mnt_id in it we don't know anything about this mount.&lt;br /&gt;
&lt;br /&gt;
This can happen in two cases&lt;br /&gt;
&lt;br /&gt;
* 1) external mount or file - if file was opened from e.g. host it's mount would not be visible in container mountinfo&lt;br /&gt;
* 2) mount was lazily unmounted&lt;br /&gt;
&lt;br /&gt;
In case of 1) we have criu options to help criu handle external dependencies.&lt;br /&gt;
&lt;br /&gt;
In case of 2) or no options provided criu can't resolve mnt_id in mountinfo and criu fails.&lt;br /&gt;
&lt;br /&gt;
'''Solution:'''&lt;br /&gt;
We can handle 2) with: resolving major/minor via fstat, using name_to_handle_at and open_by_handle_at to open same file on any other available mount from same superblock (same major/minor) in container. Now we have fd2 of the same file as fd, but on existing mount we can dump it as usual instead, and mark it as &amp;quot;detached&amp;quot; in image, now criu on restore knows where to find this file, but instead of just opening fd2 from actually restored mount, we create a temporary bindmount which is lazy unmounted just after open making the file appear as a file on detached mount.&lt;br /&gt;
&lt;br /&gt;
Known problems with this approach:&lt;br /&gt;
&lt;br /&gt;
* Stat on btrfs gives wrong major/minor&lt;br /&gt;
* file handles does not work everywhere&lt;br /&gt;
* file handles can return fd2 on deleted file or on other hardlink, this needs special handling.&lt;br /&gt;
&lt;br /&gt;
Additionally (optional part):&lt;br /&gt;
We can export real major/minor in fdinfo (kernel).&lt;br /&gt;
We can think of new kernel interface to get mount's major/minor and root (shift from fsroot) for detached mounts, if we have it we don't need file handle hack to find file on other mount (see fsinfo or getvalues kernel patches in LKML, can we add this info there?).&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentor: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Checkpointing of POSIX message queues ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Add support for checkpoint/restore of POSIX message queues&lt;br /&gt;
&lt;br /&gt;
POSIX message queues are a widely used inter-process communication mechanism. Message queues are implemented as files on a virtual filesystem (mqueue), where a file descriptor (message queue descriptor) is used to perform operations such as sending or receiving messages. To support checkpoint/restore of POSIX message queues, we need a kernel interface (similar to [https://github.com/checkpoint-restore/criu/commit/8ce9e947051e43430eb2ff06b96dddeba467b4fd MSG_PEEK]) that would enable the retrieval of messages from a queue without removing them. This project aims to implement such an interface that allows retrieving all messages and their priorities from a POSIX message queue.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/2285&lt;br /&gt;
* https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/ipc/mqueue.c&lt;br /&gt;
* https://www.man7.org/tlpi/download/TLPI-52-POSIX_Message_Queues.pdf&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
* Suggested by: Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Suspended project ideas ==&lt;br /&gt;
&lt;br /&gt;
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize logging engine ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' CRIU puts a lots of logs when doing its job. Logging is done with simple fprintf function. They are typically useless, but ''if'' some operation fails -- the logs are the only way to find what was the reason for failure.&lt;br /&gt;
&lt;br /&gt;
At the same time the printf family of functions is known to take some time to work -- they need to scan the format string for %-s and then convert the arguments into strings. If comparing criu dump with and without logs the time difference is notable (15%-20%), so speeding the logs up will help improve criu performance.&lt;br /&gt;
&lt;br /&gt;
One of the solutions to the problem might be binary logging. The problem with binary logs is the amount of efforts to convert existing logs to binary form. Preferably, the switch to binary logging either keeps existing log() calls intact, either has some automatics to convert them.&lt;br /&gt;
&lt;br /&gt;
The option to keep log() calls intact might be in pre-compilation pass of the sources. In this pass each &amp;lt;code&amp;gt;log(fmt, ...)&amp;lt;/code&amp;gt; call gets translated into a call to a binary log function that saves &amp;lt;code&amp;gt;fmt&amp;lt;/code&amp;gt; identifier copies all the args ''as is'' into the log file. The binary log decode utility, required in this case, should then find the fmt string by its ID in the log file and print the resulting message.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Better logging]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C, though decoder/preprocessor can be in any language&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Andrei Vagin&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IOUring support ===&lt;br /&gt;
The io_uring Asynchronous I/O (AIO) framework is a new Linux I/O interface, first introduced in upstream Linux kernel version 5.1 (March 2019). It provides a low-latency and feature-rich interface for applications that require AIO functionality.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://blogs.oracle.com/linux/an-introduction-to-the-io_uring-asynchronous-io-framework&lt;br /&gt;
* https://github.com/axboe/liburing&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert (+linux kernel)&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
&lt;br /&gt;
=== Add support for SPFS ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE&lt;br /&gt;
&lt;br /&gt;
NFS support is already implemented in Virtuozzo CRIU, but it's very beneficial to port it to mainline CRIU. The importaint part of it is the need to implement the integration of Stub-Proxy File System (SPFS) with LXC/yet_another_containers_environment.&lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/60&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/53&lt;br /&gt;
* https://github.com/skinsbursky/spfs&lt;br /&gt;
* https://patchwork.criu.org/series/137/&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: expert&lt;br /&gt;
* Language: C&lt;br /&gt;
* Mentor: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anonymise image files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Teach [[CRIT]] to remove sensitive information from images&lt;br /&gt;
 &lt;br /&gt;
When reporting a BUG it may be not acceptable for the reporter to send us raw images, as they may contain sensitive data. Need to teach CRIT to &amp;quot;anonymise&amp;quot; images for publication.&lt;br /&gt;
&lt;br /&gt;
List of data to shred:&lt;br /&gt;
&lt;br /&gt;
* Memory contents. For the sake of investigation, all the memory contents can be just removed. Only the sizes of pages*.img files are enough.&lt;br /&gt;
* Paths to files. Here we should keep the paths relations to each other. The simplest way seem to be replacing file names with &amp;quot;random&amp;quot; (or sequential) strings, BUT (!) keeping an eye on making this mapping be 1:1. Note, that file paths may also sit in sk-unix.img.&lt;br /&gt;
* Registers.&lt;br /&gt;
* Process names. (But relations should be kept).&lt;br /&gt;
* Contents of streams, i.e. pipe/fifo data, sk-queue, tcp-stream, tty data.&lt;br /&gt;
* Ghost files.&lt;br /&gt;
* Tarballs with tmpfs-s.&lt;br /&gt;
* IP addresses in sk-inet-s, ip tool dumps and net*.img.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Anonymize image files]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/360&lt;br /&gt;
* [[CRIT]], [[Images]]&lt;br /&gt;
* External links to mailing lists or web sites&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: beginner&lt;br /&gt;
* Language: Python&lt;br /&gt;
&lt;br /&gt;
=== Add support for checkpoint/restore of CORK-ed UDP socket ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support C/R of corked UDP socket&lt;br /&gt;
 &lt;br /&gt;
There's UDP_CORK option for sockets. As man page says:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    If this option is enabled, then all data output on this socket&lt;br /&gt;
    is accumulated into a single datagram that is transmitted when&lt;br /&gt;
    the option is disabled.  This option should not be used in&lt;br /&gt;
    code intended to be portable.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently criu refuses to dump this case, so it's effectively a bug. Supporting&lt;br /&gt;
this will need extending the kernel API to allow criu read back the write queue&lt;br /&gt;
of the socket (see [[TCP connection|how it's done]] for TCP sockets, for example). Then&lt;br /&gt;
the queue is written into the image and is restored into the socket (with the CORK&lt;br /&gt;
bit set too).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
&lt;br /&gt;
We already had a couple (3) of tries for this problem:&lt;br /&gt;
&lt;br /&gt;
* UDP_REPAIR approach didn't succeed: https://lore.kernel.org/netdev/721a2e32-c930-ad6b-5055-631b502ed11b@gmail.com/, https://lore.kernel.org/netdev/?q=udp_repair&lt;br /&gt;
* eBPF (CRIB) approach, socket queue iterator was not merged: https://lore.kernel.org/netdev/AM6PR03MB5848EDA002E3D7EACA7C6BDA99A52@AM6PR03MB5848.eurprd03.prod.outlook.com/, and we have general objections to CRIB approach https://lore.kernel.org/bpf/CAHk-=wjLWFa3i6+Tab67gnNumTYipj_HuheXr2RCq4zn0tCTzA@mail.gmail.com/&lt;br /&gt;
&lt;br /&gt;
We still have one idea we didn't try, as UDP allows packets to be lost on the way on restore we can somehow mark the socket to drop all data before UNCORK. This way we don't really need to restore contents of UDP CORK-ed sockets send queue.&lt;br /&gt;
 &lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/409&lt;br /&gt;
* https://github.com/criupatchwork/criu/commit/a532312&lt;br /&gt;
* [[Sockets]], [[TCP connection]]&lt;br /&gt;
* [[https://groups.google.com/forum/#!topic/comp.os.linux.networking/Uz8PYiTCZSg UDP cork explained]]&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate (+linux kernel)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Pavel Tikhomirov &amp;lt;ptikhomirov@virtuozzo.com&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=GSoC_completed_projects&amp;diff=5847</id>
		<title>GSoC completed projects</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=GSoC_completed_projects&amp;diff=5847"/>
		<updated>2026-01-25T12:24:22Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Coordinated checkpointing of distributed applications ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Enable coordinated container checkpointing with Kubernetes.&lt;br /&gt;
&lt;br /&gt;
Checkpointing support has been recently introduced in Kubernetes, where the&lt;br /&gt;
smallest deployable unit is a Pod (a group of containers).  Kubernetes is often&lt;br /&gt;
used to deploy applications that are distributed across multiple nodes.&lt;br /&gt;
However, checkpointing such distributed applications requires a coordination&lt;br /&gt;
mechanism to synchronize the checkpoint and restore operations. To address this&lt;br /&gt;
challenge, we have developed a new tool called &amp;lt;code&amp;gt;criu-coordinator&amp;lt;/code&amp;gt;&lt;br /&gt;
that relies on the action-script functionality of CRIU to enable synchronization&lt;br /&gt;
in distributed environments. This project aims to extend this tool to enable&lt;br /&gt;
seamless integration with the checkpointing functionality of Kubernetes.&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/behouba Behouba Manassé]&lt;br /&gt;
* [https://github.com/behouba/gsoc-2025 Final Report]&lt;br /&gt;
* [https://docs.google.com/presentation/d/e/2PACX-1vTNV6nObjjlGwH9wR555WJVC8k1jYhTCJ9GeHsFXlRUe91YRXESPHw2GtYKzsUJ1l907z_cic6PQHio/pub Presentation Slides]&lt;br /&gt;
* [https://youtu.be/fzXDqbq2X3s Presentation Recording]&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Rust / Go / C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;, Adrian Reber &amp;lt;areber@redhat.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for arm64 Guarded Control Stack (GCS) ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Support arm64 Guarded Control Stack (GCS)&lt;br /&gt;
 &lt;br /&gt;
The arm64 Guarded Control Stack (GCS) feature provides support for&lt;br /&gt;
hardware protected stacks of return addresses, intended to provide&lt;br /&gt;
hardening against return oriented programming (ROP) attacks and to make&lt;br /&gt;
it easier to gather call stacks for applications such as profiling (taken from [1]).&lt;br /&gt;
We would like to support arm64 Guarded Control Stack (GCS) in CRIU, which means&lt;br /&gt;
that CRIU should be able to Checkpoint/Restore applications using GCS.&lt;br /&gt;
&lt;br /&gt;
This task should not require any Linux kernel modifications&lt;br /&gt;
but will require a lot of effort to understand Linux kernel and&lt;br /&gt;
glibc support patches. We have a good example of support for&lt;br /&gt;
x86 shadow stack [4].&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [1] kernel support https://lore.kernel.org/all/20241001-arm64-gcs-v13-0-222b78d87eee@kernel.org&lt;br /&gt;
* [2] libc support https://inbox.sourceware.org/libc-alpha/20250117174119.3254972-1-yury.khrustalev@arm.com&lt;br /&gt;
* [3] libc tests https://inbox.sourceware.org/libc-alpha/20250210114538.1723249-1-yury.khrustalev@arm.com&lt;br /&gt;
* [4] x86 support https://github.com/checkpoint-restore/criu/pull/2306&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Contributor: [https://github.com/svilenkov Igor Svilenkov Bozic]&lt;br /&gt;
* [https://github.com/checkpoint-restore/criu/pull/2725 Final Report]&lt;br /&gt;
* [https://drive.google.com/file/d/1Uoz_E5K-1zRcZwEWXKVcsNtxmdzDIpiY/view?usp=sharing Presentation Recording]&lt;br /&gt;
* Linux Plumbers Conference Talk: [https://lpc.events/event/19/contributions/2237/ Guarded Control Stack on arm64: Challenges in Enabling Shadow Stack Support for CRIU]&lt;br /&gt;
* Skill level: expert (a lot of moving parts: Linux kernel / libc / CRIU)&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Suggested by: Mike Rapoport &amp;lt;rppt@kernel.org&amp;gt;&lt;br /&gt;
* Mentors: Mike Rapoport &amp;lt;rppt@kernel.org&amp;gt;, Andrei Vagin &amp;lt;avagin@gmail.com&amp;gt;, Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kubernetes operator for managing container checkpoints ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Develop a Kubernetes operator that automates the management of container checkpoints&lt;br /&gt;
&lt;br /&gt;
Container checkpointing has recently been introduced as an alpha feature in Kubernetes.&lt;br /&gt;
To enable this feature, the kubelet API was extended with an endpoint that enables the&lt;br /&gt;
creation of checkpoints for individual containers. By default, all container checkpoints&lt;br /&gt;
are stored as tar archives in &amp;lt;code&amp;gt;/var/lib/kubelet/checkpoints&amp;lt;/code&amp;gt; using the following&lt;br /&gt;
file name format: &amp;lt;code&amp;gt;checkpoint-&amp;lt;pod-name&amp;gt;_&amp;lt;namespace-name&amp;gt;-&amp;lt;container-name&amp;gt;-&amp;lt;timestamp&amp;gt;.tar&amp;lt;/code&amp;gt;.&lt;br /&gt;
However, the current implementation does not provide a mechanism for limiting the number&lt;br /&gt;
of checkpoints, which may lead to filling up all existing disk space. This project aims to&lt;br /&gt;
develop a Kubernetes operator that automates the management of checkpoints and provides&lt;br /&gt;
a garbage collection mechanism to discard obsolete checkpoints.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://github.com/checkpoint-restore/checkpoint-restore-operator&lt;br /&gt;
* https://kubernetes.io/docs/reference/node/kubelet-checkpoint-api/&lt;br /&gt;
* https://kubernetes.io/blog/2022/12/05/forensic-container-checkpointing-alpha/&lt;br /&gt;
* https://kubernetes.io/blog/2023/03/10/forensic-container-analysis/&lt;br /&gt;
* https://github.com/kubernetes/kubernetes/pull/115888&lt;br /&gt;
* https://github.com/kubernetes/enhancements/issues/2008&lt;br /&gt;
&lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: Go&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Adrian Reber &amp;lt;areber@redhat.com&amp;gt;, Radostin Stoyanov &amp;lt;rstoyanov@fedoraproject.org&amp;gt;, Prajwal S N &amp;lt;prajwalnadig21@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Adrian Reber&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Add support for pidfd file descriptors ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support C/R of pidfd descriptors&lt;br /&gt;
&lt;br /&gt;
There is pidfd_open syscall which allows opening&lt;br /&gt;
a special PID file descriptor. A user can send a signal to&lt;br /&gt;
the process (pidfd_send_signal syscall), wait for the process&lt;br /&gt;
(poll() on pidfd).&lt;br /&gt;
&lt;br /&gt;
At the moment CRIU can't dump processes that have pidfd's opened.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://lwn.net/Articles/801319/&lt;br /&gt;
* https://lwn.net/Articles/794707/&lt;br /&gt;
* https://github.com/torvalds/linux/blob/v5.16/kernel/fork.c#L1877&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Christian Brauner &amp;lt;christian@brauner.io&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Add support for memfd_secret file descriptors ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Support C/R of memfd_secret descriptors&lt;br /&gt;
&lt;br /&gt;
There is memfd_secret syscall which allows user to open&lt;br /&gt;
special memfd which is backed by special memory range which&lt;br /&gt;
is inaccessible by another processes (and the kernel too!).&lt;br /&gt;
&lt;br /&gt;
At the moment CRIU can't dump processes that have memfd_secret's opened.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://lwn.net/Articles/865256/&lt;br /&gt;
* https://warusadura.github.io/gsoc23-final-report.html&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/pull/2247&lt;br /&gt;
 &lt;br /&gt;
'''Details:'''&lt;br /&gt;
* Skill level: intermediate&lt;br /&gt;
* Language: C&lt;br /&gt;
* Expected size: 350 hours&lt;br /&gt;
* Mentors: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;, Mike Rapoport &amp;lt;mike.rapoport@gmail.com&amp;gt;&lt;br /&gt;
* Suggested by: Alexander Mikhalitsyn &amp;lt;alexander@mihalicyn.com&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Forensic analysis of container checkpoints ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Extending go-crit with capabilities for forensic analysis&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/checkpointctl&lt;br /&gt;
&lt;br /&gt;
The go-crit tool was created during GSoC 2022 to enable analysis of CRIU [[images]] with tools written in Go. It allows container management tools such as [https://github.com/checkpoint-restore/checkpointctl checkpointctl] and Podman to provide capabilities similar to CRIT. The goal of this project is to extend go-crit with functionality for forensic analysis of container checkpoints to provide a better user experience.&lt;br /&gt;
&lt;br /&gt;
The go-crit tool is still in its early stages of development. To effectively utilise this new feature, the checkpointctl tool would be extended to display information about the processes included in a container checkpoint and their runtime state (e.g., memory, open files, sockets, etc).&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://criu.org/CRIT_(Go_library)&lt;br /&gt;
* https://github.com/checkpoint-restore/go-criu/tree/master/crit&lt;br /&gt;
* https://kubernetes.io/blog/2022/12/05/forensic-container-checkpointing-alpha/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Restrict checks for open/mmaped files ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Make sure the file opened (for fd or mapping) at restore is &amp;quot;the same&amp;quot; as it was on dump&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/pull/1123&lt;br /&gt;
&lt;br /&gt;
CRIU doesn't carry files contents (except for ghost ones) into images. Thus on dump it saves some &amp;quot;meta&amp;quot; for file to validate it's &amp;quot;the same&amp;quot; on restore. Currently this meta includes only the file size. The task is to add some cookie value that's somehow affected by file's contents. This is primarily needed to reduce the possibility to restore with wrong libraries.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* https://www.criu.org/Category:Files&lt;br /&gt;
* https://en.wikipedia.org/wiki/File_verification&lt;br /&gt;
&lt;br /&gt;
=== Optimize the pre-dump algorithm ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' Optimize the pre-dump algorithm to avoid pinning to many memory in RAM&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/commit/98608b90de0f853b1c8a6e15b312320e1441c359 &lt;br /&gt;
&lt;br /&gt;
Current [[CLI/cmd/pre-dump|pre-dump]] mode is used to write task memory contents into image&lt;br /&gt;
files w/o stopping the task for too long. It does this by stopping the task, infecting it and&lt;br /&gt;
draining all the memory into a set of pipes. Then the task is cured, resumed and the pipes'&lt;br /&gt;
contents is written into images (maybe a [[page server]]). Unfortunately, this approach creates&lt;br /&gt;
a big stress on the memory subsystem, as keeping all memory in pipes creates a lot of unreclaimable&lt;br /&gt;
memory (pages in pipes are not swappable), as well as the number of pipes themselves can be huge, as&lt;br /&gt;
one pipe doesn't store more than a fixed amount of data (see pipe(7) man page).&lt;br /&gt;
&lt;br /&gt;
A solution for this problem is to use a sys_read_process_vm() syscall, which will mitigate&lt;br /&gt;
all of the above. To do this we need to allocate a temporary buffer in criu, then walk the&lt;br /&gt;
target process vm by copying the memory piece-by-piece into it, then flush the data into image&lt;br /&gt;
(or page server), and repeat.&lt;br /&gt;
&lt;br /&gt;
Ideally there should be sys_splice_process_vm() syscall in the kernel, that does the same as&lt;br /&gt;
the read_process_vm does, but vmsplices the data&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[Memory pre dump]]&lt;br /&gt;
* https://github.com/checkpoint-restore/criu/issues/351&lt;br /&gt;
* [[Memory dumping and restoring]], [[Memory changes tracking]]&lt;br /&gt;
* [http://man7.org/linux/man-pages/man2/process_vm_readv.2.html process_vm_readv(2)] [http://man7.org/linux/man-pages/man2/vmsplice.2.html vmsplice(2)] [https://lkml.org/lkml/2018/1/9/32 RFC for splice_process_vm syscall]&lt;br /&gt;
&lt;br /&gt;
=== Porting crit functionalities in GO ===&lt;br /&gt;
 &lt;br /&gt;
'''Summary:''' Implement image view and manipulation in Go&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/go-criu/pull/66&lt;br /&gt;
 &lt;br /&gt;
CRIU's checkpoint images are stored on disk using protobuf. For easier analysis of checkpoint files CRIU has a tool called [[CRIT|CRiu Image Tool (CRIT)]]. It can display/decode CRIU image files from binary protobuf to JSON as well as encode JSON files back to the binary format. With closer integration of CRIU in container runtimes it becomes important to be able to view the CRIU output files. Either for manipulation before restoring or for reading checkpoint statistics (memory pages written to disk, memory pages skipped, process downtime).&lt;br /&gt;
&lt;br /&gt;
Currently CRIT is implemented in Python, for easier integration in other Go projects it is important to have image manipulation and analysis available from GO. This means we need a Go based library to read/modify/write/encode/decode CRIU's image files. Based on this library a Go based implementation of CRIT would be useful.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
* [[CRIT (Go library)]]&lt;br /&gt;
* https://github.com/snprajwal/gsoc-2022&lt;br /&gt;
&lt;br /&gt;
=== Support sparse ghosts ===&lt;br /&gt;
&lt;br /&gt;
'''Summary:''' While sparse ghost files were in part supported for quiet some time, we still was not able to handle big sparse ghost files and highly fragmented sparse ghost files effectively.&lt;br /&gt;
&lt;br /&gt;
'''Merged:''' https://github.com/checkpoint-restore/criu/pull/1944 https://github.com/checkpoint-restore/criu/pull/1963&lt;br /&gt;
&lt;br /&gt;
When criu dumps processes it also dumps files that are opened by them. It does this by saving file names by which the files are accessible. But sometimes files can have no names. It may happen if a task opened a file and then removed it. To dump this file criu cannot save its name (because the name doesn't exist). Instead criu saves the whole file. This is called &amp;quot;ghost file&amp;quot;. Since saving the whole file is very expensive (copying lots of data on disk) criu limits the maximum size of a ghost file. The latter is also not good, because there are &amp;quot;sparse&amp;quot; files, that are large in size, but may be small from the real disk usage perspective. The goal of the task is to support sparse ghost files, i.e. limit the size of the ghost not by its length but by disk usage and when copying the data detect the used blocks and save only those.&lt;br /&gt;
&lt;br /&gt;
'''Links:'''&lt;br /&gt;
 &lt;br /&gt;
*[https://en.wikipedia.org/wiki/Sparse_file Sparse files]&lt;br /&gt;
*[[Dumping files]]&lt;br /&gt;
*[[Invisible files]]&lt;br /&gt;
*[https://www.kernel.org/doc/html/latest/filesystems/fiemap.html Fiemap ioctl]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Articles&amp;diff=5846</id>
		<title>Articles</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Articles&amp;diff=5846"/>
		<updated>2026-01-22T09:56:02Z</updated>

		<summary type="html">&lt;p&gt;Radostin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;This is a collection of external articles regarding the CRIU project, sorted by date.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
   NOTE this page is included into [[Main Page]] (look for External articles)&lt;br /&gt;
        so please make sure that Main Page looks good after your edits!&lt;br /&gt;
&lt;br /&gt;
   PLEASE keep the lists sorted by date, newest ones on top.&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
* 2026-01-21, [https://kubernetes.io/blog/2026/01/21/introducing-checkpoint-restore-wg/ Announcing the Checkpoint/Restore Working Group]&lt;br /&gt;
* 2025-11-17, [https://radostin.io/files/stoyanov-canopie-hpc-2025.pdf Engine-Agnostic Model Hot-Swapping for Cost-Effective LLM Inference]&lt;br /&gt;
* 2025-09-16, [https://www.idt.mdu.se/~aps01/research/2025_Johansson/2025-JSA-Johansson.pdf Checkpointing and State Transfer for Industrial Controller Redundancy]&lt;br /&gt;
* 2025-08-13, [https://www.usenix.org/conference/usenixsecurity25/presentation/li-ao Software Availability Protection in Cyber-Physical Systems]&lt;br /&gt;
* 2025-07-14, [https://arxiv.org/abs/2405.12079 PhoenixOS: Concurrent OS-level GPU Checkpoint and Restore with Validated Speculation]&lt;br /&gt;
* 2025-06-18, [https://is.muni.cz/th/ekn8q/ Improving Checkpoint/Restore Functionality in Kubernetes]&lt;br /&gt;
* 2025-06-17, LWN.net: [https://lwn.net/Articles/1024747/ A parallel path for GPU restore in CRIU]&lt;br /&gt;
* 2025-06-13, [https://doi.org/10.1007/978-3-032-10507-3_3 Kubernetes Scheduling with Checkpoint/Restore: Challenges and Open Problems]&lt;br /&gt;
&amp;lt;!------------------------------------------------&lt;br /&gt;
   This is to cut the rest of it for Main Page,&lt;br /&gt;
   adding the More... link instead.&lt;br /&gt;
   Make sure to move this whole block up from time to time.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;: '''[[Articles|More external articles...]]'''&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
     the below stuff is now shown on the Main Page&lt;br /&gt;
--------------------------------------------------&amp;gt;&lt;br /&gt;
* 2025-06-12, [https://doi.org/10.1109/TNSM.2025.3579051 MOSE: A Novel Orchestration Framework for Stateful Microservice Migration at the Edge]&lt;br /&gt;
* 2025-05-14, [https://doi.org/10.1145/3672608.3707723 Elastic Vertical Memory Management for Container-based Stateful Applications in Kubernetes]&lt;br /&gt;
* 2025-05-02, [https://doi.org/10.1007/s42514-025-00227-0 Practice and Observation: Live Migration for MPI Workload]&lt;br /&gt;
* 2025-04-28, [https://www.usenix.org/conference/nsdi25/presentation/segarra GRANNY: Granular Management of Compute-Intensive Applications in the Cloud]&lt;br /&gt;
* 2025-04-28, [https://ieeexplore.ieee.org/abstract/document/10979504 KubeSPT: Stateful Pod Teleportation for Service Resilience with Live Migration]&lt;br /&gt;
* 2025-04-04, [https://doi.org/10.1109/ICIN64016.2025.10942720 Optimizing Stateful Microservice Migration in Kubernetes with MS2M and Forensic Checkpointing]&lt;br /&gt;
* 2025-03-30, [https://doi.org/10.1145/3676641.3715988 CXLfork: Fast Remote Fork over CXL Fabrics]&lt;br /&gt;
* 2025-02-23, [https://arxiv.org/abs/2502.16631 CRIUgpu: Transparent Checkpointing of GPU-Accelerated Workloads]&lt;br /&gt;
* 2025-02-05, [https://doi.org/10.1007/s00607-025-01447-6 A Comprehensive Performance Evaluation of Container Migration Strategies]&lt;br /&gt;
* 2024-11-21, [https://dl.acm.org/doi/10.1145/3698038.3698510 On-demand and Parallel Checkpoint/Restore for GPU Applications]&lt;br /&gt;
* 2024-11-20, [https://dl.acm.org/doi/10.1145/3698038.3698513 Snapipeline: Accelerating Snapshot Startup for FaaS Containers]&lt;br /&gt;
* 2024-09-06, [https://dl.acm.org/doi/10.1145/3660319.3660330 Live Migration of Multi-Container Kubernetes Pods in Multi-Cluster Serverless Edge Systems]&lt;br /&gt;
* 2024-09-04, [https://dl.acm.org/doi/10.1145/3678015.3680477 Towards Efficient End-to-End Encryption for Container Checkpointing Systems]&lt;br /&gt;
* 2024-09-02, [https://doi.org/10.1016/j.future.2024.107495 CSMD: Container state management for deployment in cloud data centers]&lt;br /&gt;
* 2024-08-21, [https://ieeexplore.ieee.org/abstract/document/10628207 The State of Container Checkpointing with CRIU: A Multi-Case Experience Report]&lt;br /&gt;
* 2024-08-04, [https://dl.acm.org/doi/abs/10.1145/3672197.3673432 Custom Page Fault Handling With eBPF]&lt;br /&gt;
* 2024-08-03, [https://dl.acm.org/doi/10.1145/3663408.3663416 Software-based Live Migration for Containerized RDMA]&lt;br /&gt;
* 2024-07-30, [https://ieeexplore.ieee.org/abstract/document/10606135 Packet Buffering to Minimize Service Downtime and Packet Loss During Redundancy Switchover]&lt;br /&gt;
* 2024-07-30, [https://dl.acm.org/doi/abs/10.1145/3664476.3670895 Don't, Stop, Drop, Pause: Forensics of CONtainer CheckPOINTs (ConPoint)]&lt;br /&gt;
* 2024-07-25, [https://doi.org/10.1186/s13677-024-00687-9 MDB-KCP: persistence framework of in-memory database with CRIU-based container checkpoint in Kubernetes]&lt;br /&gt;
* 2024-07-23, [https://ieeexplore.ieee.org/abstract/document/10631042 Dapper: A Lightweight and Extensible Framework for Live Program State Rewriting]&lt;br /&gt;
* 2024-07-07, [https://ieeexplore.ieee.org/abstract/document/10643902 FastMig: Leveraging FastFreeze to Establish Robust Service Liquidity in Cloud 2.0]&lt;br /&gt;
* 2024-07-02, [https://developer.nvidia.com/blog/checkpointing-cuda-applications-with-criu/ Checkpointing CUDA Applications with CRIU]&lt;br /&gt;
* 2024-06-19, [https://arxiv.org/abs/2406.13856 Kishu: Time-Traveling for Computational Notebooks]&lt;br /&gt;
* 2024-06-09, [https://dl.acm.org/doi/abs/10.1145/3626246.3654752 Demonstration of ElasticNotebook: Migrating Live Computational Notebook States]&lt;br /&gt;
* 2024-05-30, [https://is.muni.cz/th/tadf0/phd-thesis-proposal-digital.pdf In the Container Era: A Coup in Reliable Computing Over Unreliable Infrastructure]&lt;br /&gt;
* 2024-05-20, [https://arxiv.org/abs/2405.12079v1 ParallelGPUOS: A Concurrent OS-level GPU Checkpoint and Restore System using Validated Speculation]&lt;br /&gt;
* 2024-05-09, [https://www.sciencedirect.com/science/article/pii/S1383762124000948 Practicable live container migrations in high performance computing clouds: Diskless, iterative, and connection-persistent]&lt;br /&gt;
* 2024-05-06, [https://ieeexplore.ieee.org/abstract/document/10701375 Workload-Aware Live Migratable Cloud Instance Detector]&lt;br /&gt;
* 2024-05-06, [https://ieeexplore.ieee.org/abstract/document/10707218 Migration of Isolated Application Across Heterogeneous Edge Systems]&lt;br /&gt;
* 2024-04-26, [https://fis.tu-dresden.de/portal/files/53673228/planeta_bearb_pref2b_20240912193924.pdf Fine-grained OS Control over High-performance Networking]&lt;br /&gt;
* 2024-04-22, [https://dl.acm.org/doi/abs/10.1145/3627703.3650085 Just-In-Time Checkpointing: Low Cost Error Recovery from Deep Learning Training Failures]&lt;br /&gt;
* 2024-04-22, [https://dl.acm.org/doi/10.1145/3627703.3629556 Pronghorn: Effective Checkpoint Orchestration for Serverless Hot-Starts]&lt;br /&gt;
* 2024-02-09, [https://ejournal.unitomo.ac.id/index.php/inform/article/view/7498/3738 Forensic Analysis of Podman Container Towards Metasploit Backdoor Using Checkpointctl]&lt;br /&gt;
* 2024-01-29, [https://www.sciencedirect.com/science/article/pii/S0167739X24000190 Prebaking runtime environments to improve the FaaS cold start latency]&lt;br /&gt;
* 2023-11-27, [https://dl.acm.org/doi/abs/10.1145/3590140.3629121 DynaCut: A Framework for Dynamic and Adaptive Program Customization]&lt;br /&gt;
* 2023-11-12, [https://dl.acm.org/doi/10.1145/3624062.3624254 Checkpoint/Restart for CUDA Kernels]&lt;br /&gt;
* 2023-11-10, [https://ieeexplore.ieee.org/abstract/document/10314806 Design, Modeling, and Implementation of Robust Migration of Stateful Edge Microservices]&lt;br /&gt;
* 2023-10-23, [https://dl.acm.org/doi/10.1145/3605181.3626289 Evicting for the greater good: The Case for Reactive Checkpointing in Serverless Computing]&lt;br /&gt;
* 2023-10-01, [https://dl.acm.org/doi/10.14778/3626292.3626296 ElasticNotebook: Enabling Live Migration for Computational Notebooks]&lt;br /&gt;
* 2023-09-25, [https://ieeexplore.ieee.org/abstract/document/10419298 Transparent Fault Tolerance for Stateful Applications in Kubernetes with Checkpoint/Restore]&lt;br /&gt;
* 2023-07-21, [https://vtechworks.lib.vt.edu/items/20cd28e6-1dba-4c21-b221-59f5f345205f CRIU-RTX: Remote Thread eXecution using Checkpoint/Restore in Userspace]&lt;br /&gt;
* 2023-07-10, [https://www.usenix.org/conference/osdi23/presentation/wei-rdma No Provisioned Concurrency: Fast RDMA-codesigned Remote Fork for Serverless Computing]&lt;br /&gt;
* 2023-07-06, [https://ieeexplore.ieee.org/abstract/document/10207336 Microservice Debugging with Checkpoint-Restart]&lt;br /&gt;
* 2023-05-28, [https://ieeexplore.ieee.org/abstract/document/10278877 Processing-Aware Migration Model for Stateful Edge Microservices]&lt;br /&gt;
* 2023-04-20, [https://www.mdpi.com/2504-446X/7/5/286 A Dynamic Checkpoint Interval Decision Algorithm for Live Migration-Based Drone-Recovery System]&lt;br /&gt;
* 2023-03-10, [https://kubernetes.io/blog/2023/03/10/forensic-container-analysis/ Forensic Container Analysis]&lt;br /&gt;
* 2023-01-31, [https://vtechworks.lib.vt.edu/items/ba974ad9-eac9-4306-b3fc-5f0411b89b99 HetMigrate: Secure and Efficient Cross-architecture Process Live Migration]&lt;br /&gt;
* 2023-01-14, [https://arxiv.org/abs/2301.05861 Async-fork: Mitigating Query Latency Spikes Incurred by the Fork-based Snapshot Mechanism from the OS Level]&lt;br /&gt;
* 2023-01-10, [https://ieeexplore.ieee.org/abstract/document/10077919 A Container Pre-copy Migration Method Based on Dirty Page Prediction and Compression]&lt;br /&gt;
* 2022-12-18, [https://doi.org/10.1109/HiPC56025.2022.00023 LDT: Lightweight Dirty Tracking of Memory Pages for x86 Systems]&lt;br /&gt;
* 2022-11-13, [https://dl.acm.org/doi/abs/10.5555/3571885.3572000 Out of hypervisor (OoH): efficient dirty page tracking in userspace using hardware virtualization feature]&lt;br /&gt;
* 2022-08-07, [https://www.sciencedirect.com/science/article/pii/S1084804522001369 iContainer: Consecutive Checkpointing with Rapid Resilience for Immortal Container-based Services]&lt;br /&gt;
* 2022-08-03, [https://ieeexplore.ieee.org/document/9844071 Demonstration of Containerized Central Unit Live Migration in 5G Radio Access Network]&lt;br /&gt;
* 2022-07-11, [https://www.usenix.org/conference/atc22/presentation/zhou-diyu RRC: Responsive Replicated Containers]&lt;br /&gt;
* 2022-05-25, [https://hal.inria.fr/hal-03587358/ Good Shepherds Care For Their Cattle: Seamless Pod Migration in Geo-Distributed Kubernetes]&lt;br /&gt;
* 2022-05-06, [https://doi.org/10.1145/3477314.3507221 An architecture proposal for checkpoint/restore on stateful containers]&lt;br /&gt;
* 2022-04-24, [https://www.ndss-symposium.org/ndss-paper/auto-draft-295/ FitM: Binary-Only Coverage-Guided Fuzzing for Stateful Network Protocols]&lt;br /&gt;
* 2022-03-01, [https://systex22.github.io/papers/systex22-final71.pdf Transparent, Cross-ISA Enclave Offloading]&lt;br /&gt;
* 2022-02-25, [https://dl.acm.org/doi/abs/10.1145/3516807.3516817 Portkey: Hypervisor-Assisted Container Migration in Nested Cloud Environments]&lt;br /&gt;
* 2022-02-16, [https://arxiv.org/abs/2202.07848 Singularity: Planet-Scale, Preemptible and Elastic Scheduling of AI Workloads]&lt;br /&gt;
* 2022-02-08, [https://doi.org/10.48550/arXiv.2202.03643 SNPSFuzzer: A Fast Greybox Fuzzer for Stateful Network Protocols using Snapshots]&lt;br /&gt;
* 2021-12-17, [https://hal.archives-ouvertes.fr/hal-03487607/document Standard-compliant parallel SystemC simulation of loosely-timed transaction level models: From baremetal to Linux-based applications support]&lt;br /&gt;
* 2021-07-14, [https://www.usenix.org/conference/atc21/presentation/planeta MigrOS: Transparent Live-Migration Support for Containerised RDMA Applications]&lt;br /&gt;
* 2021-07-06, [https://onlinelibrary.wiley.com/doi/10.1002/cpe.6474 Cricket: A virtualization layer for distributed execution of CUDA applications with checkpoint/restart support]&lt;br /&gt;
* 2021-06-07, [https://ieeexplore.ieee.org/abstract/document/9469425 Extending the QUIC Protocol to Support Live Container Migration at the Edge]&lt;br /&gt;
* 2021-04-21, [https://dl.acm.org/doi/10.1145/3447786.3456258 On-demand-fork: A Microsecond Fork for Memory-intensive and Latency-sensitive Applications]&lt;br /&gt;
* 2021-01-23, [https://arxiv.org/abs/2101.09584 HyCoR: Fault-Tolerant Replicated Containers Based on Checkpoint and Replay]&lt;br /&gt;
* 2020-12-11, [https://dl.acm.org/doi/abs/10.1145/3423211.3425682 Prebaking Functions to Warm the Serverless Cold Start]&lt;br /&gt;
* 2020-07-14, [https://ieeexplore.ieee.org/abstract/document/9139863 Fault-Tolerant Containers Using NiLiCon]&lt;br /&gt;
* 2020-07-08, [https://ieeexplore.ieee.org/document/9126743 Docker Container Deployment in Distributed Fog Infrastructures with Checkpoint/Restart]&lt;br /&gt;
* 2020-04-30, [https://dl.acm.org/doi/abs/10.1145/3342195.3387555 Balancing efficiency and fairness in heterogeneous GPU clusters for deep learning]&lt;br /&gt;
* 2020-03-17, [https://www.ssrg.ece.vt.edu/papers/vee20-h-container.pdf Edge Computing -- the Case for Heterogeneous-ISA Container Migration]&lt;br /&gt;
* 2019-10-03, [https://dl.acm.org/citation.cfm?id=3357542 Fast In-Memory CRIU for Docker Containers]&lt;br /&gt;
* 2019-09-24, [https://ieeexplore.ieee.org/document/8916436 Using Container Migration for High Performance Computing (HPC) Workloads Resilience]&lt;br /&gt;
* 2019-11-18, [https://ieeexplore.ieee.org/abstract/document/8946189 Optimizing Post-Copy Live Migration with System-Level Checkpoint Using Fabric-Attached Memory]&lt;br /&gt;
* 2019-09-11, [https://arxiv.org/pdf/1909.04945.pdf Performance Estimation of Container-Based Cloud-to-Fog Offloading]&lt;br /&gt;
* 2019-07-16, [https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=8754197 FastContainer: A Homeostatic System Architecture High-speed Adapting Execution Environment Changes]&lt;br /&gt;
* 2019-07-11, [https://ieeexplore.ieee.org/abstract/document/8814504 Exploring Potential for Non-Disruptive Vertical Auto Scaling and Resource Estimation in Kubernetes]&lt;br /&gt;
* 2019-07, University of Twente: [https://essay.utwente.nl/78342/1/coenen_MA_EEMCS.pdf Increasing Availability of the AEPU by Improving the Update Process]&lt;br /&gt;
* 2019-05-25, [https://dl.acm.org/citation.cfm?id=3303978 Replayable Execution Optimized for Page Sharing for a Managed Runtime Environment]&lt;br /&gt;
* 2019-04-29, Binghamton University: [http://www.cs.binghamton.edu/~huilu/pubs/mWarp.pdf mWarp: Accelerating Intra-Host Live Container Migration via Memory Warping]&lt;br /&gt;
* 2019-04-10, [https://lisas.de/~adrian/posts/2019-Apr-10-criu-and-selinux.html CRIU and SELinux]&lt;br /&gt;
* 2019-03-27, [https://www.mdpi.com/1424-8220/19/7/1488/pdf Container Migration in the Fog: A Performance Evaluation]&lt;br /&gt;
* 2019-03-25, [https://dl.acm.org/citation.cfm?id=3313947 Checkpointing and Migration of IoT Edge Functions]&lt;br /&gt;
* 2019-03-24, Future University Hakodate: [https://doi.asiabsdcon.org/10.25263/asiabsdcon2019/p07a Yet Another Container Migration on FreeBSD]&lt;br /&gt;
* 2019-03-09, [https://link.springer.com/article/10.1007/s10586-019-02920-6 Provenance-based fault tolerance technique recommendation for cloud-based scientific workflows: a practical approach]&lt;br /&gt;
* 2019-02-26, Georgia Institute of Technology / Peking University: [https://www.ndss-symposium.org/wp-content/uploads/2019/02/ndss2019_05A-3_Duan_paper.pdf Automating Patching of Vulnerable Open-Source Software Versions in Application Binaries]&lt;br /&gt;
* 2019-01-30, University West: [https://www.researchgate.net/publication/330798282_Evaluating_Distributed_MPI_Checkpoint_and_Restore_using_Docker_Containers_and_CRIU Evaluating Distributed MPI Checkpoint and Restore using Docker Containers and CRIU]&lt;br /&gt;
* 2018-12, University of Lille: [https://tel.archives-ouvertes.fr/tel-02011337/document Flexible Framework for Elasticity in Cloud Computing]&lt;br /&gt;
* 2018-12, Arizona State University: [https://search.proquest.com/openview/ef9070310256fe9ec9a663ebde537b36/1 Concurrent Checkpointing for Embedded Real-Time Systems]&lt;br /&gt;
* 2018-11-08, [https://lisas.de/~adrian/posts/2018-Nov-08-criu-configuration-files.html CRIU configuration files]&lt;br /&gt;
* 2018-11-06, [https://www.redhat.com/en/blog/using-criu-upgrade-vpn-servers-kernel-without-dropping-connections Using CRIU to upgrade a VPN server's kernel without dropping connections]&lt;br /&gt;
* 2018-10-13, [https://dl.acm.org/citation.cfm?id=3290626 Linux Process Tree Reconstruction Using The Attributed Grammar-Based Tree Transformation Model]&lt;br /&gt;
* 2018-10-10, [https://podman.io/blogs/2018/10/10/checkpoint-restore.html Adding checkpoint/restore support to Podman]&lt;br /&gt;
* 2018-10-08, [https://www.usenix.org/conference/osdi18/presentation/xiao Gandiva: Introspective Cluster Scheduling for Deep Learning]&lt;br /&gt;
* 2018-09-15, [https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8539562 Stateful Container Migration employing Checkpoint-based Restoration for Orchestrated Container Clusters]&lt;br /&gt;
* 2018-09-07, [https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8502659 Container Live Migration for Latency Critical Industrial Applications on Edge Computing]&lt;br /&gt;
* 2018-08-15, University of Maryland: [https://drum.lib.umd.edu/bitstream/handle/1903/20499/CS-TR-5056.pdf Fast and Service-preserving Recovery from Malware Infections Using CRIU]&lt;br /&gt;
* 2018-07-31, [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6131214/ Hot-starting software containers for STAR aligner]&lt;br /&gt;
* 2018-06-28, University of Aberdeen: [https://link.springer.com/chapter/10.1007/978-3-030-02465-9_13 Efficient Live Migration of Linux Containers]&lt;br /&gt;
* 2018-03-24, [https://www.smitechow.com/2018/03/compile-criu-on-centos-6.html Compile CRIU on CentOS 6]&lt;br /&gt;
* 2017-12-06, [https://lisas.de/~adrian/posts/2017-Dec-06-optimizing-live-container-migration-in-lxd.html Optimizing live container migration in LXD]&lt;br /&gt;
* 2017-10-12, Red Hat Blog: [http://rhelblog.redhat.com/2017/10/12/container-migration-around-the-world/ Container Migration Around The World]&lt;br /&gt;
* 2017-07-19, Red Hat Blog: [https://www.redhat.com/en/blog/how-can-process-snapshotrestore-help-save-your-day How can process snapshot/restore help save your day?]&lt;br /&gt;
* 2017-06-29, University West, Sweden: [http://www.diva-portal.org/smash/record.jsf?pid=diva2%3A1144045&amp;amp;dswid=4414 Distributed Checkpointing with Docker Containers in High Performance Computing]&lt;br /&gt;
* 2017-06-25, [https://ieeexplore.ieee.org/document/8030623 Autonomic Vertical Elasticity of Docker Containers with ELASTICDOCKER]&lt;br /&gt;
* 2017-06-06, [https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7980161 Voyager: Complete Container State Migration]&lt;br /&gt;
* 2017-06-06, Selectel Blog: [https://blog.selectel.com/managing-containers-runc/ Managing Containers in runC]&lt;br /&gt;
* 2016-12-16, University of Lisbon: [http://www.gsd.inesc-id.pt/~pjpf/ALMA-middleware-2016.pdf ALMA – GC-assisted JVM Live Migration for Java Server Applications]&lt;br /&gt;
* 2016-07-20, Red Hat KnowledgeBase: [https://access.redhat.com/articles/2455211 CRIU - Checkpoint/Restore in user space]&lt;br /&gt;
* 2016-07-20, LWN.net: [https://lwn.net/SubscriberLink/694593/4d6291b3f727791a/ Quality in open source: testing CRIU]&lt;br /&gt;
* 2016-06-22, Usenix: [https://www.usenix.org/conference/atc16/technical-sessions/presentation/kashyap Instant OS Updates via Userspace Checkpoint-and-Restart]&lt;br /&gt;
* 2016-05-04: [http://lisas.de/~adrian/?p=1183 Lazy Process Migration]&lt;br /&gt;
* 2015-12-31, [http://kimh.github.io/blog/jp/criu/experiment-to-suspend-and-resume-docker-container-with-criu-jp/ Use the CRIU Docker container of stop / resume to the challenge]&lt;br /&gt;
* 2015-12-31, [http://blog.codeship.com/how-containers-will-change-the-game-server-hosting-industry/ How Containers Will Change the Game Server Hosting Industry]&lt;br /&gt;
* 2015-11-24, [https://dl.acm.org/doi/10.1145/2814576.2814807 Improving Preemptive Scheduling with Application-Transparent Checkpointing in Shared Clusters]&lt;br /&gt;
* 2015-09-21, [http://blog.circleci.com/checkpoint-and-restore-docker-container-with-criu/ Checkpoint and restore Docker container with CRIU]&lt;br /&gt;
* 2015-09-21, [https://blog.docker.com/2015/09/dolly-demo-linuxcon-runc/ Dolly Demo at LinuxCon: Rapid cloning of existing services with runC]&lt;br /&gt;
* 2015-09-10, [http://blog.tonicdev.com/2015/09/10/time-traveling-in-node.js-notebooks.html Time Traveling in Node.js Notebooks]&lt;br /&gt;
* 2015-01-01, [http://www.cisco.com/c/dam/en/us/solutions/collateral/data-center-virtualization/openstack-at-cisco/linux-containers-white-paper-cisco-red-hat.pdfLinux Containers: Why They’re in Your Future and What Has to Happen First]&lt;br /&gt;
* 2015-07-01, [https://kubernetes.io/blog/2015/07/how-did-quake-demo-from-dockercon-work/ How did the Quake demo from DockerCon Work?]&lt;br /&gt;
* 2015-05-06, [https://insights.ubuntu.com/2015/05/06/live-migration-in-lxd/ Live Migration in LXD] Ubuntu Insignts&lt;br /&gt;
* 2015-04-22, TuxDiary [http://tuxdiary.com/2015/04/22/dump-debug-resume-process-criu/ Dump, debug, resume process with criu]&lt;br /&gt;
* 2014-12-12, Symposium on Information and Communication Systems (SInCom 2014) [https://lisas.de/~adrian/proceedingsSInCom2014.pdf Checkpoint/Restore in User-Space with Open MPI]&lt;br /&gt;
* 2014-11-03, [https://dl.acm.org/doi/10.1145/2660267.2660329 From Patches to Honey-Patches: Lightweight Attacker Misdirection, Deception, and Disinformation]&lt;br /&gt;
* 2014-09-31, [http://www.reuters.com/article/wa-parallels-idUSnBw035202a+100+BSW20141103 Parallels Surpasses One Million Deployed Virtual Containers]&lt;br /&gt;
* 2014-08-01, ADMIN magazine: [http://www.admin-magazine.com/Archive/2014/22/Save-and-Restore-Linux-Processes-with-CRIU Save and Restore Linux Processes with CRIU]&lt;br /&gt;
* 2014-02-15, OCCAM Reproduce: [http://heirman.net/papers/reproduce2014.pdf Efficient, Accurate and Reproducible Simulation of Multi-Threaded Workloads] ([http://www.occamportal.org/slides/reproduce/reproduce14_slides_05.pdf slides])&lt;br /&gt;
* 2013-11-25, Phoronix: [http://www.phoronix.com/scan.php?page=news_item&amp;amp;px=MTUyNjE Checkpoint-Restore Hits v1.0: Freeze Your Linux Apps]&lt;br /&gt;
* 2013-11-25, LWN: [http://lwn.net/Articles/574918/ A note about 1.0]&lt;br /&gt;
* 2013-10-29, LWN: [http://lwn.net/Articles/572125/ Kernel summit report]&lt;br /&gt;
* 2013-02-01, A blog [http://www.anchor.com.au/blog/2013/02/overview-of-checkpoint-and-restore-live-migrating-processes-on-a-linux-system/ post] upon LCA-2013 talk.&lt;br /&gt;
* 2013-01-09, LWN: [http://lwn.net/Articles/531939/ Checkpoint/restore and signals]&lt;br /&gt;
* 2012-11-20, LWN: [http://lwn.net/Articles/525675/ LCE: Checkpoint/restore in user space: are we there yet?]&lt;br /&gt;
* 2012-07-24, OpenVZ blog: [http://openvz.livejournal.com/42414.html CRtools 0.1 released!]&lt;br /&gt;
* 2012-05-01, LWN: [http://lwn.net/Articles/495304/ TCP connection repair]&lt;br /&gt;
* 2012-02-26, The International Symposium on Grids and Clouds (ISGC) [https://lisas.de/~adrian/ISGC-2012_031.pdf Pos (isgc 2012) 031 live process migration for load balancing and/or fault tolerance]&lt;br /&gt;
* 2012-01-31, LWN: [http://lwn.net/Articles/478111/ Preparing for user-space checkpoint/restore]&lt;br /&gt;
* 2011-07-19, LWN: [http://lwn.net/Articles/452184/ Checkpoint/restart (mostly) in user space]&lt;br /&gt;
&lt;br /&gt;
=== In Russian ===&lt;br /&gt;
* 13.05.2016, Habrahabr: [https://habrahabr.ru/post/283504/ Особенности тестирования технологии C/R в Linux]&lt;br /&gt;
* 09.03.2016, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=44015 Выпуск CRIU 2.0, системы для сохранения и восстановления состояния процессов в Linux]&lt;br /&gt;
* 18.12.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=43539 CRIU, путь от вызывающей непонимание разработки до интеграции в Red Hat Enterprise Linux] &lt;br /&gt;
* 09.12.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=43489 Выпуск CRIU 1.8, системы для сохранения и восстановления состояния процессов в Linux] &lt;br /&gt;
* 09.09.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=42939 Выпуск CRIU 1.7, системы для сохранения и восстановления состояния процессов в Linux]&lt;br /&gt;
* 25.08.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=42850 Проект OpenVZ анонсировал новый компонент для миграции Linux контейнеров - P.Haul]&lt;br /&gt;
* 27.05.2015, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=42315 Статус интеграции проектов CRIU и Docker]&lt;br /&gt;
* 25.11.2013, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=38519 Анонс выхода 1.0]&lt;br /&gt;
* 28.04.2015, Типичный программист: [http://tproger.ru/interview/pavel-emelyanov/ Разработка ядра Linux — это общение в клубе по интересам]&lt;br /&gt;
* 22.04.2013, Habrahabr: [http://habrahabr.ru/post/177499/ В преддверии очередного релиза CRIU]&lt;br /&gt;
* 04.03.2013, IT-computer: [http://www.it-computer.com/osvaivaem-sistemu-zamorozki-processov-criu Осваиваем систему заморозки процессов CRIU]&lt;br /&gt;
* 28.09.2012, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=34958 CRIU 0.2 release] &lt;br /&gt;
* 05.11.2013, Xakep: [https://xakep.ru/2013/11/05/criu-manual/ Осваиваем систему заморозки процессов CRIU]&lt;br /&gt;
* 15.08.2013, Habrahabr: [http://habrahabr.ru/company/parallels/blog/190066/ «Разработка ядра Linux — это общение в клубе по интересам»]&lt;br /&gt;
* 01.10.2012, YaC 2012: [http://events.yandex.ru/events/yac/2012/talks/352/ больше, чем живая миграция для Linux контейнеров]&lt;br /&gt;
* 24.07.2012, Habrahabr: [http://habrahabr.ru/post/148413/ CRIU — новый амбициозный проект для сохранения и восстановления состояния процессов]&lt;br /&gt;
* 24.07.2012, Ru-OpenVZ blog: [http://ru-openvz.livejournal.com/5753.html Вышел первый релиз CRtools, версия 0.1]&lt;br /&gt;
* 24.07.2012, Opennet: [http://www.opennet.ru/opennews/art.shtml?num=34408 Первый релиз CRtools, утилиты для заморозки и восстановления состояния процессов в Linux]&lt;br /&gt;
* 24.07.2012, LOR: [http://www.linux.org.ru/news/kernel/8021514 Вышел первый релиз CRtools, версия 0.1]&lt;br /&gt;
* Копипаста о v0.1 &amp;quot;CRIU / CRtools 0.1 — создание контрольных точек Linux-приложений и восстановление с них&amp;quot;: [http://rosinvest.com/novosti/949423 Rosinvest], [http://www.nixp.ru/news/11854.html NIXP] [http://pcnews.ru/top/news/day/criu-crtools-linux-openvz-checkpoint-restore-in-userspace-cpt-system-90-10-lxc-org-398305.html PCNews]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Rseq&amp;diff=5845</id>
		<title>Rseq</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Rseq&amp;diff=5845"/>
		<updated>2026-01-17T15:13:29Z</updated>

		<summary type="html">&lt;p&gt;Radostin: Radostin moved page Rseq to Restartable Sequences&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Restartable Sequences]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Restartable_Sequences&amp;diff=5844</id>
		<title>Restartable Sequences</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Restartable_Sequences&amp;diff=5844"/>
		<updated>2026-01-17T15:13:29Z</updated>

		<summary type="html">&lt;p&gt;Radostin: Radostin moved page Rseq to Restartable Sequences&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Restartable sequences (aka RSEQ) are short, carefully defined sections of user-space code that enable efficient access to per-CPU data structures without relying on heavyweight synchronization primitives such as mutexes or atomic operations.&lt;br /&gt;
&lt;br /&gt;
Support for RSEQ was introduced in the Linux kernel in version 4.18, allowing user-space programs to register critical code paths that the kernel can safely restart when a CPU migration or preemption occurs. This mechanism enables high-performance, scalable data access patterns while preserving correctness. [https://www.efficios.com/blog/2019/02/08/linux-restartable-sequences/ The 5-year journey to bring restartable sequences to Linux] article provides more information about how restartable sequences work, their design, use cases, and kernel integration.&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Interface for Restartable Sequences  ==&lt;br /&gt;
&lt;br /&gt;
The Linux kernel interface for RSEQ is intentionally minimal. It consists of a single system call:&lt;br /&gt;
&amp;lt;code&amp;gt;sys_rseq(struct rseq *rseq, uint32_t rseq_len, int flags, uint32_t sig)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full definition of the RSEQ data structures and related flags is provided in [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/rseq.h include/uapi/linux/rseq.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
enum rseq_cs_flags {&lt;br /&gt;
	RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT = (1U &amp;lt;&amp;lt; RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT),&lt;br /&gt;
	RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL = (1U &amp;lt;&amp;lt; RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT),&lt;br /&gt;
	RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE = (1U &amp;lt;&amp;lt; RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT),&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct rseq_cs {&lt;br /&gt;
	__u32 version; /* always 0 at this moment */&lt;br /&gt;
	enum rseq_cs_flags flags;&lt;br /&gt;
	void *start_ip;&lt;br /&gt;
	/* Offset from start_ip. */&lt;br /&gt;
	intptr_t post_commit_offset;&lt;br /&gt;
	void *abort_ip;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
struct rseq {&lt;br /&gt;
	__u32 cpu_id_start;&lt;br /&gt;
	__u32 cpu_id;&lt;br /&gt;
	struct rseq_cs *rseq_cs;&lt;br /&gt;
	enum rseq_cs_flags flags;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the userspace side, we need to keep &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; somewhere and register it on the kernel side using the &amp;lt;code&amp;gt;rseq&amp;lt;/code&amp;gt; syscall.&lt;br /&gt;
Then, once we want to execute some code as a rseq critical section (&amp;lt;code&amp;gt;rseq cs&amp;lt;/code&amp;gt; or just CS) we need to allocate and fill with the data&lt;br /&gt;
&amp;lt;code&amp;gt;struct rseq_cs&amp;lt;/code&amp;gt;. We have to specify the start address of our CS, and the address of the abort handler (called when CS was interrupted by a preemption, migration&lt;br /&gt;
or signal). Then we need to put an pointer to &amp;lt;code&amp;gt;struct rseq_cs&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;(struct rseq).rseq_cs&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
== Handling of RSEQ Flags ==&lt;br /&gt;
&lt;br /&gt;
Flags can be specified at either &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;struct rseq_cs&amp;lt;/code&amp;gt; using values from &amp;lt;code&amp;gt;enum rseq_cs_flags&amp;lt;/code&amp;gt;. Regardless of where they are set, the kernel combines them when determining restart behavior:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static int rseq_need_restart(struct task_struct *t, u32 cs_flags)&lt;br /&gt;
{&lt;br /&gt;
	u32 flags, event_mask;&lt;br /&gt;
	int ret;&lt;br /&gt;
&lt;br /&gt;
	/* Get thread flags. */&lt;br /&gt;
	ret = get_user(flags, &amp;amp;t-&amp;gt;rseq-&amp;gt;flags);&lt;br /&gt;
	if (ret)&lt;br /&gt;
		return ret;&lt;br /&gt;
&lt;br /&gt;
	/* Take critical section flags into account. */&lt;br /&gt;
	flags |= cs_flags; // &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; here we have flags combined from struct rseq + struct rseq_cs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The most common &amp;lt;code&amp;gt;flags&amp;lt;/code&amp;gt; value is zero. In this case, the restartable sequence critical section is interrupted whenever a preemption, CPU migration, or signal occurs, and the instruction pointer (IP) will be redirected to the abort handler. In some scenarios, however, applications may prefer to allow a critical section to complete even when certain events occur, and can do so by explicitly setting the appropriate flags.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL&amp;lt;/code&amp;gt; must be used in conjunction with both &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE&amp;lt;/code&amp;gt;. The kernel enforces this constraint to prevent inconsistent restart semantics:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	/*&lt;br /&gt;
	 * Restart on signal can only be inhibited when restart on&lt;br /&gt;
	 * preempt and restart on migrate are inhibited too. Otherwise,&lt;br /&gt;
	 * a preempted signal handler could fail to restart the prior&lt;br /&gt;
	 * execution context on sigreturn.&lt;br /&gt;
	 */&lt;br /&gt;
	if (unlikely((flags &amp;amp; RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL) &amp;amp;&amp;amp;&lt;br /&gt;
		     (flags &amp;amp; RSEQ_CS_PREEMPT_MIGRATE_FLAGS) !=&lt;br /&gt;
		     RSEQ_CS_PREEMPT_MIGRATE_FLAGS))&lt;br /&gt;
		return -EINVAL;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checkpoint/Restore of RSEQ ==&lt;br /&gt;
&lt;br /&gt;
CRIU handles restartable sequences differently depending on the execution state of the process at checkpoint time. This can be categorized into the following cases:&lt;br /&gt;
&lt;br /&gt;
# Process is not executing inside an rseq critical section&lt;br /&gt;
# Process is executing inside an rseq critical section&lt;br /&gt;
## &amp;lt;code&amp;gt;flags&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;flags&amp;lt;/code&amp;gt; includes &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Executing outside critical section ===&lt;br /&gt;
&lt;br /&gt;
This is the simplest case. The process has a &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; registered with the kernel, but its instruction pointer (IP) is not currently executing within an RSEQ critical section.&lt;br /&gt;
&lt;br /&gt;
==== Checkpoint ====&lt;br /&gt;
CRIU only needs to locate the &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; instance and record its address, length, and signature. This information is obtained using the ptrace request &amp;lt;code&amp;gt;PTRACE_GET_RSEQ_CONFIGURATION&amp;lt;/code&amp;gt; (see the &amp;lt;code&amp;gt;dump_thread_rseq&amp;lt;/code&amp;gt; function).&lt;br /&gt;
&lt;br /&gt;
==== Restore ====&lt;br /&gt;
During restore, CRIU retrieves the &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; information from the checkpoint image (see images/rseq.proto) and re-register it from the parasite context using the &amp;lt;code&amp;gt;rseq&amp;lt;/code&amp;gt; syscall (see &amp;lt;code&amp;gt;restore_rseq&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;criu/pie/restorer.c&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Executing inside critical section ===&lt;br /&gt;
&lt;br /&gt;
When a process is being checkpointed while its instruction pointer is inside an RSEQ critical section, CRIU preserves the instruction pointer exactly as it was at checkpoint time.&lt;br /&gt;
However, RSEQ semantics require that if execution of a critical section is interrupted, the kernel redirects execution to the associated abort handler. In particular, when the &amp;lt;code&amp;gt;flags&amp;lt;/code&amp;gt; value is &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE&amp;lt;/code&amp;gt; the kernel automatically redirects the instruction pointer to the abort handler associated with the RSEQ critical section. As a result, restoring the process with its instruction pointer unchanged violates the RSEQ semantics, potentially leading to incorrect behavior or application crashes. To address this issue, CRIU explicitly adjusts the instruction pointer to match kernel behavior.&lt;br /&gt;
&lt;br /&gt;
The logic responsible for this is implemented in the &amp;lt;code&amp;gt;fixup_thread_rseq&amp;lt;/code&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (task_in_rseq(rseq_cs, TI_IP(core))) {&lt;br /&gt;
	struct pid *tid = &amp;amp;item-&amp;gt;threads[i];&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
	pr_warn(&amp;quot;The %d task is in rseq critical section. IP will be set to rseq abort handler addr\n&amp;quot;,&lt;br /&gt;
			tid-&amp;gt;real);&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
	if (!(rseq_cs-&amp;gt;flags &amp;amp; RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL)) {&lt;br /&gt;
		pr_warn(&amp;quot;The %d task is in rseq critical section. IP will be set to rseq abort handler addr\n&amp;quot;,&lt;br /&gt;
			tid-&amp;gt;real);&lt;br /&gt;
&lt;br /&gt;
		TI_IP(core) = rseq_cs-&amp;gt;abort_ip;&lt;br /&gt;
&lt;br /&gt;
		if (item-&amp;gt;pid-&amp;gt;real == tid-&amp;gt;real) {&lt;br /&gt;
			compel_set_leader_ip(dmpi(item)-&amp;gt;parasite_ctl, rseq_cs-&amp;gt;abort_ip);&lt;br /&gt;
		} else {&lt;br /&gt;
			compel_set_thread_ip(dmpi(item)-&amp;gt;thread_ctls[i], rseq_cs-&amp;gt;abort_ip);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code detects when a thread's instruction pointer lies within an RSEQ critical section and, unless &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL&amp;lt;/code&amp;gt; is set, rewrites the instruction pointer to the abort handler address. By doing so, CRIU mirrors the kernel's rseq fixup behavior and ensures that the restored process resumes execution in a semantically correct state.&lt;br /&gt;
&lt;br /&gt;
==== Checkpoint ====&lt;br /&gt;
CRIU locates the &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; instance and records its address, length, and signature using the &amp;lt;code&amp;gt;PTRACE_GET_RSEQ_CONFIGURATION&amp;lt;/code&amp;gt; ptrace request (see &amp;lt;code&amp;gt;dump_thread_rseq&amp;lt;/code&amp;gt;).&lt;br /&gt;
In addition, the instruction pointer is explicitly adjusted to point to the RSEQ abort handler.&lt;br /&gt;
&lt;br /&gt;
==== Restore ====&lt;br /&gt;
During restore, CRIU reads data about the &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; state from the checkpoint image (&amp;lt;code&amp;gt;images/rseq.proto&amp;lt;/code&amp;gt;) and re-register it from the restorer context using the &amp;lt;code&amp;gt;rseq&amp;lt;/code&amp;gt; system call (see &amp;lt;code&amp;gt;restore_rseq&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;criu/pie/restorer.c&amp;lt;/code&amp;gt;). No further action is required: the process resumes execution at the abort handler, outside of the RSEQ critical section.&lt;br /&gt;
&lt;br /&gt;
=== Executing inside non-abortable critical section ===&lt;br /&gt;
&lt;br /&gt;
This is a relatively rare case, but it is fully supported by CRIU. When an RSEQ critical section is marked with the &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL&amp;lt;/code&amp;gt; flag, it is effectively non-abortable.&lt;br /&gt;
At first glance, this might suggest that no special handling is required as the RSEQ structure could simply be saved, and the instruction pointer left unchanged. However, this assumption is incorrect.&lt;br /&gt;
&lt;br /&gt;
During checkpoint, when CRIU transfers execution to the parasite, the kernel clears the &amp;lt;code&amp;gt;(struct rseq).rseq_cs&amp;lt;/code&amp;gt; pointer if it determines that execution is no longer within an rseq critical section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static int rseq_ip_fixup(struct pt_regs *regs)&lt;br /&gt;
{&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * Handle potentially not being within a critical section.&lt;br /&gt;
	 * If not nested over a rseq critical section, restart is useless.&lt;br /&gt;
	 * Clear the rseq_cs pointer and return.&lt;br /&gt;
	 */&lt;br /&gt;
	if (!in_rseq_cs(ip, &amp;amp;rseq_cs))&lt;br /&gt;
		return clear_rseq_cs(t);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a result, after restore, the process resumes execution at the correct instruction pointer within the critical section, but from the kernel's perspective it is no longer executing inside an RSEQ critical section. This discrepancy is problematic, because the kernel relies on the &amp;lt;code&amp;gt;(struct rseq).rseq_cs&amp;lt;/code&amp;gt; field to determine rseq execution context.&lt;br /&gt;
&lt;br /&gt;
==== Checkpoint ====&lt;br /&gt;
&lt;br /&gt;
CRIU locates the &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; instance and records its address, length, and signature using the &amp;lt;code&amp;gt;PTRACE_GET_RSEQ_CONFIGURATION&amp;lt;/code&amp;gt; ptrace request.&lt;br /&gt;
The instruction pointer is saved without modification, but the &amp;lt;code&amp;gt;(struct rseq).rseq_cs&amp;lt;/code&amp;gt; field is also recorded in the CRIU image.&lt;br /&gt;
&lt;br /&gt;
==== Restore ====&lt;br /&gt;
&lt;br /&gt;
During restore, CRIU re-registers the &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; from the checkpoint image (&amp;lt;code&amp;gt;images/rseq.proto&amp;lt;/code&amp;gt;) using the &amp;lt;code&amp;gt;rseq&amp;lt;/code&amp;gt; system call from the restorer context (see &amp;lt;code&amp;gt;restore_rseq&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;criu/pie/restorer.c&amp;lt;/code&amp;gt;). In addition, CRIU explicitly restores the &amp;lt;code&amp;gt;(struct rseq).rseq_cs&amp;lt;/code&amp;gt; field using &amp;lt;code&amp;gt;PTRACE_POKEAREA&amp;lt;/code&amp;gt; (see &amp;lt;code&amp;gt;restore_rseq_cs&amp;lt;/code&amp;gt;) to reestablish the correct &amp;lt;code&amp;gt;rseq&amp;lt;/code&amp;gt; execution context in the kernel.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* tests for all architectures (right now we have ZDTM tests only for x86_64)&lt;br /&gt;
* improvement support of built-in rseq for non-Glibc libraries&lt;br /&gt;
* pre-dump tests (?)&lt;br /&gt;
* leave-running tests (?)&lt;br /&gt;
* crfail test&lt;br /&gt;
* threaded test&lt;br /&gt;
&lt;br /&gt;
== Useful links ==&lt;br /&gt;
&lt;br /&gt;
* [1] https://github.com/torvalds/linux/blob/b2d229d4ddb17db541098b83524d901257e93845/kernel/rseq.c#L1&lt;br /&gt;
* [2] https://www.efficios.com/blog/2019/02/08/linux-restartable-sequences/&lt;br /&gt;
* [3] https://lwn.net/Articles/883104/&lt;br /&gt;
* [4] https://patchwork.sourceware.org/project/glibc/list/?series=5530&amp;amp;state=*&lt;br /&gt;
&lt;br /&gt;
[[Category: Under the hood]]&lt;br /&gt;
[[Category: Editor help needed]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Restartable_Sequences&amp;diff=5843</id>
		<title>Restartable Sequences</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Restartable_Sequences&amp;diff=5843"/>
		<updated>2026-01-17T15:10:59Z</updated>

		<summary type="html">&lt;p&gt;Radostin: /* Executing inside critical section */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Restartable sequences (aka RSEQ) are short, carefully defined sections of user-space code that enable efficient access to per-CPU data structures without relying on heavyweight synchronization primitives such as mutexes or atomic operations.&lt;br /&gt;
&lt;br /&gt;
Support for RSEQ was introduced in the Linux kernel in version 4.18, allowing user-space programs to register critical code paths that the kernel can safely restart when a CPU migration or preemption occurs. This mechanism enables high-performance, scalable data access patterns while preserving correctness. [https://www.efficios.com/blog/2019/02/08/linux-restartable-sequences/ The 5-year journey to bring restartable sequences to Linux] article provides more information about how restartable sequences work, their design, use cases, and kernel integration.&lt;br /&gt;
&lt;br /&gt;
== Linux Kernel Interface for Restartable Sequences  ==&lt;br /&gt;
&lt;br /&gt;
The Linux kernel interface for RSEQ is intentionally minimal. It consists of a single system call:&lt;br /&gt;
&amp;lt;code&amp;gt;sys_rseq(struct rseq *rseq, uint32_t rseq_len, int flags, uint32_t sig)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full definition of the RSEQ data structures and related flags is provided in [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/rseq.h include/uapi/linux/rseq.h]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
enum rseq_cs_flags {&lt;br /&gt;
	RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT = (1U &amp;lt;&amp;lt; RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT),&lt;br /&gt;
	RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL = (1U &amp;lt;&amp;lt; RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT),&lt;br /&gt;
	RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE = (1U &amp;lt;&amp;lt; RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT),&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct rseq_cs {&lt;br /&gt;
	__u32 version; /* always 0 at this moment */&lt;br /&gt;
	enum rseq_cs_flags flags;&lt;br /&gt;
	void *start_ip;&lt;br /&gt;
	/* Offset from start_ip. */&lt;br /&gt;
	intptr_t post_commit_offset;&lt;br /&gt;
	void *abort_ip;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
struct rseq {&lt;br /&gt;
	__u32 cpu_id_start;&lt;br /&gt;
	__u32 cpu_id;&lt;br /&gt;
	struct rseq_cs *rseq_cs;&lt;br /&gt;
	enum rseq_cs_flags flags;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the userspace side, we need to keep &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; somewhere and register it on the kernel side using the &amp;lt;code&amp;gt;rseq&amp;lt;/code&amp;gt; syscall.&lt;br /&gt;
Then, once we want to execute some code as a rseq critical section (&amp;lt;code&amp;gt;rseq cs&amp;lt;/code&amp;gt; or just CS) we need to allocate and fill with the data&lt;br /&gt;
&amp;lt;code&amp;gt;struct rseq_cs&amp;lt;/code&amp;gt;. We have to specify the start address of our CS, and the address of the abort handler (called when CS was interrupted by a preemption, migration&lt;br /&gt;
or signal). Then we need to put an pointer to &amp;lt;code&amp;gt;struct rseq_cs&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;(struct rseq).rseq_cs&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&lt;br /&gt;
== Handling of RSEQ Flags ==&lt;br /&gt;
&lt;br /&gt;
Flags can be specified at either &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;struct rseq_cs&amp;lt;/code&amp;gt; using values from &amp;lt;code&amp;gt;enum rseq_cs_flags&amp;lt;/code&amp;gt;. Regardless of where they are set, the kernel combines them when determining restart behavior:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static int rseq_need_restart(struct task_struct *t, u32 cs_flags)&lt;br /&gt;
{&lt;br /&gt;
	u32 flags, event_mask;&lt;br /&gt;
	int ret;&lt;br /&gt;
&lt;br /&gt;
	/* Get thread flags. */&lt;br /&gt;
	ret = get_user(flags, &amp;amp;t-&amp;gt;rseq-&amp;gt;flags);&lt;br /&gt;
	if (ret)&lt;br /&gt;
		return ret;&lt;br /&gt;
&lt;br /&gt;
	/* Take critical section flags into account. */&lt;br /&gt;
	flags |= cs_flags; // &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; here we have flags combined from struct rseq + struct rseq_cs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The most common &amp;lt;code&amp;gt;flags&amp;lt;/code&amp;gt; value is zero. In this case, the restartable sequence critical section is interrupted whenever a preemption, CPU migration, or signal occurs, and the instruction pointer (IP) will be redirected to the abort handler. In some scenarios, however, applications may prefer to allow a critical section to complete even when certain events occur, and can do so by explicitly setting the appropriate flags.&lt;br /&gt;
&lt;br /&gt;
Note that &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL&amp;lt;/code&amp;gt; must be used in conjunction with both &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE&amp;lt;/code&amp;gt;. The kernel enforces this constraint to prevent inconsistent restart semantics:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	/*&lt;br /&gt;
	 * Restart on signal can only be inhibited when restart on&lt;br /&gt;
	 * preempt and restart on migrate are inhibited too. Otherwise,&lt;br /&gt;
	 * a preempted signal handler could fail to restart the prior&lt;br /&gt;
	 * execution context on sigreturn.&lt;br /&gt;
	 */&lt;br /&gt;
	if (unlikely((flags &amp;amp; RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL) &amp;amp;&amp;amp;&lt;br /&gt;
		     (flags &amp;amp; RSEQ_CS_PREEMPT_MIGRATE_FLAGS) !=&lt;br /&gt;
		     RSEQ_CS_PREEMPT_MIGRATE_FLAGS))&lt;br /&gt;
		return -EINVAL;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Checkpoint/Restore of RSEQ ==&lt;br /&gt;
&lt;br /&gt;
CRIU handles restartable sequences differently depending on the execution state of the process at checkpoint time. This can be categorized into the following cases:&lt;br /&gt;
&lt;br /&gt;
# Process is not executing inside an rseq critical section&lt;br /&gt;
# Process is executing inside an rseq critical section&lt;br /&gt;
## &amp;lt;code&amp;gt;flags&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE&amp;lt;/code&amp;gt;&lt;br /&gt;
## &amp;lt;code&amp;gt;flags&amp;lt;/code&amp;gt; includes &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Executing outside critical section ===&lt;br /&gt;
&lt;br /&gt;
This is the simplest case. The process has a &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; registered with the kernel, but its instruction pointer (IP) is not currently executing within an RSEQ critical section.&lt;br /&gt;
&lt;br /&gt;
==== Checkpoint ====&lt;br /&gt;
CRIU only needs to locate the &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; instance and record its address, length, and signature. This information is obtained using the ptrace request &amp;lt;code&amp;gt;PTRACE_GET_RSEQ_CONFIGURATION&amp;lt;/code&amp;gt; (see the &amp;lt;code&amp;gt;dump_thread_rseq&amp;lt;/code&amp;gt; function).&lt;br /&gt;
&lt;br /&gt;
==== Restore ====&lt;br /&gt;
During restore, CRIU retrieves the &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; information from the checkpoint image (see images/rseq.proto) and re-register it from the parasite context using the &amp;lt;code&amp;gt;rseq&amp;lt;/code&amp;gt; syscall (see &amp;lt;code&amp;gt;restore_rseq&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;criu/pie/restorer.c&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Executing inside critical section ===&lt;br /&gt;
&lt;br /&gt;
When a process is being checkpointed while its instruction pointer is inside an RSEQ critical section, CRIU preserves the instruction pointer exactly as it was at checkpoint time.&lt;br /&gt;
However, RSEQ semantics require that if execution of a critical section is interrupted, the kernel redirects execution to the associated abort handler. In particular, when the &amp;lt;code&amp;gt;flags&amp;lt;/code&amp;gt; value is &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE&amp;lt;/code&amp;gt; the kernel automatically redirects the instruction pointer to the abort handler associated with the RSEQ critical section. As a result, restoring the process with its instruction pointer unchanged violates the RSEQ semantics, potentially leading to incorrect behavior or application crashes. To address this issue, CRIU explicitly adjusts the instruction pointer to match kernel behavior.&lt;br /&gt;
&lt;br /&gt;
The logic responsible for this is implemented in the &amp;lt;code&amp;gt;fixup_thread_rseq&amp;lt;/code&amp;gt; function:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
if (task_in_rseq(rseq_cs, TI_IP(core))) {&lt;br /&gt;
	struct pid *tid = &amp;amp;item-&amp;gt;threads[i];&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
	pr_warn(&amp;quot;The %d task is in rseq critical section. IP will be set to rseq abort handler addr\n&amp;quot;,&lt;br /&gt;
			tid-&amp;gt;real);&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
	if (!(rseq_cs-&amp;gt;flags &amp;amp; RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL)) {&lt;br /&gt;
		pr_warn(&amp;quot;The %d task is in rseq critical section. IP will be set to rseq abort handler addr\n&amp;quot;,&lt;br /&gt;
			tid-&amp;gt;real);&lt;br /&gt;
&lt;br /&gt;
		TI_IP(core) = rseq_cs-&amp;gt;abort_ip;&lt;br /&gt;
&lt;br /&gt;
		if (item-&amp;gt;pid-&amp;gt;real == tid-&amp;gt;real) {&lt;br /&gt;
			compel_set_leader_ip(dmpi(item)-&amp;gt;parasite_ctl, rseq_cs-&amp;gt;abort_ip);&lt;br /&gt;
		} else {&lt;br /&gt;
			compel_set_thread_ip(dmpi(item)-&amp;gt;thread_ctls[i], rseq_cs-&amp;gt;abort_ip);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code detects when a thread's instruction pointer lies within an RSEQ critical section and, unless &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL&amp;lt;/code&amp;gt; is set, rewrites the instruction pointer to the abort handler address. By doing so, CRIU mirrors the kernel's rseq fixup behavior and ensures that the restored process resumes execution in a semantically correct state.&lt;br /&gt;
&lt;br /&gt;
==== Checkpoint ====&lt;br /&gt;
CRIU locates the &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; instance and records its address, length, and signature using the &amp;lt;code&amp;gt;PTRACE_GET_RSEQ_CONFIGURATION&amp;lt;/code&amp;gt; ptrace request (see &amp;lt;code&amp;gt;dump_thread_rseq&amp;lt;/code&amp;gt;).&lt;br /&gt;
In addition, the instruction pointer is explicitly adjusted to point to the RSEQ abort handler.&lt;br /&gt;
&lt;br /&gt;
==== Restore ====&lt;br /&gt;
During restore, CRIU reads data about the &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; state from the checkpoint image (&amp;lt;code&amp;gt;images/rseq.proto&amp;lt;/code&amp;gt;) and re-register it from the restorer context using the &amp;lt;code&amp;gt;rseq&amp;lt;/code&amp;gt; system call (see &amp;lt;code&amp;gt;restore_rseq&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;criu/pie/restorer.c&amp;lt;/code&amp;gt;). No further action is required: the process resumes execution at the abort handler, outside of the RSEQ critical section.&lt;br /&gt;
&lt;br /&gt;
=== Executing inside non-abortable critical section ===&lt;br /&gt;
&lt;br /&gt;
This is a relatively rare case, but it is fully supported by CRIU. When an RSEQ critical section is marked with the &amp;lt;code&amp;gt;RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL&amp;lt;/code&amp;gt; flag, it is effectively non-abortable.&lt;br /&gt;
At first glance, this might suggest that no special handling is required as the RSEQ structure could simply be saved, and the instruction pointer left unchanged. However, this assumption is incorrect.&lt;br /&gt;
&lt;br /&gt;
During checkpoint, when CRIU transfers execution to the parasite, the kernel clears the &amp;lt;code&amp;gt;(struct rseq).rseq_cs&amp;lt;/code&amp;gt; pointer if it determines that execution is no longer within an rseq critical section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
static int rseq_ip_fixup(struct pt_regs *regs)&lt;br /&gt;
{&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
	/*&lt;br /&gt;
	 * Handle potentially not being within a critical section.&lt;br /&gt;
	 * If not nested over a rseq critical section, restart is useless.&lt;br /&gt;
	 * Clear the rseq_cs pointer and return.&lt;br /&gt;
	 */&lt;br /&gt;
	if (!in_rseq_cs(ip, &amp;amp;rseq_cs))&lt;br /&gt;
		return clear_rseq_cs(t);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a result, after restore, the process resumes execution at the correct instruction pointer within the critical section, but from the kernel's perspective it is no longer executing inside an RSEQ critical section. This discrepancy is problematic, because the kernel relies on the &amp;lt;code&amp;gt;(struct rseq).rseq_cs&amp;lt;/code&amp;gt; field to determine rseq execution context.&lt;br /&gt;
&lt;br /&gt;
==== Checkpoint ====&lt;br /&gt;
&lt;br /&gt;
CRIU locates the &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; instance and records its address, length, and signature using the &amp;lt;code&amp;gt;PTRACE_GET_RSEQ_CONFIGURATION&amp;lt;/code&amp;gt; ptrace request.&lt;br /&gt;
The instruction pointer is saved without modification, but the &amp;lt;code&amp;gt;(struct rseq).rseq_cs&amp;lt;/code&amp;gt; field is also recorded in the CRIU image.&lt;br /&gt;
&lt;br /&gt;
==== Restore ====&lt;br /&gt;
&lt;br /&gt;
During restore, CRIU re-registers the &amp;lt;code&amp;gt;struct rseq&amp;lt;/code&amp;gt; from the checkpoint image (&amp;lt;code&amp;gt;images/rseq.proto&amp;lt;/code&amp;gt;) using the &amp;lt;code&amp;gt;rseq&amp;lt;/code&amp;gt; system call from the restorer context (see &amp;lt;code&amp;gt;restore_rseq&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;criu/pie/restorer.c&amp;lt;/code&amp;gt;). In addition, CRIU explicitly restores the &amp;lt;code&amp;gt;(struct rseq).rseq_cs&amp;lt;/code&amp;gt; field using &amp;lt;code&amp;gt;PTRACE_POKEAREA&amp;lt;/code&amp;gt; (see &amp;lt;code&amp;gt;restore_rseq_cs&amp;lt;/code&amp;gt;) to reestablish the correct &amp;lt;code&amp;gt;rseq&amp;lt;/code&amp;gt; execution context in the kernel.&lt;br /&gt;
&lt;br /&gt;
== TODO ==&lt;br /&gt;
&lt;br /&gt;
* tests for all architectures (right now we have ZDTM tests only for x86_64)&lt;br /&gt;
* improvement support of built-in rseq for non-Glibc libraries&lt;br /&gt;
* pre-dump tests (?)&lt;br /&gt;
* leave-running tests (?)&lt;br /&gt;
* crfail test&lt;br /&gt;
* threaded test&lt;br /&gt;
&lt;br /&gt;
== Useful links ==&lt;br /&gt;
&lt;br /&gt;
* [1] https://github.com/torvalds/linux/blob/b2d229d4ddb17db541098b83524d901257e93845/kernel/rseq.c#L1&lt;br /&gt;
* [2] https://www.efficios.com/blog/2019/02/08/linux-restartable-sequences/&lt;br /&gt;
* [3] https://lwn.net/Articles/883104/&lt;br /&gt;
* [4] https://patchwork.sourceware.org/project/glibc/list/?series=5530&amp;amp;state=*&lt;br /&gt;
&lt;br /&gt;
[[Category: Under the hood]]&lt;br /&gt;
[[Category: Editor help needed]]&lt;/div&gt;</summary>
		<author><name>Radostin</name></author>
	</entry>
</feed>