[CRIU] [PATCH v4 00/12] lazy-pages: add support for remote pages

Adrian Reber areber at redhat.com
Mon Jun 6 13:36:36 PDT 2016


I also tested this version (v4) and I can now migrate small processes
and larger processes (200MB) without errors. I have not tried to migrate
more than once process with this patchset.

What is the status of the kernel patches for non cooperative uffd usage.
Have they been merged?

To migrate a 200MB process between two VMs on my system I need about 3
seconds with dump, rsync and restore. The process just loops over its
malloc'd memory and writes one byte in each page.

Using the remote lazy-restore options the restore requires more than
three hours. So again, as with all optimizations, it can make the
situation worse. Looking at the debug log I see about 4 to 5 pages
transferred per second. About 50000 pages results in over 10000 seconds.
Which matches the three hours pretty good. Just reporting this without
any intent to argument that lazy-restore might be a bad idea. I have
already seen cases where pre-copy migration takes longer than
the unoptimized case. I guess the combination of pre-copy and post-copy
migration is the final goal.

So, despite having found a case where it is slower I am acking this
series. Mike, thanks for these patches!

Acked-by: Adrian Reber <areber at redhat.com>

		Adrian

On Mon, Jun 06, 2016 at 09:27:33AM +0300, Mike Rapoport wrote:
> Hi,
> 
> Some fixes, thanks to Adrian.
> 
> v4 changes:
> * fixed ppb_alloc_resize to pass nr_pages instead of nr_bytes to fcntl
> * added removal of ppb's right after they are spliced to socked
> 
> v3 changes:
> * fixed initialization of pp->own_iovs, thanks Mr. Jenkins
> 
> v2 changes:
> * added helpers to page-xfer to reduce code duplication
> * modified protocol between dump side page server and lazy pages daemon as
> per Pavel's comments
> * some changes in the way parasite_dump_pages_seized is refactored. There's
> still more to improve here, even without addition of lazy pages support :)
> 
> TODO:
> * refactor page-reader to support random access and remote page reads
> * make lazy-pages non-blocking with respect to #PFs
> * performance imporvements
> 
> Mike Rapoport (12):
>   criu: page-pipe: introduce page_pipe_buf manipulation helpers
>   criu: page_pipe_buf: add PPB_LAZY flag
>   criu: page-pipe: introduce page_pipe_split
>   criu: page-pipe: introduce page_pipe_destroy_ppb
>   criu: page-xfer: move code aroud
>   criu: page-xfer: intorduce helpers for sending IOVs
>   criu: page-xfer: add ability to skip writing lazy pages
>   criu: page-xfer: add PS_IOV_GET interface
>   criu: uffd: add --lazy-addr option
>   criu: slightly refactor memory dump to support delaying it
>   criu: page-pipe: add ability to allocate IOVs
>   criu: lazy-pages: enable remoting of lazy pages
> 
>  criu/cr-dump.c                  |   57 +-
>  criu/crtools.c                  |    4 +
>  criu/include/cr_options.h       |    1 +
>  criu/include/mem.h              |    3 +-
>  criu/include/page-pipe.h        |   11 +-
>  criu/include/page-xfer.h        |    4 +-
>  criu/include/parasite-syscall.h |    1 -
>  criu/include/pstree.h           |    1 +
>  criu/mem.c                      |   52 +-
>  criu/page-pipe.c                |  336 ++++++++++--
>  criu/page-read.c                |    2 +-
>  criu/page-xfer.c                | 1107 +++++++++++++++++++++------------------
>  criu/parasite-syscall.c         |    2 +
>  criu/shmem.c                    |    4 +-
>  criu/uffd.c                     |   35 +-
>  15 files changed, 992 insertions(+), 628 deletions(-)
> 
> -- 
> 1.9.1
> 


More information about the CRIU mailing list