netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Eric Lemoine <Eric.Lemoine@Sun.COM>
To: Robert Olsson <Robert.Olsson@data.slu.se>
Cc: Eric Lemoine <Eric.Lemoine@Sun.COM>,
	"David S. Miller" <davem@redhat.com>,
	netdev@oss.sgi.com
Subject: Re: simple change to qdisc_restart()
Date: Tue, 20 May 2003 13:21:09 +0200	[thread overview]
Message-ID: <20030520112109.GE978@udine> (raw)
In-Reply-To: <16074.1339.3673.938923@robur.slu.se>

>  > >    Any comments regarding the following patch?
> 
>  I think it will make any use of "raw" dev->hard_start_xmit" impossible. 
>  Which is what pktgen uses.
> 
>  > > I understand why it is valid, etc., but why do we even want to do
>  > > this?  It is not like this dead-loop detection stuff is a hot-path or
>  > > anything like that.
>  > 
>  > I've implemented a prototype that uses per-CPU kernel threads for
>  > processing packets coming in from a single interface. The idea is to
>  > apply multiple CPUs to a single network interface to be able to have
>  > multiple CPUs simultaneously pumping data into the network. So in my
>  > case, I have lots of cpu_collisions and running the tx softirq to do
>  > nothing may lower the performances. Anyway, even though my patch may
>  > help me, it may indeed be irrelevant to the stock kernel.
> 
>  Sounds like a project at least having packet reordering and cache bouncing 
>  in mind.

Let me explain a bit more.

I developped a kernel module that basically implements per-cpu kernel
threads, each being bound to a particular cpu. I also modified the
Myrinet NIC driver and firmware so that they implement per-cpu rx rings.

The NIC makes sure that packets of the same connection are always
deposited in the same ring. Here's how it does it. For each incoming
pkt, the NIC computes the index of the ring into which the packet must
be placed [*], passes this index to the driver, and dmas the packet into
the appropriate ring. The driver uses the ring index to wake up the
appropriate kernel thread. Each kernel-thread behaves in a NAPI manner.

-- 
Eric

  reply	other threads:[~2003-05-20 11:21 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-05-20  8:22 simple change to qdisc_restart() Eric Lemoine
2003-05-20  8:28 ` David S. Miller
2003-05-20  8:57   ` Eric Lemoine
2003-05-20 10:36     ` Robert Olsson
2003-05-20 11:21       ` Eric Lemoine [this message]
2003-05-20 11:24         ` Eric Lemoine
2003-05-20 12:24         ` Robert Olsson
2003-05-20 12:33           ` Jamal Hadi
2003-05-26  9:15             ` Eric Lemoine

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=20030520112109.GE978@udine \
    --to=eric.lemoine@sun.com \
    --cc=Robert.Olsson@data.slu.se \
    --cc=davem@redhat.com \
    --cc=netdev@oss.sgi.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).