Line 21: |
Line 21: |
| [[Image:Memory_migration_with_page_server.png|thumb|500px|right|Memory migration with page server]] | | [[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. | | 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. |
| + | |
| + | Note that page server is only used to migrate user memory, i.e. ''pagemap.img'' and ''pages.img'' files (see [[memory dumps]] if you don't know what that means). Everything else, including, say, process mappings (''mm.img'') is dumped in a traditional manner and should be moved over when doing migration. |
| | | |
| === Pages deduplication === | | === Pages deduplication === |
| + | |
| + | ''Main article: [[Memory images 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 parent images where the child image is replacing an existing page. This functionality is turned on by <code>--auto-dedup</code> option of <code>criu page-server</code> command. | | 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 parent images where the child image is replacing an existing page. This functionality is turned on by <code>--auto-dedup</code> option of <code>criu page-server</code> command. |
Line 51: |
Line 55: |
| | | |
| Some other options might also be useful, such as: | | Some other options might also be useful, such as: |
| + | |
| + | ; --ps-socket $FD |
| + | : Use provided file descriptor as socket for incoming connection. In this case <code>--address</code> and <code>--port</code> are ignored. Useful for intercepting page-server traffic e.g. to add encryption or authentication. |
| | | |
| ; -o|--logfile $FILE | | ; -o|--logfile $FILE |
Line 79: |
Line 86: |
| | | |
| * Currently it only works via TCP | | * Currently it only works via TCP |
− | * DNS names are not resolved for <code>--address</code> argument, only IP addresses are allowed
| |
| * No encryption, no compression, data is passed over network as is | | * No encryption, no compression, data is passed over network as is |
| | | |
Line 89: |
Line 95: |
| * [[Iterative migration]] | | * [[Iterative migration]] |
| * [[Incremental dumps]] | | * [[Incremental dumps]] |
| + | * [[Memory images deduplication]] |
| * [[Lazy migration]] | | * [[Lazy migration]] |
| | | |