From: jamal <hadi@cyberus.ca>
To: "David S. Miller" <davem@davemloft.net>
Cc: Lennert Buytenhek <buytenh@wantstofly.org>,
davidm@hpl.hp.com, netdev <netdev@oss.sgi.com>,
dada1@cosmosbay.com, ak@suse.de, leonid.grossman@neterion.com,
becker@scyld.com, rick.jones2@hp.com, davem@redhat.com
Subject: Re: RFC: NAPI packet weighting patch
Date: Thu, 23 Jun 2005 08:14:11 -0400 [thread overview]
Message-ID: <1119528852.11975.65.camel@localhost.localdomain> (raw)
In-Reply-To: <20050622.152325.15263910.davem@davemloft.net>
On Wed, 2005-22-06 at 15:23 -0700, David S. Miller wrote:
> From: Eric Dumazet <dada1@cosmosbay.com>
> Date: Wed, 22 Jun 2005 23:38:21 +0200
>
> > Then maybe we could also play with prefetchw() in the case the
> > incoming frame is small enough to be copied to a new skb.
>
> That's a good idea too. In fact, this would deal with platforms
> that use non-temporal stores in their memcpy() implementation.
For the fans of the e1000 (or even the tg3 deprived people), heres a
patch which originated from David Mosberger that i played around (about
9 months back) - it will need some hand patching for the latest driver.
Similar approach: prefetch skb->data,twiddle twiddle not little star,
touch header.
I found the aggressive mode effective on a xeon but i belive David is
using this on x86_64. So Lennert, I lied to you saying it was never
effective on x86. You just have to do the right juju such as factoring
in the memory load-latency and how much cache you have on your specific
CPU.
CCing davidm (in addition To: davem of course ;->) so he may provide
more insight on his tests.
Interesting of course is if you miss the "twiddle here" (as i saw in my
experiments) and do the obvious (such as defining AGGRESSIVE to 0), you
infact end up paying a penalty in performance.
cheers,
jamal
===== drivers/net/e1000/e1000_main.c 1.134 vs edited =====
--- 1.134/drivers/net/e1000/e1000_main.c 2004-09-12 16:52:48
-07:00
+++ edited/drivers/net/e1000/e1000_main.c 2004-09-30 06:05:11
-07:00
@@ -2278,12 +2278,30 @@
uint8_t last_byte;
unsigned int i;
boolean_t cleaned = FALSE;
+#define AGGRESSIVE 1
i = rx_ring->next_to_clean;
+#if AGGRESSIVE
+ prefetch(rx_ring->buffer_info[i].skb->data);
+#endif
rx_desc = E1000_RX_DESC(*rx_ring, i);
while(rx_desc->status & E1000_RXD_STAT_DD) {
buffer_info = &rx_ring->buffer_info[i];
+# if AGGRESSIVE
+ {
+ struct e1000_rx_desc *next_rx;
+ unsigned int j = i + 1;
+
+ if (j == rx_ring->count)
+ j = 0;
+ next_rx = E1000_RX_DESC(*rx_ring, j);
+ if (next_rx->status & E1000_RXD_STAT_DD)
+ prefetch(rx_ring->buffer_info[j].skb->data);
+ }
+# else
+ prefetch(buffer_info->skb->data);
+# endif
#ifdef CONFIG_E1000_NAPI
if(*work_done >= work_to_do)
break;
next prev parent reply other threads:[~2005-06-23 12:14 UTC|newest]
Thread overview: 121+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-06 20:29 RFC: NAPI packet weighting patch 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 [this message]
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
-- 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 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-03 0:11 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
2005-06-03 19:40 ` jamal
2005-06-03 20:23 ` jamal
2005-06-03 20:28 ` Mitch Williams
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=1119528852.11975.65.camel@localhost.localdomain \
--to=hadi@cyberus.ca \
--cc=ak@suse.de \
--cc=becker@scyld.com \
--cc=buytenh@wantstofly.org \
--cc=dada1@cosmosbay.com \
--cc=davem@davemloft.net \
--cc=davem@redhat.com \
--cc=davidm@hpl.hp.com \
--cc=leonid.grossman@neterion.com \
--cc=netdev@oss.sgi.com \
--cc=rick.jones2@hp.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).