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: Juan Quintela
Subject: Re: [Qemu-devel] [PATCH v7 35/42] Don't sync dirty bitmaps in postcopy
Date: Tue, 14 Jul 2015 14:36:50 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

"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?

> ---
>  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();



reply via email to

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