qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: "Michael R. Hines" <mrhines@linux.vnet.ibm.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 16:06:38 -0400	[thread overview]
Message-ID: <51BA264E.4010701@redhat.com> (raw)
In-Reply-To: <51B9DD5C.1030409@linux.vnet.ibm.com>

Il 13/06/2013 10:55, Michael R. Hines ha scritto:
> On 06/13/2013 10:26 AM, Chegu Vinod wrote:
>>>
>>> 1. start QEMU with the lock option *first*
>>> 2. Then enable x-rdma-pin-all
>>> 3. Then perform the migration
>>>
>>> What happens here? Does pinning "in advance" help you?
>>
>> Yes it does help by avoiding the freeze time at the start of the
>> pin-all migration.
>>
>> I already mentioned about this in in my earlier responses as an option
>> to consider for larger guests
>> (https://lists.gnu.org/archive/html/qemu-devel/2013-05/msg00435.html).
>>
>> But pinning all of guest memory has a few drawbacks...as you may
>> already know.
>>
>> Just to be sure I just double checked it again with your v7 bits .
>> Started a 64GB/10VCPU guest  (started qemu with the"-realtime
>> mlock=on" option) and as expected the guest startup took about 20
>> seconds longer (i.e. time taken to mlock the 64GB of guest RAM) but
>> the pin-all migration started fine...i.e. didn't observe any freezes
>> at the start of the migration
>>
>>
> (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 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.

(1) move the pinning to the setup phase

(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.

    (*) 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?

Paolo

  reply	other threads:[~2013-06-13 20:06 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 [this message]
2013-06-13 21:17                       ` Michael R. Hines
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=51BA264E.4010701@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=abali@us.ibm.com \
    --cc=anthony@codemonkey.ws \
    --cc=chegu_vinod@hp.com \
    --cc=mrhines@linux.vnet.ibm.com \
    --cc=mrhines@us.ibm.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).