From: Anthony Liguori <aliguori@us.ibm.com>
To: Paul Brook <paul@codesourcery.com>
Cc: Mark McLoughlin <markmc@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
qemu-devel@nongnu.org, Markus Armbruster <armbru@redhat.com>
Subject: Re: [Qemu-devel] Re: [PATCH 9/9] Introduce VLANClientState::cleanup()
Date: Tue, 28 Apr 2009 16:38:46 -0500 [thread overview]
Message-ID: <49F77766.2080309@us.ibm.com> (raw)
In-Reply-To: <200904281928.32369.paul@codesourcery.com>
Paul Brook wrote:
> On Tuesday 28 April 2009, Anthony Liguori wrote:
>
>> Paul Brook wrote:
>>
>>> Hmm, in that case I don't understand your distinction between frontend
>>> and backend.
>>>
>> In the case of networking, they don't have to be distinct because all
>> you need to do is have two "front-ends" and flip the TX/RX queues.
>> Although even in this case, someone has to own the MAC address so it's
>> not purely symmetric.
>>
>
> I'm still not understanding. Ethernet devices are fundamentally based around a
> bus architecture. "flip the TX/RX queues" only makes sense if you're talking
> about a point-point connection. For ethernet devices I see no reason to
> distinguish between "host" devices (slirp, vde, tap) and "guest" devices.
> They may be created for different reasons, but they're all doing
> fundamentally the same thing.
>
In the bus model, there's an implicit copy-to-the-wire operation that
results in replication of the packet to everything else on the bus.
From a performance perspective, this is not at all ideal.
So really, what we're talking about is the difference between an API
that consists of:
net->transmit_packet(data, size)
net_receive_packet(data, size) {
}
verses
net->add_transmit_packet(data, size);
datum = net->add_receive_packet(data, size);
net_notify_received_packets(datum) {
}
If the device visible API implies a copy, we lack the ability to do
zero-copy receive.
That's not saying we shouldn't have the VLAN mechanism in QEMU but that
should sit above a network backend that would then do the necessary copying.
And yeah, that means that we cannot have the tap implementation have an
identical API to the devices. This is necessary though from a
performance perspective.
>> In the general case, that isn't always true for devices. Consider block
>> devices, for instance.
>>
>
> You mean the API we expose to the devices v.s. the API we expose to the image
> file backends? Or do you mean different layers like ide/scsi v.s. internal
> block devices?
>
I mean the interface IDE/SCSI use to read/write data from a block device
is not the same interface that block-qcow2 uses to provide support for
qcow2 images. Your argument IIUC is that block devices are not
inherently bus oriented and this is certainly true. However, I'm
arguing that bus oriented APIs imply copies to the bus which is not
something we want to bake into the interface.
So my example of block devices are irrelevant because I didn't
understand what you originally were commenting on.
--
Regards,
Anthony Liguori
next prev parent reply other threads:[~2009-04-28 21:38 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-15 16:29 [Qemu-devel] [PATCH 0/9] Misc networking fixes Mark McLoughlin
2009-04-15 16:29 ` [Qemu-devel] [PATCH 1/9] Remove stray GSO code from virtio_net Mark McLoughlin
2009-04-15 16:29 ` [Qemu-devel] [PATCH 2/9] struct iovec is now universally available Mark McLoughlin
2009-04-15 16:29 ` [Qemu-devel] [PATCH 3/9] Fix error handling in net_client_init() Mark McLoughlin
2009-04-15 16:29 ` [Qemu-devel] [PATCH 4/9] Don't fail PCI hotplug if no NIC model is supplied Mark McLoughlin
2009-04-15 16:29 ` [Qemu-devel] [PATCH 5/9] Remove some useless malloc() checking Mark McLoughlin
2009-04-15 16:29 ` [Qemu-devel] [PATCH 6/9] Remove NICInfo from e1000 and mipsnet state Mark McLoughlin
2009-04-15 16:29 ` [Qemu-devel] [PATCH 7/9] Add unregister_savevm() Mark McLoughlin
2009-04-15 16:29 ` [Qemu-devel] [PATCH 8/9] Use NICInfo::model for eepro100 savevm ID string Mark McLoughlin
2009-04-15 16:29 ` [Qemu-devel] [PATCH 9/9] Introduce VLANClientState::cleanup() Mark McLoughlin
2009-04-15 17:34 ` [Qemu-devel] " Jan Kiszka
2009-04-16 1:07 ` Marcelo Tosatti
2009-04-16 3:24 ` M. Warner Losh
2009-04-16 14:49 ` Mark McLoughlin
2009-04-16 14:52 ` [Qemu-devel] [PATCH 09/09 v2] " Mark McLoughlin
2009-04-16 14:53 ` [Qemu-devel] [PATCH 10/09] Free VLANClientState using qemu_free() Mark McLoughlin
2009-04-16 20:44 ` [Qemu-devel] Re: [PATCH 9/9] Introduce VLANClientState::cleanup() Marcelo Tosatti
2009-04-28 12:08 ` Paul Brook
2009-04-28 16:46 ` Anthony Liguori
2009-04-28 17:17 ` Paul Brook
2009-04-28 17:25 ` Anthony Liguori
2009-04-28 17:46 ` Paul Brook
2009-04-28 17:49 ` Anthony Liguori
2009-04-28 18:28 ` Paul Brook
2009-04-28 21:38 ` Anthony Liguori [this message]
2009-04-29 10:37 ` Paul Brook
2009-04-30 13:45 ` Avi Kivity
2009-04-30 16:02 ` Paul Brook
2009-04-30 16:20 ` Avi Kivity
2009-04-30 16:31 ` Paul Brook
2009-04-30 16:32 ` Avi Kivity
2009-04-30 16:37 ` Anthony Liguori
2009-04-30 16:41 ` Anthony Liguori
2009-04-30 16:58 ` Paul Brook
2009-04-30 17:51 ` Avi Kivity
2009-04-30 16:33 ` Anthony Liguori
2009-04-30 16:32 ` Anthony Liguori
2009-04-30 16:57 ` Blue Swirl
2009-04-30 17:11 ` Anthony Liguori
2009-04-30 17:45 ` Jan Kiszka
2009-04-30 17:48 ` Avi Kivity
2009-04-30 18:17 ` Jan Kiszka
2009-04-30 18:19 ` Avi Kivity
2009-04-30 18:22 ` Anthony Liguori
2009-04-30 17:59 ` Anthony Liguori
2009-04-30 18:10 ` Blue Swirl
2009-04-30 18:20 ` Jan Kiszka
2009-04-30 18:32 ` Anthony Liguori
2009-04-30 18:57 ` Blue Swirl
2009-04-30 18:16 ` Jan Kiszka
2009-04-29 7:36 ` Markus Armbruster
2009-04-16 14:49 ` Mark McLoughlin
2009-04-15 17:13 ` [Qemu-devel] Re: [PATCH 5/9] Remove some useless malloc() checking Jan Kiszka
2009-04-15 16:55 ` [Qemu-devel] [PATCH 2/9] struct iovec is now universally available Christoph Hellwig
2009-04-15 17:25 ` Mark McLoughlin
2009-04-15 17:27 ` Christoph Hellwig
2009-04-15 21:18 ` François Revol
2009-04-15 21:52 ` M. Warner Losh
2009-04-15 17:44 ` M. Warner Losh
2009-04-17 18:06 ` [Qemu-devel] [PATCH 1/9] Remove stray GSO code from virtio_net Anthony Liguori
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=49F77766.2080309@us.ibm.com \
--to=aliguori@us.ibm.com \
--cc=armbru@redhat.com \
--cc=markmc@redhat.com \
--cc=mtosatti@redhat.com \
--cc=paul@codesourcery.com \
--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).