From: "Michael R. Hines" <mrhines@linux.vnet.ibm.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Juan Jose Quintela Carreira <quintela@redhat.com>,
"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
Bulent Abali <abali@us.ibm.com>,
"mrhines@us.ibm.com" <mrhines@us.ibm.com>,
Anthony Liguori <anthony@codemonkey.ws>,
Chegu Vinod <chegu_vinod@hp.com>
Subject: Re: [Qemu-devel] [PATCH v7 00/12] rdma: migration support
Date: Thu, 13 Jun 2013 17:17:17 -0400 [thread overview]
Message-ID: <51BA36DD.8050703@linux.vnet.ibm.com> (raw)
In-Reply-To: <51BA264E.4010701@redhat.com>
On 06/13/2013 04:06 PM, Paolo Bonzini wrote:
>>
>> (CC-ing qemu-devel).
>>
>> OK, that's good to know. This means that we need to bringup the mlock()
>> problem as a "larger" issue in the linux community instead of the QEMU
>> community.
>>
>> In the meantime, how about I make update to the RDMA patch which does
>> the following:
>>
>> 1. Solution #1:
>> If user requests "x-rdma-pin-all", then
>> If QEMU has enabled "-realtime mlock=on"
>> Then, allow the capability
>> Else
>> Disallow the capability
>>
>> 2. Solution #2: Create NEW qemu monitor command which locks memory *in
>> advance*
>> before the migrate command occurs, to clearly
>> indicate to the user
>> that the cost of locking memory must be paid
>> before the migration starts.
>>
>> Which solution do you prefer? Or do you have alternative idea?
> Let's just document it in the release notes. There's time to fix it.
>
> Regarding the timestamp problem, it should be fixed in the RDMA code.
> You did find a bug, but xyz_start_outgoing_migration should be
> asynchronous and the pinning should happen in the setup phase. This is
> because the setup phase is already running outside the big QEMU lock and
> the guest would not be frozen.
I think you misunderstood the symptom. The pinning is *already*
happening in the setup phase (xyz_start_outgoing_migration), not
inside the the migration_thread().
The problem is in Linux: The guest appears to be frozen not because
of any locks but because the pinning itself (allocating and clearing memory)
is slowing down the virtual machine so much that it looks like its not
running.
> I think the patches are ready for merging, because incremental work
> makes it easier to discuss the changes(*) but you really need to do two
> things before 1.6, or I would rather revert them.
Yes, could someone go ahead and pull them? They are very well bug-tested.
>
> (1) move the pinning to the setup phase
This is already done in the existing patchset.
>
> (2) add a debug mode where every pass unpins all the memory and
> restarts. Speed doesn't matter, this is so that the protocol supports
> it from the beginning, and any caching heuristics need to be done on the
> source side. As all debug modes, it will be somewhat prone to bitrot,
> but at least there is a reference implementation for anyone who laters
> wants to add caching.
>
> I think (2) is very important so that, for example, during fault
> tolerance you can reduce a bit the pinned size for smaller workloads,
> even without ballooning.
I agree that this is a necessary feature (dynamic source registration), but
it is a lot more complicated than a simple unpin of everything before
every pass.
As you suggested, I would rather not introduce unused code, but rather
wait until
someone in the future has a full-functional, testable, implementation.
Actually - I am already working on a fault-tolerance implementation as
we speak
and will be posting it soon, so it's likely I will submit a patch to do
something like
this at that time.
> (*) for example, why the introduction of acct_update_position? Is
> it a fix for a bug that always existed, or driven by some other
> changes?
This is important because RDMA writes do not happen sycnrhonously. It is
impossible
to update the accounting inside of save_live_iterate() because the RDMA
operations
are still outstanding.
It is only until they have completed later that we can actually know
whether what the
accounting statistics really are.
- Michael
next prev parent reply other threads:[~2013-06-13 21:18 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-10 16:03 [Qemu-devel] [PATCH v7 00/12] rdma: migration support mrhines
2013-06-10 16:03 ` [Qemu-devel] [PATCH v7 01/12] rdma: add documentation mrhines
2013-06-10 16:03 ` [Qemu-devel] [PATCH v7 02/12] rdma: introduce qemu_update_position() mrhines
2013-06-10 16:03 ` [Qemu-devel] [PATCH v7 03/12] rdma: export yield_until_fd_readable() mrhines
2013-06-10 16:03 ` [Qemu-devel] [PATCH v7 04/12] rdma: export throughput w/ MigrationStats QMP mrhines
2013-06-10 16:03 ` [Qemu-devel] [PATCH v7 05/12] rdma: introduce qemu_file_mode_is_not_valid() mrhines
2013-06-10 16:03 ` [Qemu-devel] [PATCH v7 06/12] rdma: export qemu_fflush() mrhines
2013-06-10 16:03 ` [Qemu-devel] [PATCH v7 07/12] rdma: introduce ram_handle_compressed() mrhines
2013-06-10 16:03 ` [Qemu-devel] [PATCH v7 08/12] rdma: introduce qemu_ram_foreach_block() mrhines
2013-06-10 16:03 ` [Qemu-devel] [PATCH v7 09/12] rdma: new QEMUFileOps hooks mrhines
2013-06-10 16:03 ` [Qemu-devel] [PATCH v7 10/12] rdma: introduce capability x-rdma-pin-all mrhines
2013-06-10 16:03 ` [Qemu-devel] [PATCH v7 11/12] rdma: core logic mrhines
2013-06-10 16:03 ` [Qemu-devel] [PATCH v7 12/12] rdma: send pc.ram mrhines
[not found] ` <4168C988EBDF2141B4E0B6475B6A73D10CE2AAC1@G6W2488.americas.hpqcorp.net>
[not found] ` <51B60ABA.2070401@linux.vnet.ibm.com>
[not found] ` <4168C988EBDF2141B4E0B6475B6A73D10CE2BAE7@G6W2488.americas.hpqcorp.net>
[not found] ` <51B7B652.3070905@linux.vnet.ibm.com>
[not found] ` <51B85EE5.1050702@hp.com>
[not found] ` <51B868B3.9090607@linux.vnet.ibm.com>
[not found] ` <51B9A614.2050101@hp.com>
[not found] ` <51B9BFCA.4050008@linux.vnet.ibm.com>
[not found] ` <51B9CE2E.5080504@hp.com>
2013-06-13 14:45 ` [Qemu-devel] [PATCH v7 00/12] rdma: migration support Michael R. Hines
[not found] ` <51B9C2D6.30000@linux.vnet.ibm.com>
[not found] ` <51B9D6A8.9070007@hp.com>
2013-06-13 14:55 ` Michael R. Hines
2013-06-13 20:06 ` Paolo Bonzini
2013-06-13 21:17 ` Michael R. Hines [this message]
2013-06-13 21:40 ` Paolo Bonzini
2013-06-14 6:25 ` Michael R. Hines
2013-06-14 6:30 ` [Qemu-devel] RDMA: please pull and re-test freezing fixes Michael R. Hines
2013-06-14 20:38 ` Michael R. Hines
2013-06-15 22:50 ` Chegu Vinod
2013-06-16 4:13 ` Michael R. Hines
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=51BA36DD.8050703@linux.vnet.ibm.com \
--to=mrhines@linux.vnet.ibm.com \
--cc=abali@us.ibm.com \
--cc=anthony@codemonkey.ws \
--cc=chegu_vinod@hp.com \
--cc=mrhines@us.ibm.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.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).