Re: [RFC PATCH 00/17] virtual-bus

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Gregory Haskins
Date: Wednesday, April 1, 2009 - 4:35 am

Rusty Russell wrote:

I am not 100% sure I know what you mean with "notification prevention",
but let me take a stab at it.

So like most of these kinds of constructs, I have two rings (rx + tx on
the guest is reversed to tx + rx on the host), each of which can signal
in either direction for a total of 4 events, 2 on each side of the
connection.  I utilize what I call "bidirectional napi" so that only the
first packet submitted needs to signal across the guest/host boundary.=20
E.g. first ingress packet injects an interrupt, and then does a
napi_schedule and masks future irqs.  Likewise, first egress packet does
a hypercall, and then does a "napi_schedule" (I dont actually use napi
in this path, but its conceptually identical) and masks future
hypercalls.  So thats is my first form of what I would call notification
prevention.

The second form occurs on the "tx-complete" path (that is guest->host
tx).  I only signal back to the guest to reclaim its skbs every 10
packets, or if I drain the queue, whichever comes first (note to self:
make this # configurable).

The nice part about this scheme is it significantly reduces the amount
of guest/host transitions, while still providing the lowest latency
response for single packets possible.  e.g. Send one packet, and you get
one hypercall, and one tx-complete interrupt as soon as it queues on the
hardware.  Send 100 packets, and you get one hypercall and 10
tx-complete interrupts as frequently as every tenth packet queues on the
hardware.  There is no timer governing the flow, etc.

Is that what you were asking?

least
tio_net
:)

But that is the whole point, isnt it?  I created vbus specifically as a
framework for putting things in the kernel, and that *is* one of the
major reasons it is faster than virtio-net...its not the difference in,
say, IOQs vs virtio-ring (though note I also think some of the
innovations we have added such as bi-dir napi are helping too, but these
are not "in-kernel" specific kinds of features and could probably help
the userspace version too).

I would be entirely happy if you guys accepted the general concept and
framework of vbus, and then worked with me to actually convert what I
have as "venet-tap" into essentially an in-kernel virtio-net.  I am not
specifically interested in creating a competing pv-net driver...I just
needed something to showcase the concepts and I didnt want to hack the
virtio-net infrastructure to do it until I had everyone's blessing.=20
Note to maintainers: I *am* perfectly willing to maintain the venet
drivers if, for some reason, we decide that we want to keep them as
is.   Its just an ideal for me to collapse virtio-net and venet-tap
together, and I suspect our community would prefer this as well.

-Greg
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Tue Mar 31, 11:42 am)
[RFC PATCH 01/17] shm-signal: shared-memory signals, Gregory Haskins, (Tue Mar 31, 11:42 am)
[RFC PATCH 02/17] vbus: add virtual-bus definitions, Gregory Haskins, (Tue Mar 31, 11:42 am)
[RFC PATCH 04/17] vbus: add bus-registration notifiers, Gregory Haskins, (Tue Mar 31, 11:43 am)
[RFC PATCH 07/17] ioq: add vbus helpers, Gregory Haskins, (Tue Mar 31, 11:43 am)
[RFC PATCH 09/17] net: Add vbus_enet driver, Gregory Haskins, (Tue Mar 31, 11:43 am)
[RFC PATCH 11/17] venet: add scatter-gather support, Gregory Haskins, (Tue Mar 31, 11:43 am)
[RFC PATCH 12/17] venettap: add scatter-gather support, Gregory Haskins, (Tue Mar 31, 11:43 am)
[RFC PATCH 14/17] kvm: add a reset capability, Gregory Haskins, (Tue Mar 31, 11:44 am)
[RFC PATCH 15/17] kvm: add dynamic IRQ support, Gregory Haskins, (Tue Mar 31, 11:44 am)
[RFC PATCH 16/17] kvm: Add VBUS support to the host, Gregory Haskins, (Tue Mar 31, 11:44 am)
[RFC PATCH 17/17] kvm: Add guest-side support for VBUS, Gregory Haskins, (Tue Mar 31, 11:44 am)
Re: [RFC PATCH 15/17] kvm: add dynamic IRQ support, Avi Kivity, (Tue Mar 31, 12:20 pm)
Re: [RFC PATCH 14/17] kvm: add a reset capability, Avi Kivity, (Tue Mar 31, 12:22 pm)
Re: [RFC PATCH 15/17] kvm: add dynamic IRQ support, Gregory Haskins, (Tue Mar 31, 12:39 pm)
Re: [RFC PATCH 14/17] kvm: add a reset capability, Gregory Haskins, (Tue Mar 31, 1:02 pm)
Re: [RFC PATCH 15/17] kvm: add dynamic IRQ support, Avi Kivity, (Tue Mar 31, 1:13 pm)
Re: [RFC PATCH 14/17] kvm: add a reset capability, Avi Kivity, (Tue Mar 31, 1:18 pm)
Re: [RFC PATCH 00/17] virtual-bus, Andi Kleen, (Tue Mar 31, 1:18 pm)
Re: [RFC PATCH 15/17] kvm: add dynamic IRQ support, Gregory Haskins, (Tue Mar 31, 1:32 pm)
Re: [RFC PATCH 14/17] kvm: add a reset capability, Gregory Haskins, (Tue Mar 31, 1:37 pm)
Re: [RFC PATCH 09/17] net: Add vbus_enet driver, Stephen Hemminger, (Tue Mar 31, 1:39 pm)
Re: [RFC PATCH 01/17] shm-signal: shared-memory signals, Gregory Haskins, (Tue Mar 31, 1:58 pm)
Re: [RFC PATCH 15/17] kvm: add dynamic IRQ support, Avi Kivity, (Tue Mar 31, 1:59 pm)
Re: [RFC PATCH 00/17] virtual-bus, Rusty Russell, (Tue Mar 31, 11:08 pm)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 4:35 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 5:03 am)
Re: [RFC PATCH 01/17] shm-signal: shared-memory signals, Gregory Haskins, (Wed Apr 1, 5:12 am)
Re: [RFC PATCH 00/17] virtual-bus, Andi Kleen, (Wed Apr 1, 6:23 am)
Re: [RFC PATCH 01/17] shm-signal: shared-memory signals, Gregory Haskins, (Wed Apr 1, 6:57 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 7:19 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 7:42 am)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Wed Apr 1, 9:10 am)
Re: [RFC PATCH 00/17] virtual-bus, Andi Kleen, (Wed Apr 1, 10:01 am)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Wed Apr 1, 11:45 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 1:29 pm)
Re: [RFC PATCH 00/17] virtual-bus, Chris Wright, (Wed Apr 1, 1:40 pm)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 2:09 pm)
Re: [RFC PATCH 00/17] virtual-bus, Andi Kleen, (Wed Apr 1, 3:23 pm)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 4:05 pm)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Wed Apr 1, 5:29 pm)
Re: [RFC PATCH 00/17] virtual-bus, Rusty Russell, (Wed Apr 1, 6:24 pm)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 7:27 pm)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Wed Apr 1, 8:09 pm)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Wed Apr 1, 8:11 pm)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Wed Apr 1, 8:11 pm)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Wed Apr 1, 8:15 pm)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Wed Apr 1, 11:46 pm)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Wed Apr 1, 11:51 pm)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 1:52 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 1:54 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 2:02 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 2:03 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 2:05 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 2:16 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 2:27 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 2:29 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 2:33 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 2:38 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 2:41 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 2:43 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 2:44 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 3:46 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 3:55 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 4:06 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 4:43 am)
Re: [RFC PATCH 09/17] net: Add vbus_enet driver, Gregory Haskins, (Thu Apr 2, 4:43 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 4:48 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 4:59 am)
Re: [RFC PATCH 00/17] virtual-bus, Rusty Russell, (Thu Apr 2, 5:13 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 5:22 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 5:30 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 5:42 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 5:43 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 5:50 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 5:52 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 5:54 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 6:03 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 6:07 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 6:08 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 6:22 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 6:27 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 6:36 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 6:45 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 7:05 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Thu Apr 2, 7:24 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 7:32 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 7:41 am)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Thu Apr 2, 7:49 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 7:50 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 8:00 am)
Re: [RFC PATCH 00/17] virtual-bus, Michael S. Tsirkin, (Thu Apr 2, 8:10 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 8:40 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 8:57 am)
Re: [RFC PATCH 02/17] vbus: add virtual-bus definitions, Ben Hutchings, (Thu Apr 2, 9:06 am)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Thu Apr 2, 9:09 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 9:09 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 9:19 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Thu Apr 2, 9:54 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 10:06 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 10:17 am)
Re: [RFC PATCH 02/17] vbus: add virtual-bus definitions, Gregory Haskins, (Thu Apr 2, 11:13 am)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Thu Apr 2, 11:18 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Thu Apr 2, 6:11 pm)
Re: [RFC PATCH 00/17] virtual-bus, Jeremy Fitzhardinge, (Thu Apr 2, 9:43 pm)
Re: [RFC PATCH 00/17] virtual-bus, Gerd Hoffmann, (Fri Apr 3, 3:58 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 4:03 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Fri Apr 3, 4:12 am)
Re: [RFC PATCH 00/17] virtual-bus, Andi Kleen, (Fri Apr 3, 4:18 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Fri Apr 3, 4:28 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Fri Apr 3, 4:34 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 4:46 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 4:46 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Fri Apr 3, 4:48 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 4:54 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Fri Apr 3, 4:55 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 5:02 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Fri Apr 3, 5:03 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 5:15 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 5:25 am)
Re: [RFC PATCH 00/17] virtual-bus, Herbert Xu, (Fri Apr 3, 6:05 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Fri Apr 3, 6:13 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Fri Apr 3, 6:37 am)
Re: [RFC PATCH 00/17] virtual-bus, Gregory Haskins, (Fri Apr 3, 9:28 am)
Re: [RFC PATCH 00/17] virtual-bus, Rusty Russell, (Sat Apr 4, 8:44 pm)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Sun Apr 5, 1:06 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Sun Apr 5, 3:00 am)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Sun Apr 5, 7:13 am)
Re: [RFC PATCH 00/17] virtual-bus, Avi Kivity, (Sun Apr 5, 9:10 am)
Re: [RFC PATCH 00/17] virtual-bus, Anthony Liguori, (Sun Apr 5, 9:45 am)
Re: [kvm] Re: [RFC PATCH 00/17] virtual-bus, Alex Williamson, (Mon Apr 20, 11:02 am)