Line 77: |
Line 77: |
| === Optimize the pre-dump algorithm === | | === Optimize the pre-dump algorithm === |
| | | |
− | '''Summary:''' Optimize the pre-dump algorithm to avoid vmsplice()-ing the whole memory | + | '''Summary:''' Optimize the pre-dump algorithm to avoid pinning to many memory in RAM |
| | | |
− | TODO: Detailed description of the project.
| + | Current [[CLI/cmd/pre-dump|pre-dump]] mode suffers from several issues |
| + | |
| + | * It keeps all the memory in pipes, and their number can be huge due to limited one pipe size |
| + | * It keeps all the memory in pipes and this memory is unreclaimable for that period |
| + | * It [[parasite code|stops and infects]] tasks to drain memory from |
| + | |
| + | We can try to use sys_read_process_vm() syscall to mitigate all of the above. Benefits: |
| + | |
| + | * No pipes, just copy data into temp buffer and send |
| + | * Memory is always reclaimable |
| + | * No infection is needed, just freeze, reset the tracker and proceed |
| + | |
| + | Ideally there should be sys_splice_process_vm() syscall in the kernel, that does the same as |
| + | the read_process_vm does, but vmsplices the data |
| | | |
| '''Links:''' | | '''Links:''' |
| * https://github.com/checkpoint-restore/criu/issues/351 | | * https://github.com/checkpoint-restore/criu/issues/351 |
− | * Wiki links to relevant material | + | * [[Memory dumping and restoring]], [[Memory changes tracking]] |
− | * External links to mailing lists or web sites | + | * [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/2017/11/22/527 RFC for splice_process_vm syscall] |
| | | |
| '''Details:''' | | '''Details:''' |
− | * Skill level: beginner or intermediate or advanced | + | * Skill level: intermediate |
| * Language: C | | * Language: C |
| * Mentor: Pavel Emelianov <xemul@virtuozzo.com> | | * Mentor: Pavel Emelianov <xemul@virtuozzo.com> |
| * Suggested by: Pavel Emelianov <xemul@virtuozzo.com> | | * Suggested by: Pavel Emelianov <xemul@virtuozzo.com> |
− |
| |
| | | |
| === Anonymize image files === | | === Anonymize image files === |