| Line 1: |
Line 1: |
| − | This page describes how to reduce the freeze time of an application by using the [[memory changes tracking]] ability. | + | This page describes how to reduce the freeze time of an application by using the [[memory changes tracking]] ability to perform [[wikipedia:Live_migration#Pre-copy_memory_migration|pre-copy memory migration]]. |
| | | | |
| | {{Note|It is assumed that you already read [[Live migration]] article before this one.}} | | {{Note|It is assumed that you already read [[Live migration]] article before this one.}} |
| Line 15: |
Line 15: |
| | | | |
| | Now you can either proceed to next step and do regular dump, or perform the pre-dump step again. In the latter case pre-dump would generate another set of pre-dump images which will contain memory changed after previous pre-dump. Doing several pre-dump iterations may reduce the amount of data dumped on dump stage and thus lead to shorter freeze time. | | Now you can either proceed to next step and do regular dump, or perform the pre-dump step again. In the latter case pre-dump would generate another set of pre-dump images which will contain memory changed after previous pre-dump. Doing several pre-dump iterations may reduce the amount of data dumped on dump stage and thus lead to shorter freeze time. |
| | + | |
| | + | Note, that if you're going to perform more than one pre-dump steps, you should create different directories for images and properly reference them with the <code>--images-dir</code> and the <code>--prev-images-dir</code> for all pre-dump and dump steps. |
| | | | |
| | === Dump === | | === Dump === |
| | Now you can do regular dump of your processes. | | Now you can do regular dump of your processes. |
| | | | |
| − | [src]# criu dump --tree <pid> --images-dir <path-to-existing-directory-B> --prev-images-dir <path-to-directory-A-relative-to-B> --leave-stopped | + | [src]# criu dump --tree <pid> --images-dir <path-to-existing-directory-B> \ |
| | + | --prev-images-dir <path-to-directory-A-relative-to-B> --leave-stopped --track-mem |
| | | | |
| | Note that: | | Note that: |
| Line 30: |
Line 33: |
| | | | |
| | [src]# scp -r <path-to-images-dir> <dst>:/<path-to-images> | | [src]# scp -r <path-to-images-dir> <dst>:/<path-to-images> |
| | + | |
| | + | or using rsync |
| | + | |
| | + | [src]# rsync -rl <path-to-images-dir>/ <dst>:<path-to-images> |
| | + | |
| | + | Note: It is important to enable "copy symlinks as symlinks" (<code>-l</code> for <code>rsync</code>) to ensure that symlinks are preserved between previous directories. When <code>-r</code> is passed to <code>scp</code> it will follow symbolic links encountered in the tree traversal. |
| | | | |
| | === Restore === | | === Restore === |
| | On the destination node restore the apps from images: | | On the destination node restore the apps from images: |
| | | | |
| − | [dst]# criu restore --tree <pid> --images-dir <path-to-images> | + | [dst]# criu restore --images-dir <path-to-images> |
| | | | |
| | === Kill === | | === Kill === |
| | If everything went OK you can kill stopped tasks on the source node: | | If everything went OK you can kill stopped tasks on the source node: |
| | | | |
| − | [src]# FIXME put command here | + | [src]# kill <pid> |
| | + | |
| | + | == Further reading == |
| | + | |
| | + | * [[P.Haul]] is the Go extension to CRIU doing [[live migration]] |
| | | | |
| | [[Category: HOWTO]] | | [[Category: HOWTO]] |
| | + | [[Category: Memory]] |
| | + | [[Category: Live migration]] |