From: Avi Kivity <avi@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: Cam Macdonell <cam@cs.ualberta.ca>,
kvm@vger.kernel.org, qemu-devel@nongnu.org
Subject: Re: [PATCH v5 4/5] Inter-VM shared memory PCI device
Date: Tue, 11 May 2010 10:59:41 +0300 [thread overview]
Message-ID: <4BE90E6D.7070007@redhat.com> (raw)
In-Reply-To: <4BE847CB.7050503@codemonkey.ws>
On 05/10/2010 08:52 PM, Anthony Liguori wrote:
>>> 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).
>
> (Replying again to list)
>
> What data structure would you use? For a lockless ring queue, you can
> only support a single producer and consumer. To achieve bidirectional
> communication in virtio, we always use two queues.
You don't have to use a lockless ring queue. You can use locks
(spinlocks without interrupt support, full mutexes with interrupts) and
any data structure you like. Say a hash table + LRU for a shared cache.
>
> If you're adding additional queues to support other levels of
> communication, you can always use different areas of shared memory.
You'll need O(n^2) shared memory areas (n=peer count), and it is a lot
less flexible that real shared memory. Consider using threading where
the only communication among threads is a pipe (erlang?)
--
error compiling committee.c: too many arguments to function
WARNING: multiple messages have this Message-ID (diff)
From: Avi Kivity <avi@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: Cam Macdonell <cam@cs.ualberta.ca>,
qemu-devel@nongnu.org, kvm@vger.kernel.org
Subject: [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device
Date: Tue, 11 May 2010 10:59:41 +0300 [thread overview]
Message-ID: <4BE90E6D.7070007@redhat.com> (raw)
In-Reply-To: <4BE847CB.7050503@codemonkey.ws>
On 05/10/2010 08:52 PM, Anthony Liguori wrote:
>>> 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).
>
> (Replying again to list)
>
> What data structure would you use? For a lockless ring queue, you can
> only support a single producer and consumer. To achieve bidirectional
> communication in virtio, we always use two queues.
You don't have to use a lockless ring queue. You can use locks
(spinlocks without interrupt support, full mutexes with interrupts) and
any data structure you like. Say a hash table + LRU for a shared cache.
>
> If you're adding additional queues to support other levels of
> communication, you can always use different areas of shared memory.
You'll need O(n^2) shared memory areas (n=peer count), and it is a lot
less flexible that real shared memory. Consider using threading where
the only communication among threads is a pipe (erlang?)
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2010-05-11 7:59 UTC|newest]
Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-21 17:53 [PATCH v5 0/5] PCI Shared Memory device Cam Macdonell
2010-04-21 17:53 ` [Qemu-devel] " Cam Macdonell
2010-04-21 17:53 ` [PATCH v5 1/5] Device specification for shared memory PCI device Cam Macdonell
2010-04-21 17:53 ` [Qemu-devel] " Cam Macdonell
2010-04-21 17:53 ` [PATCH v5 2/5] Support adding a file to qemu's ram allocation Cam Macdonell
2010-04-21 17:53 ` [Qemu-devel] " Cam Macdonell
2010-04-21 17:53 ` [PATCH v5 3/5] Add functions for assigning ioeventfd and irqfds Cam Macdonell
2010-04-21 17:53 ` [Qemu-devel] " Cam Macdonell
2010-04-21 17:53 ` [PATCH v5 4/5] Inter-VM shared memory PCI device Cam Macdonell
2010-04-21 17:53 ` [Qemu-devel] " Cam Macdonell
2010-04-21 18:00 ` [PATCH v5 5/5] shared memory server for inter-VM shared memory Cam Macdonell
2010-04-21 18:00 ` [Qemu-devel] " Cam Macdonell
2010-05-05 16:57 ` [PATCH v5 4/5] RESEND: Inter-VM shared memory PCI device Cam Macdonell
2010-05-05 16:57 ` [Qemu-devel] " Cam Macdonell
2010-05-06 17:32 ` [PATCH v5 4/5] " Anthony Liguori
2010-05-06 17:32 ` [Qemu-devel] " Anthony Liguori
2010-05-06 17:59 ` Cam Macdonell
2010-05-06 17:59 ` [Qemu-devel] " Cam Macdonell
2010-05-10 11:59 ` Avi Kivity
2010-05-10 11:59 ` [Qemu-devel] " Avi Kivity
2010-05-10 15:22 ` Cam Macdonell
2010-05-10 15:22 ` [Qemu-devel] " Cam Macdonell
2010-05-10 15:28 ` Avi Kivity
2010-05-10 15:28 ` [Qemu-devel] " Avi Kivity
2010-05-10 15:38 ` Anthony Liguori
2010-05-10 15:38 ` [Qemu-devel] " Anthony Liguori
2010-05-10 16:20 ` Cam Macdonell
2010-05-10 16:20 ` [Qemu-devel] " Cam Macdonell
2010-05-10 16:52 ` Anthony Liguori
2010-05-10 16:52 ` [Qemu-devel] " Anthony Liguori
2010-05-18 16:58 ` Cam Macdonell
2010-05-18 16:58 ` [Qemu-devel] " Cam Macdonell
2010-05-18 17:27 ` Avi Kivity
2010-05-18 17:27 ` [Qemu-devel] " Avi Kivity
2010-05-10 16:59 ` Avi Kivity
2010-05-10 16:59 ` [Qemu-devel] " Avi Kivity
2010-05-10 17:25 ` Anthony Liguori
2010-05-10 17:25 ` [Qemu-devel] " Anthony Liguori
2010-05-10 17:43 ` Cam Macdonell
2010-05-10 17:43 ` [Qemu-devel] " Cam Macdonell
2010-05-10 17:52 ` Anthony Liguori
2010-05-10 17:52 ` [Qemu-devel] " Anthony Liguori
2010-05-10 18:01 ` Cam Macdonell
2010-05-10 18:01 ` [Qemu-devel] " Cam Macdonell
2010-05-11 7:59 ` Avi Kivity [this message]
2010-05-11 7:59 ` Avi Kivity
2010-05-11 13:10 ` Anthony Liguori
2010-05-11 13:10 ` [Qemu-devel] " Anthony Liguori
2010-05-11 14:03 ` Avi Kivity
2010-05-11 14:03 ` [Qemu-devel] " Avi Kivity
2010-05-11 14:17 ` Cam Macdonell
2010-05-11 14:17 ` [Qemu-devel] " Cam Macdonell
2010-05-11 14:53 ` Avi Kivity
2010-05-11 14:53 ` [Qemu-devel] " Avi Kivity
2010-05-11 15:51 ` Anthony Liguori
2010-05-11 15:51 ` [Qemu-devel] " Anthony Liguori
2010-05-11 16:39 ` Cam Macdonell
2010-05-11 16:39 ` [Qemu-devel] " Cam Macdonell
2010-05-11 17:05 ` Anthony Liguori
2010-05-11 17:05 ` [Qemu-devel] " Anthony Liguori
2010-05-11 17:50 ` Cam Macdonell
2010-05-11 17:50 ` [Qemu-devel] " Cam Macdonell
2010-05-11 18:13 ` Avi Kivity
2010-05-11 18:13 ` [Qemu-devel] " Avi Kivity
2010-05-12 15:32 ` Cam Macdonell
2010-05-12 15:32 ` [Qemu-devel] " Cam Macdonell
2010-05-12 15:48 ` Avi Kivity
2010-05-12 15:48 ` [Qemu-devel] " Avi Kivity
2010-05-11 18:09 ` Avi Kivity
2010-05-11 18:09 ` [Qemu-devel] " Avi Kivity
2010-05-11 7:55 ` Avi Kivity
2010-05-11 7:55 ` [Qemu-devel] " Avi Kivity
2010-05-10 15:41 ` Cam Macdonell
2010-05-10 15:41 ` [Qemu-devel] " Cam Macdonell
2010-05-10 16:40 ` Avi Kivity
2010-05-10 16:40 ` [Qemu-devel] " Avi Kivity
2010-05-10 16:48 ` Cam Macdonell
2010-05-10 16:48 ` [Qemu-devel] " Cam Macdonell
2010-05-12 15:49 ` Avi Kivity
2010-05-12 15:49 ` [Qemu-devel] " Avi Kivity
2010-05-12 16:14 ` Cam Macdonell
2010-05-12 16:14 ` [Qemu-devel] " Cam Macdonell
2010-05-12 16:45 ` Avi Kivity
2010-05-12 16:45 ` [Qemu-devel] " Avi Kivity
2010-05-10 23:17 ` Cam Macdonell
2010-05-10 23:17 ` [Qemu-devel] " Cam Macdonell
2010-05-11 8:03 ` Avi Kivity
2010-05-11 8:03 ` [Qemu-devel] " Avi Kivity
2010-05-13 21:10 ` Cam Macdonell
2010-05-13 21:10 ` [Qemu-devel] " Cam Macdonell
2010-05-15 6:05 ` Avi Kivity
2010-05-15 6:05 ` [Qemu-devel] " Avi Kivity
2010-05-10 10:43 ` [PATCH v5 3/5] Add functions for assigning ioeventfd and irqfds Avi Kivity
2010-05-10 10:43 ` [Qemu-devel] " Avi Kivity
2010-05-10 15:13 ` Cam Macdonell
2010-05-10 15:13 ` [Qemu-devel] " Cam Macdonell
2010-05-10 15:17 ` Avi Kivity
2010-05-10 15:17 ` [Qemu-devel] " Avi Kivity
2010-05-10 10:39 ` [PATCH v5 2/5] Support adding a file to qemu's ram allocation Avi Kivity
2010-05-10 10:39 ` [Qemu-devel] " Avi Kivity
2010-05-10 15:32 ` Cam Macdonell
2010-05-10 15:32 ` [Qemu-devel] " 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=4BE90E6D.7070007@redhat.com \
--to=avi@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=cam@cs.ualberta.ca \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.