Message ID | 20160630125311.GI28340@redhat.com |
---|---|
State | Rejected |
Series | "criu: make pagemap friendlier to random access" |
Headers | show |
diff --git a/criu/uffd.c b/criu/uffd.c index 9dee9d9..00180dd 100644 --- a/criu/uffd.c +++ b/criu/uffd.c @@ -418,6 +418,7 @@ static int uffd_zero_page(struct lazy_pages_info *lpi, __u64 address) return -1; } + lpi->copied_pages++; return ps; }
On Thu, Jun 30, 2016 at 3:53 PM, Adrian Reber <areber@redhat.com> wrote: > I also tried this version of your patches and it still works. > > I like that the pages are now marked as lazy/zero during dump. This is > something I thought being necessary when combining pre-copy and > post-copy. > > Looking with crit at the output of my pagemap I see, in my example, that > 0x7ffc8829b000 is only marked as lazy but not as zero. Lazy restoring the > process claims that it is a zero page: > > (08.030380) lazy-pages: uffdio_zeropage.range.start 0x7ffc8829b000 > (08.030410) lazy-pages: ioctl UFFDIO_ZEROPAGE rc 0x0 Hmm, this seems like a bug :( > It is not clear to me if that is the way it is supposed to be or if > something is going wrong. > > Also, when the restore finishes the uffd daemon claims that not all pages have > been transferred, which can be solved with the following simple patch: Thanks for the fix > diff --git a/criu/uffd.c b/criu/uffd.c > index 9dee9d9..00180dd 100644 > --- a/criu/uffd.c > +++ b/criu/uffd.c > @@ -418,6 +418,7 @@ static int uffd_zero_page(struct lazy_pages_info *lpi, __u64 address) > return -1; > } > > + lpi->copied_pages++; > return ps; > } > > > > Adrian > > > On Wed, Jun 29, 2016 at 08:55:05AM +0300, Mike Rapoport wrote: >> Hi, >> >> Yet another respin. >> The most significant difference is addition of lazy and zero pages notion. >> This makes the pagemap somewaht more consistent. The zero pages were not >> strictly necessary for the current series, but I think that this >> information will be very relevant for lazy-pages performance optimizations. >> >> v5 changes: >> * added notion of zero pages and lazy pages in the pagemap. >> * added several tcp_{cork,nodelay} to speedup network tranfers >> >> 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: >> * cointinue refactoring of page-reader to support random access and remote >> page reads >> * make lazy-pages non-blocking with respect to #PFs >> * performance imporvements >> >> Mike Rapoport (8): >> criu: page-pipe: add ability to allocate IOVs >> criu: slightly refactor memory dump to support delaying it >> criu: page-pipe: add a wrapping structure for holes and pages iovs >> criu: page-{pipe,xfer}: add helper function for dumping holes >> criu: pagemap: add entries for zero pages >> criu: add ability to skip writing lazy pages >> criu: page-xfer: add PS_IOV_GET interface >> criu: lazy-pages: enable remoting of lazy pages >> >> criu/cr-dump.c | 57 +++++++--- >> criu/include/mem.h | 3 +- >> criu/include/page-pipe.h | 33 ++++-- >> criu/include/page-xfer.h | 6 +- >> criu/include/parasite-syscall.h | 1 - >> criu/include/pstree.h | 2 + >> criu/include/stats.h | 2 + >> criu/mem.c | 72 ++++++++----- >> criu/page-pipe.c | 102 +++++++++++------- >> criu/page-xfer.c | 234 ++++++++++++++++++++++++++++++---------- >> criu/pagemap.c | 27 +++-- >> criu/parasite-syscall.c | 2 + >> criu/shmem.c | 13 +-- >> criu/stats.c | 2 + >> criu/uffd.c | 9 +- >> images/pagemap.proto | 2 + >> images/stats.proto | 3 + >> 17 files changed, 402 insertions(+), 168 deletions(-) >> >> -- >> 1.9.1 >>