From: Paolo Bonzini <pbonzini@redhat.com>
To: Vincent JARDIN <vincent.jardin@6wind.com>,
Markus Armbruster <armbru@redhat.com>
Cc: Henning Schild <henning.schild@siemens.com>,
Olivier MATZ <olivier.matz@6wind.com>,
kvm@vger.kernel.org, qemu-devel@nongnu.org,
David Marchand <david.marchand@6wind.com>,
virtualization@lists.linux-foundation.org,
"thomas.monjalon@6wind.com" <thomas.monjalon@6wind.com>
Subject: Re: [Qemu-devel] Why I advise against using ivshmem
Date: Fri, 13 Jun 2014 12:09:42 +0200 [thread overview]
Message-ID: <539ACDE6.7020709@redhat.com> (raw)
In-Reply-To: <539AC3E0.9090404@6wind.com>
Il 13/06/2014 11:26, Vincent JARDIN ha scritto:
>> Markus especially referred to parts *outside* QEMU: the server, the
>> uio driver, etc. These out-of-tree, non-packaged parts of ivshmem
>> are one of the reasons why Red Hat has disabled ivshmem in RHEL7.
>
> You made the right choices, these out-of-tree packages are not required.
> You can use QEMU's ivshmem without any of the out-of-tree packages. The
> out-of-tree packages are just some examples of using ivshmem.
Fine, however Red Hat would also need a way to test ivshmem code, with
proper quality assurance (that also benefits upstream, of course). With
ivshmem this is not possible without the out-of-tree packages.
Disabling all the unwanted devices is a lot of work and thankless too
(you only get complaints, in fact!). But we prefer to ship only what we
know we can test, support and improve. We do not want customers' bug
reports to languish because they are using code that cannot really be fixed.
Note that we do take into account community contributions in choosing
which new code can be supported. For example most work on VMDK images
was done by Fam when he was a student, libiscsi is mostly the work of
Peter Lieven, and so on; both of them are supported in RHEL. These
people did/do a great job, and we were happy to embrace those features!
Now, putting back my QEMU hat...
>> He also listed many others. Basically for parts of QEMU that are not
>> of high quality, we either fix them (this is for example what we did
>> for qcow2) or disable them. Not just ivshmem suffered this fate, for
>> example many network cards, sound cards, SCSI storage adapters.
>
> I and David (cc) are working on making it better based on the issues
> that are found.
>
>> Now, vhost-user is in the process of being merged for 2.1. Compared
> to the DPDK solution:
>
> now, you cannot compare vhost-user to DPDK/ivshmem; both should exsit
> because they have different scope and use cases. It is like comparing
> two different(A) models of IPC:
> - vhost-user -> networking use case specific
Not necessarily. First and foremost, vhost-user defines an API for
communication between QEMU and the host, including:
* file descriptor passing for the shared memory file
* mapping offsets in shared memory to physical memory addresses in the
guests
* passing dirty memory information back and forth, so that migration is
not prevented
* sending interrupts to a device
* setting up ring buffers in the shared memory
None of these is virtio specific, except the last (even then, you could
repurpose the messages to pass the address of the whole shared memory
area, instead of the vrings only).
Yes, the only front-end for vhost-user, right now, is a network device.
But it is possible to connect vhost-scsi to vhost-user as well, it is
possible to develop a vhost-serial as well, and it is possible to only
use the RPC and develop arbitrary shared-memory based tools using this
API. It's just that no one has done it yet.
Also, vhost-user is documented! See here:
https://lists.gnu.org/archive/html/qemu-devel/2014-03/msg00581.html
The only part of ivshmem that vhost doesn't include is the n-way
inter-guest doorbell. This is the part that requires a server and uio
driver. vhost only supports host->guest and guest->host doorbells.
>> * it doesn't require hugetlbfs (which only enabled shared memory by
>> chance in older QEMU releases, that was never documented)
>
> ivhsmem does not require hugetlbfs. It is optional.
>
>> * it doesn't require the kernel driver from the DPDK sample
>
> ivhsmem does not require DPDK kernel driver. see memnic's PMD:
> http://dpdk.org/browse/memnic/tree/pmd/pmd_memnic.c
You're right, I was confusing memnic and the vhost example in DPDK.
Paolo
next prev parent reply other threads:[~2014-06-13 10:09 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-10 16:48 Using virtio for inter-VM communication Henning Schild
2014-06-10 16:48 ` [Qemu-devel] " Henning Schild
2014-06-10 22:15 ` Vincent JARDIN
2014-06-10 22:15 ` Vincent JARDIN
2014-06-10 22:15 ` [Qemu-devel] " Vincent JARDIN
2014-06-12 6:48 ` Markus Armbruster
2014-06-12 6:48 ` Markus Armbruster
2014-06-12 6:48 ` [Qemu-devel] " Markus Armbruster
2014-06-12 7:44 ` Henning Schild
2014-06-12 7:44 ` [Qemu-devel] " Henning Schild
2014-06-12 9:31 ` Vincent JARDIN
2014-06-12 9:31 ` Vincent JARDIN
2014-06-12 9:31 ` [Qemu-devel] " Vincent JARDIN
2014-06-12 12:55 ` Markus Armbruster
2014-06-12 14:40 ` Why I advise against using ivshmem (was: [Qemu-devel] Using virtio for inter-VM communication) Markus Armbruster
2014-06-12 14:40 ` Markus Armbruster
2014-06-12 14:40 ` [Qemu-devel] Why I advise against using ivshmem (was: " Markus Armbruster
2014-06-12 16:02 ` Why I advise against using ivshmem Vincent JARDIN
2014-06-12 16:02 ` [Qemu-devel] " Vincent JARDIN
2014-06-12 16:54 ` Paolo Bonzini
2014-06-12 16:54 ` [Qemu-devel] " Paolo Bonzini
2014-06-13 8:46 ` Markus Armbruster
2014-06-13 9:26 ` Vincent JARDIN
2014-06-13 9:31 ` Jobin Raju George
2014-06-13 9:31 ` Jobin Raju George
2014-06-13 9:31 ` Jobin Raju George
2014-06-13 9:48 ` Olivier MATZ
2014-06-13 9:48 ` Olivier MATZ
2014-06-13 9:48 ` Olivier MATZ
2014-06-13 10:09 ` Paolo Bonzini [this message]
2014-06-13 13:41 ` Vincent JARDIN
2014-06-13 13:41 ` Vincent JARDIN
2014-06-13 13:41 ` Vincent JARDIN
2014-06-13 14:10 ` Paolo Bonzini
2014-06-13 14:10 ` Paolo Bonzini
2014-06-14 18:01 ` Vincent JARDIN
2014-06-14 18:01 ` Vincent JARDIN
2014-06-17 2:54 ` Stefan Hajnoczi
2014-06-17 9:03 ` David Marchand
2014-06-17 9:03 ` David Marchand
2014-06-17 9:44 ` Paolo Bonzini
2014-06-18 10:48 ` Stefan Hajnoczi
2014-06-18 10:48 ` Stefan Hajnoczi
2014-06-18 14:57 ` David Marchand
2014-06-18 14:57 ` David Marchand
2014-06-18 14:57 ` David Marchand
2014-06-18 15:10 ` Paolo Bonzini
2014-06-21 9:34 ` Stefan Hajnoczi
2014-06-26 20:02 ` Cam Macdonell
2014-06-26 20:02 ` Cam Macdonell
2014-06-18 15:01 ` Andreas Färber
2014-06-18 15:01 ` Andreas Färber
2014-06-19 8:25 ` David Marchand
2014-06-19 8:25 ` David Marchand
2014-06-19 8:25 ` David Marchand
2014-06-18 15:01 ` Andreas Färber
2014-06-30 11:10 ` Markus Armbruster
2014-06-30 11:10 ` Markus Armbruster
2014-06-30 11:10 ` Markus Armbruster
2014-06-18 10:51 ` Stefan Hajnoczi
2014-06-18 10:51 ` Stefan Hajnoczi
2014-06-18 14:58 ` David Marchand
2014-06-18 14:58 ` David Marchand
2014-06-18 14:58 ` David Marchand
2014-06-18 14:22 ` Claudio Fontana
2014-06-17 9:03 ` David Marchand
2014-06-13 9:29 ` Jobin Raju George
2014-06-13 9:29 ` [Qemu-devel] " Jobin Raju George
2014-06-13 9:29 ` Jobin Raju George
2014-06-12 16:02 ` Vincent JARDIN
2014-06-12 2:27 ` Using virtio for inter-VM communication Rusty Russell
2014-06-12 2:27 ` Rusty Russell
2014-06-12 2:27 ` [Qemu-devel] " Rusty Russell
2014-06-12 5:32 ` Jan Kiszka
2014-06-12 5:32 ` [Qemu-devel] " Jan Kiszka
2014-06-13 0:47 ` Rusty Russell
2014-06-13 0:47 ` [Qemu-devel] " Rusty Russell
2014-06-13 6:23 ` Jan Kiszka
2014-06-13 6:23 ` [Qemu-devel] " Jan Kiszka
2014-06-13 8:45 ` Paolo Bonzini
2014-06-13 8:45 ` [Qemu-devel] " Paolo Bonzini
2014-06-15 6:20 ` Jan Kiszka
2014-06-15 6:20 ` Jan Kiszka
2014-06-15 6:20 ` [Qemu-devel] " Jan Kiszka
2014-06-17 5:24 ` Paolo Bonzini
2014-06-17 5:24 ` [Qemu-devel] " Paolo Bonzini
2014-06-17 5:57 ` Jan Kiszka
2014-06-17 5:57 ` Jan Kiszka
2014-06-17 5:57 ` [Qemu-devel] " Jan Kiszka
2014-06-17 5:24 ` Paolo Bonzini
2014-06-12 5:32 ` Jan Kiszka
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=539ACDE6.7020709@redhat.com \
--to=pbonzini@redhat.com \
--cc=armbru@redhat.com \
--cc=david.marchand@6wind.com \
--cc=henning.schild@siemens.com \
--cc=kvm@vger.kernel.org \
--cc=olivier.matz@6wind.com \
--cc=qemu-devel@nongnu.org \
--cc=thomas.monjalon@6wind.com \
--cc=vincent.jardin@6wind.com \
--cc=virtualization@lists.linux-foundation.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.