Changes

added absent architectures for criu
Line 22: Line 22:     
Both tools appear primarily focused on reducing benchmark runtime on slow computer architecture simulators, leveraging sampling algorithms such as SimPoint.
 
Both tools appear primarily focused on reducing benchmark runtime on slow computer architecture simulators, leveraging sampling algorithms such as SimPoint.
 +
 +
== OpenVZ (in-kernel) ==
 +
 +
Legacy OpenVZ (RHEL4, RHEL5, RHEL6 based kernels) has in-kernel checkpoint/restore, sources can be found in kernel/cpt/.
 +
 +
== CKPT (in-kernel) ==
 +
 +
(In-kernel) [https://ckpt.wiki.kernel.org/index.php/Main_Page Linux Checkpoint/Restart] was a project from around 2008 to around 2010 to implement checkpoint/restart of Linux processes.
    
== CRIU, DMTCP, BLCR, OpenVZ comparison table ==
 
== CRIU, DMTCP, BLCR, OpenVZ comparison table ==
Line 40: Line 48:  
|-
 
|-
 
| Arch
 
| Arch
| x86_64, ARM
+
| x86_64, ARM, AArch64, PPC64le
 
| x86, x86_64, ARM
 
| x86, x86_64, ARM
 
| x86, x86_64, PPC/PPC64, ARM
 
| x86, x86_64, PPC/PPC64, ARM
Line 89: Line 97:  
|-
 
|-
 
| Retains behavior of the c/r-ed programs?
 
| Retains behavior of the c/r-ed programs?
| {{Yes}}
+
| {{Yes}} (but see [[What can change after C/R]])
 
| {{No}}, because of wrappers on system calls
 
| {{No}}, because of wrappers on system calls
 
| {{No}}, because of wrappers on system calls
 
| {{No}}, because of wrappers on system calls
Line 96: Line 104:  
|-
 
|-
 
| Live migration
 
| Live migration
| {{Yes}}, even if kernel, libs, etc are newer. Can use Memory Changes Tracking to decrease freeze time
+
| {{Yes}}, even if kernel, libs, etc are newer. Can use [[memory changes tracking]] to decrease freeze time
 
| {{Yes}}, if both kernels are recent
 
| {{Yes}}, if both kernels are recent
 
| {{Yes}}, but if all components are the same. Even if prelinked addresses are different, it will not restore, but it can save the whole used libs and localization files to restore program on the different machine
 
| {{Yes}}, but if all components are the same. Even if prelinked addresses are different, it will not restore, but it can save the whole used libs and localization files to restore program on the different machine
Line 110: Line 118:  
|-
 
|-
 
| Parallel/distributed computations libraries
 
| Parallel/distributed computations libraries
| No (in plans)
+
| {{No}} (planned)
| Yes. OpenMPI, MPICH2, OpenMP, Cilk are alredy supported and Infiniband is in progress
+
| {{Yes}}. OpenMPI, MPICH2, OpenMP, Cilk are alredy supported and Infiniband is in progress
| Yes. Cray MPI, Intel MPI, LAM/MPI, MPICH-V, MPICH2, MVAPICH, Open MPI, SGI MPT
+
| {{Yes}}. Cray MPI, Intel MPI, LAM/MPI, MPICH-V, MPICH2, MVAPICH, Open MPI, SGI MPT
| Yes
+
| {{Yes}}
    
|-
 
|-
| C/R gdb with debugging app
+
| Possible to C/R of gdb with debugged app?
| No, because they are using the same interface
+
| {{No}}, because they are using the same interface
| Yes
+
| {{Yes}}
| No
+
| {{No}}
| Yes
+
| {{Yes}}
    
|-
 
|-
| X-Windows apps (KDE, GNOME, etc)
+
| X Window apps (KDE, GNOME, etc)
| Yes, by using vnc
+
| {{Yes}}, via VNC
| Yes, by using vnc
+
| {{Yes}}, via VNC
| Looks like no
+
| {{No|Looks like no}}
| Yes, by using vnc
+
| {{Yes}}, via VNC
       
|-
 
|-
 
| Solutions for invocation in the custom software
 
| Solutions for invocation in the custom software
| Yes. [[RPC]] and [[C API]]
+
| {{Yes}}, [[RPC]] and [[C API]]
| Yes. Plugins and API
+
| {{Yes}}, plugins and API
| Not yet
+
| {{No|Not yet}}
| Yes. via ioctl calls
+
| {{Yes}}, via ioctl calls
    
|-
 
|-
Line 142: Line 150:  
|-
 
|-
 
| Unix sockets
 
| Unix sockets
| Yes
+
| {{Yes}}
| Yes
+
| {{Yes}}
| No
+
| {{No}}
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| UDP sockets
 
| UDP sockets
| Yes, both ipv4 and ipv6
+
| {{Yes}}, both ipv4 and ipv6
| Not yet. Developers of dmtcp had no request for this
+
| {{No|Not yet}}. Developers of dmtcp had no request for this
| Not yet
+
| {{No|Not yet}}
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| TCP sockets
 
| TCP sockets
| Yes
+
| {{Yes}}
| Yes
+
| {{Yes}}
| Not yet
+
| {{No|Not yet}}
| Yes
+
| {{Yes}}
    
|-
 
|-
| Established tcp connection
+
| Established TCP connection
| Yes
+
| {{Yes}}
| No, but you can write a simple DMTCP plugin that tells DMTCP how you want to reconnect on restart
+
| {{No}}, but you can write a simple DMTCP plugin that tells DMTCP how you want to reconnect on restart
| No
+
| {{No}}
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| Infiniband
 
| Infiniband
| No
+
| {{No}}
| Not yet, developing is on the half-way
+
| {{No|Not yet, developing is on the half-way}}
| No
+
| {{No}}
| No
+
| {{No}}
    
|-
 
|-
 
| Multithread support
 
| Multithread support
| Yes
+
| {{Yes}}
| Yes
+
| {{Yes}}
| Yes
+
| {{Yes}}
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| Multiprocess
 
| Multiprocess
| Yes
+
| {{Yes}}
| Yes
+
| {{Yes}}
| Yes
+
| {{Yes}}
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| Process groups and sessions
 
| Process groups and sessions
| Yes
+
| {{Yes}}
| Yes
+
| {{Yes}}
| Not yet
+
| {{No|Not yet}}
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| Zombies
 
| Zombies
| Yes
+
| {{Yes}}
| No
+
| {{No}}
| No
+
| {{No}}
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| Namespaces
 
| Namespaces
| Yes
+
| {{Yes}}
| No
+
| {{No}}
| No
+
| {{No}}
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| Ptraced programs
 
| Ptraced programs
| No
+
| {{No}}
| Yes
+
| {{Yes}}
| No
+
| {{No}}
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| System V IPC
 
| System V IPC
| Yes
+
| {{Yes}}
| Yes
+
| {{Yes}}
| No
+
| {{No}}
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| Memory mappings
 
| Memory mappings
| Yes, all kinds
+
| {{Yes}}, all kinds
| Yes
+
| {{Yes}}
| Yes, partially
+
| {{Partial}}
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| Pipes
 
| Pipes
| Yes
+
| {{Yes}}
| Yes
+
| {{Yes}}
| Not yet
+
| {{No|Not yet}}
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| Terminals
 
| Terminals
| Yes, but only Unix98 PTYs
+
| {{Yes}}, but only Unix98 PTYs
| Yes
+
| {{Yes}}
| Yes
+
| {{Yes}}
| Yes
+
| {{Yes}}
    
|-
 
|-
| Non-posix files (inotify, signalfd, eventfd, etc)
+
| Non-POSIX files (inotify, signalfd, eventfd, etc)
| Yes, inotify, fanotify, epoll, signalfd, eventfd
+
| {{Yes}}, inotify, fanotify, epoll, signalfd, eventfd
| Yes, epoll, eventfd, signalfd are already supported and inotify will be supported in future
+
| {{Yes}}, epoll, eventfd, signalfd are already supported and inotify will be supported in future
| Looks like no
+
| {{No|Looks like no}}
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| Timers
 
| Timers
| Yes
+
| {{Yes}}
| No. Any counter or timer active since the beginning of a process will consider the restarted process to be a new process.
+
| {{No}}. Any counter or timer active since the beginning of a process will consider the restarted process to be a new process.
| Yes
+
| {{Yes}}
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| Shared resources (files, mm, etc.)
 
| Shared resources (files, mm, etc.)
| Yes. SysVIPC, files, fd table and memory
+
| {{Yes}}. SysVIPC, files, fd table and memory
| Yes. System V shared memory(shmget, etc.), mmap-based shared memory, shared sockets, pipes, file descriptors
+
| {{Yes}}. System V shared memory(shmget, etc.), mmap-based shared memory, shared sockets, pipes, file descriptors
| No, but it is planned to suppord shared mmap regions
+
| {{No}}, but it is planned to support shared mmap regions
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| Block devices
 
| Block devices
| No
+
| {{No}}
| Looks like yes
+
| {{Yes|Looks like yes}}
| No
+
| {{No}}
| No
+
| {{No}}
       
|-
 
|-
 
| Character devices
 
| Character devices
| Yes, only /dev/null, /dev/zero, etc. are supported
+
| {{Yes}}, only /dev/null, /dev/zero, etc. are supported
| Yes, looks like null and zero are supported
+
| {{Yes}}, looks like null and zero are supported
| Yes, /dev/null and /dev/zero
+
| {{Yes}}, /dev/null and /dev/zero
| Yes
+
| {{Yes}}
    
|-
 
|-
 
| Capture the contents of open files
 
| Capture the contents of open files
| Yes, if file is unlinked
+
| {{Yes}}, if file is unlinked
| Looks like no
+
| {{No|Looks like no}}
| Not yet
+
| {{No|Not yet}}
| Yes
+
| {{Yes}}
    
|}
 
|}