From: jamal <hadi@cyberus.ca>
To: David Miller <davem@davemloft.net>
Cc: kaber@trash.net, peter.p.waskiewicz.jr@intel.com,
netdev@vger.kernel.org, jeff@garzik.org,
auke-jan.h.kok@intel.com
Subject: Multiqueue and virtualization WAS(Re: [PATCH 3/3] NET: [SCHED] Qdisc changes and sch_rr added for multiqueue
Date: Fri, 29 Jun 2007 07:43:35 -0400 [thread overview]
Message-ID: <1183117415.5156.61.camel@localhost> (raw)
In-Reply-To: <20070628.212032.108743475.davem@davemloft.net>
Ive changed the topic for you friend - otherwise most people wont follow
(as youve said a few times yourself ;->).
On Thu, 2007-28-06 at 21:20 -0700, David Miller wrote:
> Now I get to pose a problem for everyone, prove to me how useful
> this new code is by showing me how it can be used to solve a
> reocurring problem in virtualized network drivers of which I've
> had to code one up recently, see my most recent blog entry at:
>
> http://vger.kernel.org/~davem/cgi-bin/blog.cgi/index.html
>
nice.
> Anyways the gist of the issue is (and this happens for Sun LDOMS
> networking, lguest, IBM iSeries, etc.) that we have a single
> virtualized network device. There is a "port" to the control
> node (which switches packets to the real network for the guest)
> and one "port" to each of the other guests.
>
> Each guest gets a unique MAC address. There is a queue per-port
> that can fill up.
>
> What all the drivers like this do right now is stop the queue if
> any of the per-port queues fill up, and that's why my sunvnet
> driver does right now as well. We can only thus wakeup the
> queue when all of the ports have some space.
Is a netdevice really the correct construct for the host side?
Sounds to me a layer above the netdevice is the way to go. A bridge for
example or L3 routing or even simple tc classify/redirection etc.
I havent used what has become openvz these days in many years (or played
with Erics approach), but if i recall correctly - it used to have a
single netdevice per guest on the host. Thats close to what a basic
qemu/UML has today. In such a case it is something above netdevices
which does the guest selection.
> The ports (and thus the queues) are selected by destinationt
> MAC address. Each port has a remote MAC address, if there
> is an exact match with a port's remote MAC we'd use that port
> and thus that port's queue. If there is no exact match
> (some other node on the real network, broadcast, multicast,
> etc.) we want to use the control node's port and port queue.
>
Ok, Dave, isnt that what a bridge does? ;-> Youd need filtering to go
with it (for example to restrict guest0 from getting certain brodcasts
etc) - but we already have that.
> So the problem to solve is to make a way for drivers to do the queue
> selection before the generic queueing layer starts to try and push
> things to the driver. Perhaps a classifier in the driver or similar.
>
> The solution to this problem generalizes to the other facility
> we want now, hashing the transmit queue by smp_processor_id()
> or similar. With that in place we can look at doing the TX locking
> per-queue too as is hinted at by the comments above the per-queue
> structure in the current net-2.6.23 tree.
A major surgery will be needed on the tx path if you want to hash tx
queue to processor id. Our unit construct (today, net-2.6.23) that can
be tied to a cpu is a netdevice. OTOH, if you used a netdevice it should
work as is. But i am possibly missing something in your comments.
What do you have in mind.
> My current work-in-progress sunvnet.c driver is included below so
> we can discuss things concretely with code.
>
> I'm listening. :-)
And you got words above.
cheers,
jamal
next prev parent reply other threads:[~2007-06-29 11:43 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-28 16:20 [PATCH] NET: Multiple queue hardware support PJ Waskiewicz
2007-06-28 16:21 ` [PATCH 1/3] NET: [DOC] Multiqueue hardware support documentation PJ Waskiewicz
2007-06-28 16:21 ` [PATCH 2/3] NET: [CORE] Stack changes to add multiqueue hardware support API PJ Waskiewicz
2007-06-28 16:31 ` Patrick McHardy
2007-06-28 17:00 ` Patrick McHardy
2007-06-28 19:00 ` Waskiewicz Jr, Peter P
2007-06-28 19:03 ` Patrick McHardy
2007-06-28 19:06 ` Waskiewicz Jr, Peter P
2007-06-28 19:20 ` Patrick McHardy
2007-06-28 19:32 ` Jeff Garzik
2007-06-28 19:37 ` Patrick McHardy
2007-06-28 21:11 ` Waskiewicz Jr, Peter P
2007-06-28 21:18 ` Patrick McHardy
2007-06-28 23:08 ` Waskiewicz Jr, Peter P
2007-06-28 23:31 ` David Miller
2007-06-28 20:39 ` David Miller
2007-06-29 3:39 ` David Miller
2007-06-29 10:54 ` Jeff Garzik
2007-06-28 16:21 ` [PATCH 3/3] NET: [SCHED] Qdisc changes and sch_rr added for multiqueue PJ Waskiewicz
2007-06-28 16:35 ` Patrick McHardy
2007-06-28 16:43 ` Waskiewicz Jr, Peter P
2007-06-28 16:46 ` Patrick McHardy
2007-06-28 16:50 ` Waskiewicz Jr, Peter P
2007-06-28 16:53 ` Patrick McHardy
2007-06-28 16:50 ` Patrick McHardy
2007-06-28 17:13 ` Patrick McHardy
2007-06-28 19:04 ` Waskiewicz Jr, Peter P
2007-06-28 19:17 ` Patrick McHardy
2007-06-28 19:21 ` Waskiewicz Jr, Peter P
2007-06-28 19:24 ` Patrick McHardy
2007-06-28 19:27 ` Waskiewicz Jr, Peter P
2007-06-29 4:20 ` David Miller
2007-06-29 8:45 ` Waskiewicz Jr, Peter P
2007-06-29 11:43 ` jamal [this message]
2007-06-29 11:59 ` Multiqueue and virtualization WAS(Re: " Patrick McHardy
2007-06-29 12:54 ` jamal
2007-06-29 13:08 ` Patrick McHardy
2007-06-29 13:19 ` jamal
2007-06-29 15:33 ` Ben Greear
2007-06-29 15:58 ` Patrick McHardy
2007-06-29 16:16 ` Ben Greear
2007-06-29 21:36 ` David Miller
2007-06-30 7:51 ` Benny Amorsen
2007-06-29 21:31 ` David Miller
2007-06-30 1:30 ` jamal
2007-06-30 4:35 ` David Miller
2007-06-30 14:52 ` jamal
2007-06-30 20:33 ` David Miller
2007-07-03 12:42 ` jamal
2007-07-03 21:24 ` David Miller
2007-07-04 2:20 ` jamal
2007-07-06 7:32 ` Rusty Russell
2007-07-06 14:39 ` jamal
2007-07-06 15:59 ` James Chapman
2007-07-08 2:30 ` Rusty Russell
2007-07-08 6:03 ` David Miller
2007-06-30 14:33 ` Patrick McHardy
2007-06-30 14:37 ` Waskiewicz Jr, Peter P
2007-06-28 17:57 ` [CORE] Stack changes to add multiqueue hardware support API Patrick McHardy
2007-06-28 17:57 ` [SCHED] Qdisc changes and sch_rr added for multiqueue Patrick McHardy
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=1183117415.5156.61.camel@localhost \
--to=hadi@cyberus.ca \
--cc=auke-jan.h.kok@intel.com \
--cc=davem@davemloft.net \
--cc=jeff@garzik.org \
--cc=kaber@trash.net \
--cc=netdev@vger.kernel.org \
--cc=peter.p.waskiewicz.jr@intel.com \
/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.