qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] migration: broken ram_save_pending


From: Paolo Bonzini
Subject: Re: [Qemu-devel] migration: broken ram_save_pending
Date: Wed, 05 Feb 2014 08:18:18 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

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 via email to

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