Changes

Jump to navigation Jump to search
1,610 bytes added ,  00:27, 30 August 2016
moar good contents
Line 3: Line 3:  
== Rationale ==
 
== Rationale ==
   −
For process tree migration, the biggest part of transfer data is the memory used by the processes. Therefore, optimizing this memory transfer would have the most benefit.
+
For process tree migration, the biggest part of transfer data is the memory used by the processes. Therefore, optimizing this memory transfer would be beneficial.
    +
[[Image:Memory_migration_without_page_server.png|thumb|500px|right|Memory migration without page server]]
 
Without the page server, migrating the user memory pages consists of:
 
Without the page server, migrating the user memory pages consists of:
* dumping the memory to files on disk;
+
* dumping (writing) the memory to files on disk;
* copying the files over network to the destination system;
+
* reading the files and sending the data over the network to the destination host;
 +
* receiving files on the destination host, writing to files on disk;
 
* restoring by reading the files into memory.
 
* restoring by reading the files into memory.
   −
Such a process incurs significant I/O overhead and slows down the migration. This overhead can be avoided by doing a direct memory to memory copy, avoiding any disk I/O.
+
In other words, all the memory is written to the disk twice, and read from the disk also twice. It incurs significant I/O overhead and slows down the migration. The overhead is further multiplied when using <code>criu pre-dump</code> (such as for [[iterative migration]]), as in this case memory is dumped not once but a few times.
 +
 
 +
A way to mitigate the disk I/O overhead is to use [[wikipedia:tmpfs|tmpfs]], a filesystem that use RAM as a storage (see [[Disk-less migration]] for details). This eliminates the disk I/O, but not the double read/write. To eliminate it, a page server mechanism was implemented.
 +
<br clear="both"/>
    
== Operation ==
 
== Operation ==
   −
FIXME
+
[[Image:Memory_migration_with_page_server.png|thumb|500px|right|Memory migration with page server]]
 +
When using page server, the memory is dumped not to disk, but directly to network, thus eliminating any disk reads/writes on the source. On the destination system, a page server runs, receiving the data from network and writing it to files on disk or tmpfs.
 +
 
 +
=== Pages deduplication ===
 +
 
 +
When iterative memory dumping feature (<code>criu pre-dump</code>) is used, memory is sent to page server a few times. The page server can automatically deduplicate pages, by punching holes in a parent images where child is replacing the page. This functionality is turned on by <code>--auto-dedup</code> option of <code>criu page-server</code> command.
 +
<br clear="both"/>
 +
 
 +
== Usage ==
 +
 
 +
See https://asciinema.org/a/15847.
 +
 
 +
== See also ==
 +
 
 +
* [[P.Haul]]
 +
* [[Live migration]]
 +
* [[Lazy migration]]
 +
 
 +
== External links ==
 +
 
 +
* Using page server: https://asciinema.org/a/15847
    
[[Category: HOWTO]]
 
[[Category: HOWTO]]
 
[[Category: Development]]
 
[[Category: Development]]

Navigation menu