qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Alexey Kardashevskiy <aik@ozlabs.ru>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Cc: Alex Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] migration: broken ram_save_pending
Date: Wed, 05 Feb 2014 08:18:18 +0100	[thread overview]
Message-ID: <52F1E5BA.60902@redhat.com> (raw)
In-Reply-To: <52F16708.8060902@ozlabs.ru>

Il 04/02/2014 23:17, Alexey Kardashevskiy ha scritto:
>>> >> Well, it will fix it in my particular case but in a long run this does not
>>> >> feel like a fix - there should be a way for migration_thread() to know that
>>> >> ram_save_iterate() sent all dirty pages it had to send, no?
>> >
>> > No, because new pages might be dirtied while ram_save_iterate() was running.
>
> I do not get it, sorry. In my example the ram_save_iterate() sends
> everything in one go but its caller thinks that it did not and tries again.

It's not that "the caller thinks that it did not".  The caller knows 
what happens, because migration_bitmap_find_and_reset_dirty updates the 
migration_dirty_pages count that ram_save_pending uses.  So 
migration_dirty_pages should be 0 when ram_save_pending is entered.

However, something gets dirty in between so remaining_size is again 
393216 when ram_save_pending returns, after the migration_bitmap_sync 
call.  Because of this the migration thread thinks that 
ram_save_iterate() _will_ not send everything in one go.

At least, this is how I read the code.  Perhaps I'm wrong. ;)

Paolo

> This is is not because something got dirty in between, this is only because
> of sending zero pages as 8+1 bytes chunk (not as 4096+1 bytes).

  reply	other threads:[~2014-02-05  7:18 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-04  7:15 [Qemu-devel] migration: broken ram_save_pending Alexey Kardashevskiy
2014-02-04 10:46 ` Paolo Bonzini
2014-02-04 11:59   ` Alexey Kardashevskiy
2014-02-04 12:07     ` Paolo Bonzini
2014-02-04 12:16       ` Alexey Kardashevskiy
2014-02-04 14:00         ` Paolo Bonzini
2014-02-04 22:17           ` Alexey Kardashevskiy
2014-02-05  7:18             ` Paolo Bonzini [this message]
2014-02-05  9:09               ` Dr. David Alan Gilbert
2014-02-05 16:35                 ` Paolo Bonzini
2014-02-05 16:42                   ` Dr. David Alan Gilbert
2014-02-05 16:45                     ` Paolo Bonzini
2014-02-06  3:10                       ` Alexey Kardashevskiy
2014-02-06 11:24                         ` Dr. David Alan Gilbert
2014-02-07  5:39                           ` Alexey Kardashevskiy
2014-02-07  8:55                             ` Dr. David Alan Gilbert
2014-02-06 23:49                         ` Paolo Bonzini
2014-02-07  5:42                           ` Alexey Kardashevskiy

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=52F1E5BA.60902@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=agraf@suse.de \
    --cc=aik@ozlabs.ru \
    --cc=qemu-devel@nongnu.org \
    /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).