From: Ben Greear <greearb@candelatech.com>
To: Mitch Williams <mitch.a.williams@intel.com>
Cc: "David S. Miller" <davem@davemloft.net>,
hadi@cyberus.ca, john.ronciak@intel.com, jdmason@us.ibm.com,
shemminger@osdl.org, netdev@oss.sgi.com,
Robert.Olsson@data.slu.se, ganesh.venkatesan@intel.com,
jesse.brandeburg@intel.com
Subject: Re: RFC: NAPI packet weighting patch
Date: Fri, 03 Jun 2005 13:30:54 -0700 [thread overview]
Message-ID: <42A0BDFE.1020607@candelatech.com> (raw)
In-Reply-To: <Pine.CYG.4.58.0506031202280.3344@mawilli1-desk2.amr.corp.intel.com>
Mitch Williams wrote:
>
> On Fri, 3 Jun 2005, David S. Miller wrote:
>
>
>>From: jamal <hadi@cyberus.ca>
>>Date: Fri, 03 Jun 2005 14:42:30 -0400
>>
>>
>>>When you reduce the weight, the system is spending less time in the
>>>softirq processing packets before softirq yields. If this gives more
>>>opportunity to your app to run, then the performance will go up.
>>>Is this what you are seeing?
>>
>>Jamal, this is my current theory as well, we hit the jiffies
>>check.
>
>
> Well, I hate to mess up your guys' theories, but the real reason is
> simpler: hardware receive resources, specifically descriptors and
> buffers.
>
> In a typical NAPI polling loop, the driver processes receive packets until
> it either hits the quota or runs out of packets. Then, at the end of the
> loop, it returns all of those now-free receive resources back to the
> hardware.
>
> With a heavy receive load, the hardware will run out of receive
> descriptors in the time it takes the driver/NAPI/stack to process 64
> packets. So it drops them on the floor. And, as we know, dropped packets
> are A Bad Thing.
If it can fill up more than 190 RX descriptors in the time it takes NAPI
to pull 64, then there is no possible way to not drop packets! How could
NAPI ever keep up if what you say is true?
> By reducing the driver weight, we cause the driver to give receive
> resources back to the hardware more often, which prevents dropped packets.
>
> As Ben Greer noticed, increasing the number of descriptors can help with
> this issue. But it really can't eliminate the problem -- once the ring
> is full, it doesn't matter how big it is, it's still full.
If you have 1024 rx descriptors, and the NAPI poll pulls off 64 at one
time, I do not see how pulling off 20 could be any more useful. Either way,
you have more than 900 other RX descriptors to be received.
Even if you only have the default of 256 the NIC should be able to continue
receiving packets with the other 190 or so descriptors while NAPI is doing
it's receive poll. If the buffers are often nearly used up, then the problem
is that the NAPI poll cannot pull the packets fast enough, and again, I do not
see how making it do more polls could make it able to pull packets from the
NIC more efficiently.
Maybe you could instrument the NAPI receive logic to
see if there is some horrible waste of CPU and/or time when it tries to pull
larger amounts of packets at once? A linear increase in work cannot explain
what you are describing.
> In my testing (Dual 2.8GHz Xeon, PCI-X bus, Gigabit network, 10 clients),
> I was able to completely eliminate dropped packets in most cases by
> reducing the driver weight down to about 20.
At least tell us what type of traffic you are using? TCP with MTU sized
packets, traffic-generator with 60 byte packets? Actual speed that you
are running (aggregate)? Full-duplex traffic, or mostly uni-directional?
packets-per-second you are receiving & transmitting when the drops occur?
On a dual 2.8Ghz xeon system with PCI-X bus, with a quad-port Intel pro/1000
NIC I can run about 950Mbps of traffic, bi-directional, on two ports at the
same time, and drop few or no packets. (MTU sized packets here).
This is using a modified version of pktgen, btw. So, if you are seeing
any amount of dropped pkts on a single NIC, especially if you are mostly
doing uni-directional traffic, then I think the problem might be elsewhere,
because the stock 2.6.11 and similar kernels can easily handle this amount
of network traffic.
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
next prev parent reply other threads:[~2005-06-03 20:30 UTC|newest]
Thread overview: 121+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-03 0:11 RFC: NAPI packet weighting patch Ronciak, John
2005-06-03 0:18 ` David S. Miller
2005-06-03 2:32 ` jamal
2005-06-03 17:43 ` Mitch Williams
2005-06-03 18:38 ` David S. Miller
2005-06-03 18:42 ` jamal
2005-06-03 19:01 ` David S. Miller
2005-06-03 19:28 ` Mitch Williams
2005-06-03 19:59 ` jamal
2005-06-03 20:31 ` David S. Miller
2005-06-03 21:12 ` Jon Mason
2005-06-03 20:22 ` David S. Miller
2005-06-03 20:29 ` David S. Miller
2005-06-03 19:49 ` Michael Chan
2005-06-03 20:59 ` Lennert Buytenhek
2005-06-03 20:35 ` Michael Chan
2005-06-03 22:29 ` jamal
2005-06-04 0:25 ` Michael Chan
2005-06-05 21:36 ` David S. Miller
2005-06-06 6:43 ` David S. Miller
2005-06-03 23:26 ` Lennert Buytenhek
2005-06-05 20:11 ` David S. Miller
2005-06-03 21:07 ` Edgar E Iglesias
2005-06-03 23:30 ` Lennert Buytenhek
2005-06-03 20:30 ` Ben Greear [this message]
2005-06-03 19:40 ` jamal
2005-06-03 20:23 ` jamal
2005-06-03 20:28 ` Mitch Williams
-- strict thread matches above, loose matches on Subject: below --
2005-06-07 16:23 Ronciak, John
2005-06-07 20:21 ` David S. Miller
2005-06-08 2:20 ` Jesse Brandeburg
2005-06-08 3:31 ` David S. Miller
2005-06-08 3:43 ` David S. Miller
2005-06-08 13:36 ` jamal
2005-06-09 21:37 ` Jesse Brandeburg
2005-06-09 22:05 ` Stephen Hemminger
2005-06-09 22:12 ` Jesse Brandeburg
2005-06-09 22:21 ` David S. Miller
2005-06-09 22:21 ` jamal
2005-06-09 22:22 ` David S. Miller
2005-06-09 22:20 ` jamal
2005-06-06 20:29 Ronciak, John
2005-06-06 23:55 ` Mitch Williams
2005-06-07 0:08 ` Ben Greear
2005-06-08 1:50 ` Jesse Brandeburg
2005-06-07 4:53 ` Stephen Hemminger
2005-06-07 12:38 ` jamal
2005-06-07 12:06 ` Martin Josefsson
2005-06-07 13:29 ` jamal
2005-06-07 12:36 ` Martin Josefsson
2005-06-07 16:34 ` Robert Olsson
2005-06-07 23:19 ` Rick Jones
2005-06-21 20:37 ` David S. Miller
2005-06-22 7:27 ` Eric Dumazet
2005-06-22 8:42 ` P
2005-06-22 19:37 ` jamal
2005-06-23 8:56 ` P
2005-06-21 20:20 ` David S. Miller
2005-06-21 20:38 ` Rick Jones
2005-06-21 20:55 ` David S. Miller
2005-06-21 21:47 ` Andi Kleen
2005-06-21 22:22 ` Donald Becker
2005-06-21 22:34 ` Andi Kleen
2005-06-22 0:08 ` Donald Becker
2005-06-22 4:44 ` Chris Friesen
2005-06-22 11:31 ` Andi Kleen
2005-06-22 16:23 ` Leonid Grossman
2005-06-22 16:37 ` jamal
2005-06-22 18:00 ` Leonid Grossman
2005-06-22 18:06 ` Andi Kleen
2005-06-22 20:22 ` David S. Miller
2005-06-22 20:35 ` Rick Jones
2005-06-22 20:43 ` David S. Miller
2005-06-22 21:10 ` Andi Kleen
2005-06-22 21:16 ` David S. Miller
2005-06-22 21:53 ` Chris Friesen
2005-06-22 22:11 ` Andi Kleen
2005-06-22 21:38 ` Eric Dumazet
2005-06-22 22:13 ` Eric Dumazet
2005-06-22 22:30 ` David S. Miller
2005-06-22 22:23 ` David S. Miller
2005-06-23 12:14 ` jamal
2005-06-23 17:36 ` David Mosberger
2005-06-22 22:42 ` Leonid Grossman
2005-06-22 23:13 ` Andi Kleen
2005-06-22 23:19 ` David S. Miller
2005-06-22 23:23 ` Andi Kleen
2005-06-22 17:05 ` Andi Kleen
2005-06-06 15:35 Ronciak, John
2005-06-06 19:47 ` David S. Miller
2005-06-03 18:19 Ronciak, John
2005-06-03 18:33 ` Ben Greear
2005-06-03 18:49 ` David S. Miller
2005-06-03 18:59 ` Ben Greear
2005-06-03 19:02 ` David S. Miller
2005-06-03 20:17 ` Robert Olsson
2005-06-03 20:30 ` David S. Miller
2005-06-03 17:40 Ronciak, John
2005-06-03 18:08 ` Robert Olsson
2005-06-02 21:19 Ronciak, John
2005-06-02 21:31 ` Stephen Hemminger
2005-06-02 21:40 ` David S. Miller
2005-06-02 21:51 ` Jon Mason
2005-06-02 22:12 ` David S. Miller
2005-06-02 22:19 ` Jon Mason
2005-06-02 22:15 ` Robert Olsson
2005-05-26 21:36 Mitch Williams
2005-05-27 8:21 ` Robert Olsson
2005-05-27 11:18 ` jamal
2005-05-27 15:50 ` Stephen Hemminger
2005-05-27 20:27 ` Mitch Williams
2005-05-27 21:01 ` Stephen Hemminger
2005-05-28 0:56 ` jamal
2005-05-31 17:35 ` Mitch Williams
2005-05-31 17:40 ` Stephen Hemminger
2005-05-31 17:43 ` Mitch Williams
2005-05-31 22:07 ` Jon Mason
2005-05-31 22:14 ` David S. Miller
2005-05-31 23:28 ` Jon Mason
2005-06-02 12:26 ` jamal
2005-06-02 17:30 ` Stephen Hemminger
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=42A0BDFE.1020607@candelatech.com \
--to=greearb@candelatech.com \
--cc=Robert.Olsson@data.slu.se \
--cc=davem@davemloft.net \
--cc=ganesh.venkatesan@intel.com \
--cc=hadi@cyberus.ca \
--cc=jdmason@us.ibm.com \
--cc=jesse.brandeburg@intel.com \
--cc=john.ronciak@intel.com \
--cc=mitch.a.williams@intel.com \
--cc=netdev@oss.sgi.com \
--cc=shemminger@osdl.org \
/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).