Iterative migration

From CRIU
Revision as of 18:11, 14 May 2013 by Xemul (talk | contribs)
Jump to navigation Jump to search

Please, read the article about Live migration before this one.

This page describes how to reduce the freeze time of an application by using the memory changes tracking ability.

Migration sequence

The steps below look like those in regular live migration, but include one of more pre-dump stages.

Pre-dump

Take tasks you're about to migrate and pre-dump them into some place. Tasks will remain running after pre-dump, unlike regular dump.

[src]# criu pre-dump --tree <pid> --images-dir <path-to-existing-directory-A>

The directory with images can be on a shared storage, or you can use disk-less migration to avoid the Copy step.

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, that has changed from previous step. Doing several pre-dump stages (or iterations) may reduce the amount of data dumped on dump stage and thus -- smaller freeze time.

Dump

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

Note, that

  1. this dump would work faster, than it would if there were no the pre-dump stage, as this dump only takes the memory that has changed, since the pre-dump step.
  2. the --prev-images-dir should contain path to the directory with pre-dump images relative to the directory where the dump images will be put

Copy

Copy images to destination node:

[src]# scp -r <path-to-images-dir> <dst>:/<path-to-images>

Restore

Go to the destination node and restore the apps from images on it:

[dst]# criu restore --tree <pid> --images-dir <path-to-images>

Kill

If everything went OK you can return on the source node and kill stopped tasks on it.

[src]# FIXME put command here