Changes

Jump to: navigation, search

Google Summer of Code Ideas

133 bytes added, 12:10, 16 February 2021
no edit summary
* Mentor: Pavel Emelianov <xemul@virtuozzo.com>
* Suggested by: Pavel Emelianov <xemul@virtuozzo.com>
 
=== Porting crit functionalities in GO ===
'''Summary:''' Implement image view and manipulation in Go
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).
 
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.
 
'''Links:'''
* [[CRIT]]
* Possible use case see LXD: https://github.com/lxc/lxd/blob/cb55b1c5a484a43e0c21c6ae8c4a2e30b4d45be3/lxd/migrate_container.go#L179
* https://github.com/lxc/lxd/pull/4072
* https://github.com/checkpoint-restore/go-criu/blob/master/phaul/stats.go
'''Details:'''
* Skill level: beginner
* Language: Go
* Mentor: Radostin Stoyanov <rstoyanov@fedoraproject.org>, Adrian Reber <areber@redhat.com>
* Suggested by: Adrian Reber <areber@redhat.com>
=== Use eBPF to lock and unlock the network ===
* Mentor: Radostin Stoyanov <rstoyanov@fedoraproject.org>, Adrian Reber <areber@redhat.com>
* Suggested by: Adrian Reber <areber@redhat.com>
 
=== Add support for SPFS ===
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE
 
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.
 
'''Links'''
* https://github.com/checkpoint-restore/criu/issues/60
* https://github.com/checkpoint-restore/criu/issues/53
* https://github.com/skinsbursky/spfs
* https://patchwork.criu.org/series/137/
 
'''Details:'''
* Skill level: expert
* Language: C
* Mentor: Alexander Mikhalitsyn <alexander@mihalicyn.com> / <alexander.mikhalitsyn@virtuozzo.com>
* Suggested by: Alexander Mikhalitsyn <alexander.mikhalitsyn@virtuozzo.com>
=== IOUring support ===
CRIU uses /proc/pid/map_files to dump and restore anonymous shared memory regions, but map_files is restricted to the global CAP_SYS_ADMIN capability. In most cases, it is possible to dump/restore shared memory region without map_files and we need to implement this in CRIU.
 
 
== Suspended project ideas ==
 
Listed here are tasks that seem suitable for GSoC, but currently do not have anybody to mentor it.
 
=== Porting crit functionalities in GO ===
'''Summary:''' Implement image view and manipulation in Go
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).
 
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.
 
'''Links:'''
* [[CRIT]]
* Possible use case see LXD: https://github.com/lxc/lxd/blob/cb55b1c5a484a43e0c21c6ae8c4a2e30b4d45be3/lxd/migrate_container.go#L179
* https://github.com/lxc/lxd/pull/4072
* https://github.com/checkpoint-restore/go-criu/blob/master/phaul/stats.go
'''Details:'''
* Skill level: beginner
* Language: Go
* Mentor: Radostin Stoyanov <rstoyanov@fedoraproject.org>, Adrian Reber <areber@redhat.com>
* Suggested by: Adrian Reber <areber@redhat.com>
 
=== Add support for SPFS ===
'''Summary:''' The SPFS is a special filesystem that allows checkpoint and restore of such things as NFS and FUSE
 
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.
 
'''Links'''
* https://github.com/checkpoint-restore/criu/issues/60
* https://github.com/checkpoint-restore/criu/issues/53
* https://github.com/skinsbursky/spfs
* https://patchwork.criu.org/series/137/
 
'''Details:'''
* Skill level: expert
* Language: C
* Mentor: Alexander Mikhalitsyn <alexander@mihalicyn.com> / <alexander.mikhalitsyn@virtuozzo.com>
* Suggested by: Alexander Mikhalitsyn <alexander.mikhalitsyn@virtuozzo.com>
 
'''Links:'''

Navigation menu