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 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).