qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Cam Macdonell <cam@cs.ualberta.ca>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: Avi Kivity <avi@redhat.com>, kvm@vger.kernel.org, qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device
Date: Mon, 10 May 2010 11:43:44 -0600	[thread overview]
Message-ID: <AANLkTin8CwI0Oly-LR2zncrEWnLXbpOVXl2OMDS3kb0U@mail.gmail.com> (raw)
In-Reply-To: <4BE84172.9080305@codemonkey.ws>

On Mon, May 10, 2010 at 11:25 AM, Anthony Liguori <anthony@codemonkey.ws> wrote:
> On 05/10/2010 11:59 AM, Avi Kivity wrote:
>>
>> On 05/10/2010 06:38 PM, Anthony Liguori wrote:
>>>
>>>>> Otherwise, if the BAR is allocated during initialization, I would have
>>>>> to use MAP_FIXED to mmap the memory.  This is what I did before the
>>>>> qemu_ram_mmap() function was added.
>>>>
>>>> What would happen to any data written to the BAR before the the
>>>> handshake completed?  I think it would disappear.
>>>
>>> You don't have to do MAP_FIXED.  You can allocate a ram area and map that
>>> in when disconnected.  When you connect, you create another ram area and
>>> memcpy() the previous ram area to the new one.  You then map the second ram
>>> area in.
>>
>> But it's a shared memory area.  Other peers could have connected and
>> written some data in.  The memcpy() would destroy their data.
>
> Why try to attempt to support multi-master shared memory?  What's the
> use-case?

I don't see it as multi-master, but that the latest guest to join
shouldn't have their contents take precedence.  In developing this
patch, my motivation has been to let the guests decide.  If the memcpy
is always done, even when no data is written, a guest cannot join
without overwriting everything.

One use case we're looking at is having VMs using a map reduce
framework like Hadoop or Phoenix running in VMs.  However, if a
workqueue is stored or data transfer passes through shared memory, a
system can't scale up the number of workers because each new guest
will erase the shared memory (and the workqueue or in progress data
transfer).

In cases where the latest guest to join wants to clear the memory, it
can do so without the automatic memcpy.  The guest can do a memset
once it knows the memory is attached.  My opinion is to leave it to
the guests and the application that is using the shared memory to
decide what to do on guest joins.

Cam

>
> Regards,
>
> Anthony Liguori
>
>>>
>>> From the guest's perspective, it's totally transparent.  For the backend,
>>> I'd suggest having an explicit "initialized" ack or something so that it
>>> knows that the data is now mapped to the guest.
>>
>> From the peers' perspective, it's non-transparent :(
>>
>> Also it doubles the transient memory requirement.
>>
>>>
>>> If you're doing just a ring queue in shared memory, it should allow
>>> disconnect/reconnect during live migration asynchronously to the actual qemu
>>> live migration.
>>>
>>
>> Live migration of guests using shared memory is interesting.  You'd need
>> to freeze all peers on one node, disconnect, reconnect, and restart them on
>> the other node.
>>
>
>

  reply	other threads:[~2010-05-10 17:43 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-21 17:53 [Qemu-devel] [PATCH v5 0/5] PCI Shared Memory device Cam Macdonell
2010-04-21 17:53 ` [Qemu-devel] [PATCH v5 1/5] Device specification for shared memory PCI device Cam Macdonell
2010-04-21 17:53   ` [Qemu-devel] [PATCH v5 2/5] Support adding a file to qemu's ram allocation Cam Macdonell
2010-04-21 17:53     ` [Qemu-devel] [PATCH v5 3/5] Add functions for assigning ioeventfd and irqfds Cam Macdonell
2010-04-21 17:53       ` [Qemu-devel] [PATCH v5 4/5] Inter-VM shared memory PCI device Cam Macdonell
2010-04-21 18:00         ` [Qemu-devel] [PATCH v5 5/5] shared memory server for inter-VM shared memory Cam Macdonell
2010-05-05 16:57         ` [Qemu-devel] [PATCH v5 4/5] RESEND: Inter-VM shared memory PCI device Cam Macdonell
2010-05-06 17:32         ` [Qemu-devel] Re: [PATCH v5 4/5] " Anthony Liguori
2010-05-06 17:59           ` Cam Macdonell
2010-05-10 11:59         ` Avi Kivity
2010-05-10 15:22           ` Cam Macdonell
2010-05-10 15:28             ` Avi Kivity
2010-05-10 15:38               ` Anthony Liguori
2010-05-10 16:20                 ` Cam Macdonell
2010-05-10 16:52                   ` Anthony Liguori
2010-05-18 16:58                     ` Cam Macdonell
2010-05-18 17:27                       ` Avi Kivity
2010-05-10 16:59                 ` Avi Kivity
2010-05-10 17:25                   ` Anthony Liguori
2010-05-10 17:43                     ` Cam Macdonell [this message]
2010-05-10 17:52                       ` Anthony Liguori
2010-05-10 18:01                         ` Cam Macdonell
2010-05-11  7:59                         ` Avi Kivity
2010-05-11 13:10                           ` Anthony Liguori
2010-05-11 14:03                             ` Avi Kivity
2010-05-11 14:17                               ` Cam Macdonell
2010-05-11 14:53                                 ` Avi Kivity
2010-05-11 15:51                                   ` Anthony Liguori
2010-05-11 16:39                                     ` Cam Macdonell
2010-05-11 17:05                                       ` Anthony Liguori
2010-05-11 17:50                                         ` Cam Macdonell
2010-05-11 18:13                                         ` Avi Kivity
2010-05-12 15:32                                           ` Cam Macdonell
2010-05-12 15:48                                             ` Avi Kivity
2010-05-11 18:09                                     ` Avi Kivity
2010-05-11  7:55                     ` Avi Kivity
2010-05-10 15:41               ` Cam Macdonell
2010-05-10 16:40                 ` Avi Kivity
2010-05-10 16:48                   ` Cam Macdonell
2010-05-12 15:49                     ` Avi Kivity
2010-05-12 16:14                       ` Cam Macdonell
2010-05-12 16:45                         ` Avi Kivity
2010-05-10 23:17           ` Cam Macdonell
2010-05-11  8:03             ` Avi Kivity
2010-05-13 21:10           ` Cam Macdonell
2010-05-15  6:05             ` Avi Kivity
2010-05-10 10:43       ` [Qemu-devel] Re: [PATCH v5 3/5] Add functions for assigning ioeventfd and irqfds Avi Kivity
2010-05-10 15:13         ` Cam Macdonell
2010-05-10 15:17           ` Avi Kivity
2010-05-10 10:39     ` [Qemu-devel] Re: [PATCH v5 2/5] Support adding a file to qemu's ram allocation Avi Kivity
2010-05-10 15:32       ` Cam Macdonell

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=AANLkTin8CwI0Oly-LR2zncrEWnLXbpOVXl2OMDS3kb0U@mail.gmail.com \
    --to=cam@cs.ualberta.ca \
    --cc=anthony@codemonkey.ws \
    --cc=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --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).