qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v7 35/42] Don't sync dirty bitmaps in postcopy


From: Dr. David Alan Gilbert
Subject: Re: [Qemu-devel] [PATCH v7 35/42] Don't sync dirty bitmaps in postcopy
Date: Tue, 14 Jul 2015 14:13:19 +0100
User-agent: Mutt/1.5.23 (2014-03-12)

* Juan Quintela (address@hidden) wrote:
> "Dr. David Alan Gilbert (git)" <address@hidden> wrote:
> > From: "Dr. David Alan Gilbert" <address@hidden>
> >
> > Once we're in postcopy the source processors are stopped and memory
> > shouldn't change any more, so there's no need to look at the dirty
> > map.
> >
> > There are two notes to this:
> >   1) If we do resync and a page had changed then the page would get
> >      sent again, which the destination wouldn't allow (since it might
> >      have also modified the page)
> >   2) Before disabling this I'd seen very rare cases where a page had been
> >      marked dirtied although the memory contents are apparently identical
> >
> > Signed-off-by: Dr. David Alan Gilbert <address@hidden>
> > Reviewed-by: David Gibson <address@hidden>
> 
> Reviewed-by: Juan Quintela <address@hidden>
> 
> But, in what patch do we sync the migratioon bitmap after changing to 
> postcopy?

It's called one last time in ram_postcopy_send_discard_bitmap; see:
v7-0025-Postcopy-Maintain-sentmap-and-calculate-discard.patch

and that happens at the start of postcopy mode, when the CPU is stopped and 
won't
be running on the source again.

Dave

> 
> > ---
> >  migration/ram.c | 7 +++++--
> >  1 file changed, 5 insertions(+), 2 deletions(-)
> >
> > diff --git a/migration/ram.c b/migration/ram.c
> > index 01a0ab4..5cff4d6 100644
> > --- a/migration/ram.c
> > +++ b/migration/ram.c
> > @@ -1643,7 +1643,9 @@ static int ram_save_complete(QEMUFile *f, void 
> > *opaque)
> >  {
> >      rcu_read_lock();
> >  
> > -    migration_bitmap_sync();
> > +    if (!migration_postcopy_phase(migrate_get_current())) {
> > +        migration_bitmap_sync();
> > +    }
> >  
> >      ram_control_before_iterate(f, RAM_CONTROL_FINISH);
> >  
> > @@ -1678,7 +1680,8 @@ static void ram_save_pending(QEMUFile *f, void 
> > *opaque, uint64_t max_size,
> >  
> >      remaining_size = ram_save_remaining() * TARGET_PAGE_SIZE;
> >  
> > -    if (remaining_size < max_size) {
> > +    if (!migration_postcopy_phase(migrate_get_current()) &&
> > +        remaining_size < max_size) {
> >          qemu_mutex_lock_iothread();
> >          rcu_read_lock();
> >          migration_bitmap_sync();
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK



reply via email to

[Prev in Thread] Current Thread [Next in Thread]