From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: Wei Yang <richardw.yang@linux.intel.com>
Cc: qemu-devel@nongnu.org, quintela@redhat.com
Subject: Re: [Qemu-devel] [PATCH 2/2] migration: extract ram_load_precopy
Date: Wed, 24 Jul 2019 13:10:24 +0100 [thread overview]
Message-ID: <20190724121024.GH2717@work-vm> (raw)
In-Reply-To: <20190724012007.GC2199@richard>
* Wei Yang (richardw.yang@linux.intel.com) wrote:
> On Tue, Jul 23, 2019 at 05:47:03PM +0100, Dr. David Alan Gilbert wrote:
> >* Wei Yang (richardw.yang@linux.intel.com) wrote:
> >> After cleanup, it would be clear to audience there are two cases
> >> ram_load:
> >>
> >> * precopy
> >> * postcopy
> >>
> >> And it is not necessary to check postcopy_running on each iteration for
> >> precopy.
> >>
> >> Signed-off-by: Wei Yang <richardw.yang@linux.intel.com>
> >> ---
> >> migration/ram.c | 73 +++++++++++++++++++++++++++++++------------------
> >> 1 file changed, 46 insertions(+), 27 deletions(-)
> >>
> >> diff --git a/migration/ram.c b/migration/ram.c
> >> index 6bfdfae16e..5f6f07b255 100644
> >> --- a/migration/ram.c
> >> +++ b/migration/ram.c
> >> @@ -4200,40 +4200,26 @@ static void colo_flush_ram_cache(void)
> >> trace_colo_flush_ram_cache_end();
> >> }
> >>
> >> -static int ram_load(QEMUFile *f, void *opaque, int version_id)
> >> +/**
> >> + * ram_load_precopy: load a page in precopy case
> >
> >This comment is wrong - although I realise you copied it from the
> >postcopy case; they don't just load a single page; they load 'pages'
> >
>
> Thanks for pointing out.
>
> Actually, I got one confusion in these two load. Compare these two cases, I
> found precopy would handle two more cases:
>
> * precopy: RAM_SAVE_FLAG_ZERO | RAM_SAVE_FLAG_PAGE |
> RAM_SAVE_FLAG_COMPRESS_PAGE | RAM_SAVE_FLAG_XBZRLE
> * postcopy: RAM_SAVE_FLAG_ZERO | RAM_SAVE_FLAG_PAGE
>
> Why postcopy doesn't need to handle the other two cases? Function
> ram_save_target_page() does the same thing in precopy and postcopy. I don't
> find the reason the behavior differs. Would you mind giving me a hint?
Because we don't support either compression or xbzrle with postcopy.
Compression could be fixed, but it needs to make sure it uses the
place-page function to atomically place the page.
xbzrle never gets used during the postcopy stage; it gets used
in the precopy stage in a migration that might switch to postcopy
though. Since xbzrle relies on optimising differences between
passes, it's
1) Not needed in postcopy where there's only one final pass
2) Since the destination is changing RAM, you can't transmit
deltas relative to the old data, since that data may have
changed.
Dave
> >Other than that, I think it's OK, so:
> >
> >
> >Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> >
>
> --
> Wei Yang
> Help you, Help me
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2019-07-24 12:10 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-22 7:53 [Qemu-devel] [PATCH 0/2] migration: cleanup ram_load Wei Yang
2019-07-22 7:53 ` [Qemu-devel] [PATCH 1/2] migration: return -EINVAL directly when version_id mismatch Wei Yang
2019-07-23 15:44 ` Dr. David Alan Gilbert
2019-07-22 7:53 ` [Qemu-devel] [PATCH 2/2] migration: extract ram_load_precopy Wei Yang
2019-07-23 16:47 ` Dr. David Alan Gilbert
2019-07-24 1:20 ` Wei Yang
2019-07-24 12:10 ` Dr. David Alan Gilbert [this message]
2019-07-24 22:14 ` Wei Yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190724121024.GH2717@work-vm \
--to=dgilbert@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=richardw.yang@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).