Difference between revisions of "Iterative migration"

From CRIU
Jump to navigation Jump to search
(use {{Note}} to ask to read Live migration)
(minor typos, fixes, clarifications)
Line 5: Line 5:
 
== Migration sequence ==
 
== Migration sequence ==
  
The steps below look like those in regular live migration, but include one of more pre-dump stages.
+
The steps below look like those in regular live migration, but include one or more pre-dump stages.
  
 
=== Pre-dump ===
 
=== 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.
+
Take tasks you are 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>
 
  [src]# criu pre-dump --tree <pid> --images-dir <path-to-existing-directory-A>
Line 14: Line 14:
 
The directory with images can be on a shared storage, or you can use [[disk-less migration]] to avoid the '''Copy''' step.
 
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.
+
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.
  
 
=== Dump ===
 
=== Dump ===
Line 21: Line 21:
 
  [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
  
Note, that
+
Note that:
  
# 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.
+
# this dump would work faster than without pre-dump, as this dump only takes the memory that has changed since the last pre-dump;
# the <code>--prev-images-dir</code> should contain path to the directory with pre-dump images ''relative to the directory where the dump images will be put''
+
# the <code>--prev-images-dir</code> should contain path to the directory with pre-dump images ''relative to the directory where the dump images will be put''.
  
 
=== Copy ===
 
=== Copy ===
Copy images to destination node:
+
Copy images to the destination node:
  
 
  [src]# scp -r <path-to-images-dir> <dst>:/<path-to-images>
 
  [src]# scp -r <path-to-images-dir> <dst>:/<path-to-images>
  
 
=== Restore ===
 
=== Restore ===
Go to the destination node and restore the apps from images on it:
+
On the destination node restore the apps from images:
  
 
  [dst]# criu restore --tree <pid> --images-dir <path-to-images>
 
  [dst]# criu restore --tree <pid> --images-dir <path-to-images>
  
 
=== Kill ===
 
=== Kill ===
If everything went OK you can return on the source node and kill stopped tasks on it.
+
If everything went OK you can kill stopped tasks on the source node:
  
 
  [src]# FIXME put command here
 
  [src]# FIXME put command here
  
 
[[Category: HOWTO]]
 
[[Category: HOWTO]]

Revision as of 18:26, 14 May 2013

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

Note.svg Note: It is assumed that you already read Live migration article before this one.

Migration sequence

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

Pre-dump

Take tasks you are 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 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.

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 without pre-dump, as this dump only takes the memory that has changed since the last pre-dump;
  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 the destination node:

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

Restore

On the destination node restore the apps from images:

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

Kill

If everything went OK you can kill stopped tasks on the source node:

[src]# FIXME put command here