parallel networking (was Re: [PATCH 1/4] [NET_SCHED] explict hold dev tx lock)

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Jeff Garzik
Date: Monday, October 8, 2007 - 7:22 am

jamal wrote:

Any chance the NIC hardware could provide that guarantee?

8139cp, for example, has two TX DMA rings, with hardcoded 
characteristics:  one is a high prio q, and one a low prio q.  The logic 
is pretty simple:   empty the high prio q first (potentially starving 
low prio q, in worst case).


In terms of overall parallelization, both for TX as well as RX, my gut 
feeling is that we want to move towards an MSI-X, multi-core friendly 
model where packets are LIKELY to be sent and received by the same set 
of [cpus | cores | packages | nodes] that the [userland] processes 
dealing with the data.

There are already some primitive NUMA bits in skbuff allocation, but 
with modern MSI-X and RX/TX flow hashing we could do a whole lot more, 
along the lines of better CPU scheduling decisions, directing flows to 
clusters of cpus, and generally doing a better job of maximizing cache 
efficiency in a modern multi-thread environment.

IMO the current model where each NIC's TX completion and RX processes 
are both locked to the same CPU is outmoded in a multi-core world with 
modern NICs.  :)

But I readily admit general ignorance about the kernel process 
scheduling stuff, so my only idea about a starting point was to see how 
far to go with the concept of "skb affinity" -- a mask in sk_buff that 
is a hint about which cpu(s) on which the NIC should attempt to send and 
receive packets.  When going through bonding or netfilter, it is trivial 
to 'or' together affinity masks.  All the various layers of net stack 
should attempt to honor the skb affinity, where feasible (requires 
interaction with CFS scheduler?).

Or maybe skb affinity is a dumb idea.  I wanted to get people thinking 
on the bigger picture.  Parallelization starts at the user process.

	Jeff


-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 1/10 REV5] [Doc] HOWTO Documentation for batching, Krishna Kumar, (Fri Sep 14, 2:01 am)
[PATCH 4/10 REV5] [ethtool] Add ethtool support, Krishna Kumar, (Fri Sep 14, 2:02 am)
[PATCH 5/10 REV5] [IPoIB] Header file changes, Krishna Kumar, (Fri Sep 14, 2:02 am)
[PATCH 6/10 REV5] [IPoIB] CM & Multicast changes, Krishna Kumar, (Fri Sep 14, 2:03 am)
[PATCH 7/10 REV5] [IPoIB] Verbs changes, Krishna Kumar, (Fri Sep 14, 2:03 am)
[PATCH 9/10 REV5] [IPoIB] Implement batching, Krishna Kumar, (Fri Sep 14, 2:04 am)
[PATCH 10/10 REV5] [E1000] Implement batching, Krishna Kumar, (Fri Sep 14, 2:04 am)
Re: [PATCH 3/10 REV5] [sched] Modify qdisc_run to support ..., Evgeniy Polyakov, (Fri Sep 14, 5:15 am)
Re: [PATCH 10/10 REV5] [E1000] Implement batching, Evgeniy Polyakov, (Fri Sep 14, 5:47 am)
Re: [PATCH 10/10 REV5] [E1000] Implement batching, Krishna Kumar2, (Sun Sep 16, 8:56 pm)
[PATCHES] TX batching, jamal, (Sun Sep 23, 10:53 am)
[PATCH 3/4][NET_BATCH] net core use batching, jamal, (Sun Sep 23, 11:00 am)
[PATCH 4/4][NET_SCHED] kill dev->gso_skb, jamal, (Sun Sep 23, 11:02 am)
Re: [PATCHES] TX batching, Jeff Garzik, (Sun Sep 23, 11:19 am)
Re: [PATCHES] TX batching, jamal, (Sun Sep 23, 12:11 pm)
Re: [PATCHES] TX batching, Kok, Auke, (Sun Sep 23, 12:36 pm)
Re: [PATCHES] TX batching, jamal, (Sun Sep 23, 2:20 pm)
Re: [PATCHES] TX batching, Kok, Auke, (Mon Sep 24, 12:00 am)
RE: [PATCH 1/4] [NET_SCHED] explict hold dev tx lock, Waskiewicz Jr, Peter P, (Mon Sep 24, 12:12 pm)
Re: [PATCHES] TX batching, jamal, (Mon Sep 24, 3:38 pm)
Re: [PATCHES] TX batching, Kok, Auke, (Mon Sep 24, 3:52 pm)
[DOC] Net batching driver howto, jamal, (Mon Sep 24, 3:54 pm)
RE: [PATCH 1/4] [NET_SCHED] explict hold dev tx lock, Waskiewicz Jr, Peter P, (Mon Sep 24, 3:57 pm)
RE: [PATCH 1/4] [NET_SCHED] explict hold dev tx lock, Waskiewicz Jr, Peter P, (Mon Sep 24, 4:47 pm)
Re: [PATCH 1/4] [NET_SCHED] explict hold dev tx lock, Stephen Hemminger, (Mon Sep 24, 5:14 pm)
Re: [PATCHES] TX batching, Jeff Garzik, (Mon Sep 24, 5:15 pm)
RE: [PATCH 1/4] [NET_SCHED] explict hold dev tx lock, Waskiewicz Jr, Peter P, (Mon Sep 24, 5:31 pm)
Re: [PATCH 1/4] [NET_SCHED] explict hold dev tx lock, Stephen Hemminger, (Tue Sep 25, 8:24 am)
Re: [DOC] Net batching driver howto, Randy Dunlap, (Tue Sep 25, 1:16 pm)
Re: [DOC] Net batching driver howto, jamal, (Tue Sep 25, 3:28 pm)
[PATCHES] TX batching, jamal, (Sun Sep 30, 11:50 am)
[PATCH 2/3][NET_BATCH] net core use batching, jamal, (Sun Sep 30, 11:52 am)
[PATCH 3/3][NET_SCHED] kill dev->gso_skb, jamal, (Sun Sep 30, 11:53 am)
Re: [PATCHES] TX batching, jamal, (Sun Sep 30, 12:19 pm)
Re: [PATCH 2/3][NET_BATCH] net core use batching, Bill Fink, (Sun Sep 30, 9:11 pm)
Re: [PATCH 2/3][NET_BATCH] net core use batching, Patrick McHardy, (Mon Oct 1, 3:42 am)
Re: [PATCH 2/3][NET_BATCH] net core use batching, Bill Fink, (Mon Oct 1, 9:25 pm)
Re: [PATCH 2/3][NET_BATCH] net core use batching, Bill Fink, (Tue Oct 2, 10:29 pm)
[PATCHES] TX batching, jamal, (Sun Oct 7, 11:34 am)
[PATCH 2/3][NET_BATCH] net core use batching, jamal, (Sun Oct 7, 11:38 am)
[PATCH 3/3][NET_BATCH] kill dev->gso_skb, jamal, (Sun Oct 7, 11:39 am)
Re: [PATCH 1/4] [NET_SCHED] explict hold dev tx lock, David Miller, (Sun Oct 7, 9:51 pm)
Re: [PATCH 2/3][NET_BATCH] net core use batching, Krishna Kumar2, (Sun Oct 7, 10:03 pm)
Re: [PATCH 1/3] [NET_BATCH] Introduce batching interface, Krishna Kumar2, (Mon Oct 8, 2:59 am)
Re: [PATCHES] TX batching, Evgeniy Polyakov, (Mon Oct 8, 5:51 am)
Re: [PATCHES] TX batching, jamal, (Mon Oct 8, 7:05 am)
parallel networking (was Re: [PATCH 1/4] [NET_SCHED] expli ..., Jeff Garzik, (Mon Oct 8, 7:22 am)
Re: [PATCH 1/4] [NET_SCHED] explict hold dev tx lock, David Miller, (Mon Oct 8, 2:05 pm)
Re: parallel networking, David Miller, (Mon Oct 8, 2:11 pm)
Re: parallel networking, jamal, (Mon Oct 8, 3:30 pm)
Re: parallel networking, David Miller, (Mon Oct 8, 3:33 pm)
RE: parallel networking, Waskiewicz Jr, Peter P, (Mon Oct 8, 3:35 pm)
Re: parallel networking, jamal, (Mon Oct 8, 4:42 pm)
Re: parallel networking, Jeff Garzik, (Mon Oct 8, 6:53 pm)
Re: [PATCH 2/3][NET_BATCH] net core use batching, Krishna Kumar2, (Mon Oct 8, 8:09 pm)
Re: [PATCHES] TX batching, Krishna Kumar2, (Tue Oct 9, 1:14 am)
Re: [PATCHES] TX batching, jamal, (Tue Oct 9, 6:25 am)
Re: [PATCH 10/10 REV5] [E1000] Implement batching, Kok, Auke, (Tue Nov 13, 2:28 pm)
Re: [PATCH 10/10 REV5] [E1000] Implement batching, Krishna Kumar2, (Wed Nov 14, 1:30 am)