[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <OF5A173A00.C4FD79C5-ON652572D8.001C203E-652572D8.001D8134@in.ibm.com>
Date: Fri, 11 May 2007 10:52:16 +0530
From: Krishna Kumar2 <krkumar2@...ibm.com>
To: hadi@...erus.ca
Cc: Gagan Arneja <gaagaan@...il.com>,
Evgeniy Polyakov <johnpol@....mipt.ru>, netdev@...r.kernel.org,
Rick Jones <rick.jones2@...com>,
Sridhar Samudrala <sri@...IBM.COM>
Subject: Re: [RFC] New driver API to speed up small packets xmits
J Hadi Salim <j.hadi123@...il.com> wrote on 05/11/2007 01:41:27 AM:
> > It's not just small packets. The cost of calling hard_start_xmit/byte
> > was rather high on your particular device. I've seen PCI read
> > transaction in hard_start_xmit taking ~10,000 cycles on one particular
> > device. Count the cycles your brand of NIC is taking in it's
> > xmit_routine. The worse it is, the stronger your case for cluster
> > transmits.
>
> You would need to almost re-write the driver to make sure it does IO
> which is taking advantage of the batching.
I didn't try to optimize the driver to take any real advantage, I coded it
as simply as :
top:
next = skb->skb_flink;
Original driver code here, or another option is to remove the locking
and put it before the "top:" above, no other changes.
skb = next;
if (skb)
goto top;
This way, the diffs are minimal. However, driver experts might know of some
tricks to optimize this, since most drivers have a hundred checks before
sending one skb, and whether some optimization to avoid that for each skb
is possible.
> You could avoid totaly requeueing by asking the driver how much space it
> has. Once you shove down to it a number of packets, you are then
> guaranteed they will never be requeued (refer to the slides i pointed to
> earlier).
This is a good idea, I will look at your slides to see what this exactly
is.
However, even with this check, drivers will return error, eg trylock failed
or, like the e1000 has - fifo_workaround failures. But I still think it
will
significantly reduce the failures. Right now, I get a lot of requeue's.
thanks,
- KK
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists