Line 8: |
Line 8: |
| | | |
| == Project ideas == | | == Project ideas == |
− |
| |
− | === Post-copy for shared memory and hugetlbfs ===
| |
− |
| |
− | '''Summary:''' extend post-copy memory restore and migration to support shared memory and hugetlbfs.
| |
− |
| |
− | CRIU relies on [[Userfaultfd]] mechanism in the Linux kernel to implement the demand paging in userspace and allow post-copy memory (or lazy) [[Lazy_migration|migration]]. However, currently this support is limited to anonymous private memory mappings, although kernel also supports shared memory areas and hugetlbfs backed memory.
| |
− |
| |
− | The shared memory support for lazy migration can be added to CRIU without kernel modifications, while proper handling of hugetlbfs would require userfaultfd callbacks for [http://man7.org/linux/man-pages/man2/fallocate.2.html fallocate(PUNCH_HOLE)] and [http://man7.org/linux/man-pages/man2/madvise.2.html madvise(MADV_REMOVE)] system calls.
| |
− |
| |
− | '''Links:'''
| |
− | * [https://www.kernel.org/doc/html/latest/admin-guide/mm/userfaultfd.html Userfaultfd]
| |
− | * [https://www.kernel.org/doc/html/latest/admin-guide/mm/hugetlbpage.html hugetlbfs]
| |
− | '''Details:'''
| |
− | * Skill level: most probably advanced?
| |
− | * Language: C
| |
− | * Mentor: Mike Rapoport <rppt@linux.ibm.com>
| |
− | * Suggested by: Mike Rapoport <rppt@linux.ibm.com>
| |
| | | |
| === Optimize logging engine === | | === Optimize logging engine === |
Line 122: |
Line 105: |
| * Mentor: Adrian Reber <areber@redhat.com> | | * Mentor: Adrian Reber <areber@redhat.com> |
| * Suggested by: Adrian Reber <areber@redhat.com> | | * Suggested by: Adrian Reber <areber@redhat.com> |
− |
| |
− | === Memory changes tracking with userfaultfd-WP ===
| |
− |
| |
− | '''Summary:''' add ability to track memory changes of the snapshotted processes using userfaultfd-WP
| |
− |
| |
− | Currently CRIU uses [[Memory_changes_tracking|Soft-dirty]] mechanism in Linux kernel to track memory changes.
| |
− | This mechanism can be complemented (or even completely replaced) with recently proposed write protection support for
| |
− | userfaultfd (userfaultfd-WP).
| |
− |
| |
− | Userfault allows implementation of paging in userspace. It allows an application to receive notifications about page faults and provide the desired memory contents for the faulting pages. In the current upstream kernels only missing page faults are supported, but there is an ongoing work to allow notifications for write faults as well. Using such notifications it would be possible to precisely track memory changes during pre-dump iterations. This approach may prove to be more efficient than soft-dirty.
| |
− |
| |
− | '''Links:'''
| |
− | * [https://www.kernel.org/doc/html/latest/admin-guide/mm/userfaultfd.html Userfaultfd]
| |
− | * [https://github.com/xzpeter/linux/tree/uffd-wp-merged Userfaultfd-WP]
| |
− | * [https://www.kernel.org/doc/html/latest/admin-guide/mm/soft-dirty.html?highlight=soft%20dirty Soft-Dirty]
| |
− | * https://lwn.net/Articles/777258/
| |
− |
| |
− | '''Details:'''
| |
− | * Skill level: most probably advanced?
| |
− | * Language: C
| |
− | * Mentor: Mike Rapoport <rppt@linux.ibm.com>
| |
− | * Suggested by: Mike Rapoport <rppt@linux.ibm.com>
| |
| | | |
| === Use eBPF to lock and unlock the network === | | === Use eBPF to lock and unlock the network === |