netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "David S. Miller" <davem@redhat.com>
To: Robert.Olsson@data.slu.se
Cc: ralph+d@istop.com, ralph@istop.com, hadi@shell.cyberus.ca,
	xerox@foonet.net, sim@netnation.com, fw@deneb.enyo.de,
	netdev@oss.sgi.com, linux-net@vger.kernel.org,
	kuznet@ms2.inr.ac.ru
Subject: Re: Route cache performance under stress
Date: Thu, 12 Jun 2003 22:38:18 -0700 (PDT)	[thread overview]
Message-ID: <20030612.223818.74754074.davem@redhat.com> (raw)
In-Reply-To: <16103.27039.204333.952703@robur.slu.se>

   From: Robert Olsson <Robert.Olsson@data.slu.se>
   Date: Wed, 11 Jun 2003 19:40:47 +0200

   vma      samples  %-age       symbol name
   c023c038 107340   33.143      fn_hash_lookup

Ok, let's optimize our datastructures for how we actually
use them :-)  Also, fn_zone shrunk by 8 bytes.

Try this:

--- ./include/net/ip_fib.h.~1~	Thu Jun 12 22:18:33 2003
+++ ./include/net/ip_fib.h	Thu Jun 12 22:19:57 2003
@@ -89,13 +89,12 @@ struct fib_info
 struct fib_rule;
 #endif
 
-struct fib_result
-{
-	unsigned char	prefixlen;
-	unsigned char	nh_sel;
+struct fib_result {
+	struct fib_info *fi;
 	unsigned char	type;
 	unsigned char	scope;
-	struct fib_info *fi;
+	unsigned char	prefixlen;
+	unsigned char	nh_sel;
 #ifdef CONFIG_IP_MULTIPLE_TABLES
 	struct fib_rule	*r;
 #endif
--- ./net/ipv4/fib_hash.c.~1~	Thu Jun 12 21:47:11 2003
+++ ./net/ipv4/fib_hash.c	Thu Jun 12 22:08:27 2003
@@ -65,16 +65,15 @@ typedef struct {
 	u32	datum;
 } fn_hash_idx_t;
 
-struct fib_node
-{
-	struct fib_node		*fn_next;
-	struct fib_info		*fn_info;
-#define FIB_INFO(f)	((f)->fn_info)
+struct fib_node {
 	fn_key_t		fn_key;
 	u8			fn_tos;
-	u8			fn_type;
-	u8			fn_scope;
 	u8			fn_state;
+	u8			fn_scope;
+	u8			fn_type;
+	struct fib_node		*fn_next;
+	struct fib_info		*fn_info;
+#define FIB_INFO(f)	((f)->fn_info)
 };
 
 #define FN_S_ZOMBIE	1
@@ -82,29 +81,19 @@ struct fib_node
 
 static int fib_hash_zombies;
 
-struct fn_zone
-{
-	struct fn_zone	*fz_next;	/* Next not empty zone	*/
-	struct fib_node	**fz_hash;	/* Hash table pointer	*/
-	int		fz_nent;	/* Number of entries	*/
-
+struct fn_zone {
 	int		fz_divisor;	/* Hash divisor		*/
-	u32		fz_hashmask;	/* (fz_divisor - 1)	*/
-#define FZ_HASHMASK(fz)	((fz)->fz_hashmask)
-
+#define FZ_HASHMASK(fz)	((fz)->fz_divisor - 1)
 	int		fz_order;	/* Zone order		*/
-	u32		fz_mask;
-#define FZ_MASK(fz)	((fz)->fz_mask)
+#define FZ_MASK(fz)	(inet_make_mask((fz)->fz_order))
+	struct fib_node	**fz_hash;	/* Hash table pointer	*/
+	struct fn_zone	*fz_next;	/* Next not empty zone	*/
+	int		fz_nent;	/* Number of entries	*/
 };
 
-/* NOTE. On fast computers evaluation of fz_hashmask and fz_mask
-   can be cheaper than memory lookup, so that FZ_* macros are used.
- */
-
-struct fn_hash
-{
-	struct fn_zone	*fn_zones[33];
+struct fn_hash {
 	struct fn_zone	*fn_zone_list;
+	struct fn_zone	*fn_zones[33];
 };
 
 static __inline__ fn_hash_idx_t fn_hash(fn_key_t key, struct fn_zone *fz)
@@ -197,7 +186,6 @@ static void fn_rehash_zone(struct fn_zon
 {
 	struct fib_node **ht, **old_ht;
 	int old_divisor, new_divisor;
-	u32 new_hashmask;
 		
 	old_divisor = fz->fz_divisor;
 
@@ -217,8 +205,6 @@ static void fn_rehash_zone(struct fn_zon
 		break;
 	}
 
-	new_hashmask = (new_divisor - 1);
-
 #if RT_CACHE_DEBUG >= 2
 	printk("fn_rehash_zone: hash for zone %d grows from %d\n", fz->fz_order, old_divisor);
 #endif
@@ -231,7 +217,6 @@ static void fn_rehash_zone(struct fn_zon
 		write_lock_bh(&fib_hash_lock);
 		old_ht = fz->fz_hash;
 		fz->fz_hash = ht;
-		fz->fz_hashmask = new_hashmask;
 		fz->fz_divisor = new_divisor;
 		fn_rebuild_zone(fz, old_ht, old_divisor);
 		write_unlock_bh(&fib_hash_lock);
@@ -261,7 +246,6 @@ fn_new_zone(struct fn_hash *table, int z
 	} else {
 		fz->fz_divisor = 1;
 	}
-	fz->fz_hashmask = (fz->fz_divisor - 1);
 	fz->fz_hash = fz_hash_alloc(fz->fz_divisor);
 	if (!fz->fz_hash) {
 		kfree(fz);
@@ -269,7 +253,6 @@ fn_new_zone(struct fn_hash *table, int z
 	}
 	memset(fz->fz_hash, 0, fz->fz_divisor*sizeof(struct fib_node*));
 	fz->fz_order = z;
-	fz->fz_mask = inet_make_mask(z);
 
 	/* Find the first not empty zone with more specific mask */
 	for (i=z+1; i<=32; i++)
@@ -312,10 +295,15 @@ fn_hash_lookup(struct fib_table *tb, con
 			if (f->fn_tos && f->fn_tos != flp->fl4_tos)
 				continue;
 #endif
-			f->fn_state |= FN_S_ACCESSED;
+			{
+				u8 state = f->fn_state;
 
-			if (f->fn_state&FN_S_ZOMBIE)
-				continue;
+				if (!(state & FN_S_ACCESSED))
+					f->fn_state = state | FN_S_ACCESSED;
+
+				if (state & FN_S_ZOMBIE)
+					continue;
+			}
 			if (f->fn_scope < flp->fl4_scope)
 				continue;
 

  reply	other threads:[~2003-06-13  5:38 UTC|newest]

Thread overview: 217+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <87d6iit4g7.fsf@deneb.enyo.de>
     [not found] ` <20030517.150933.74723581.davem@redhat.com>
     [not found]   ` <87iss87gqd.fsf@deneb.enyo.de>
2003-05-18  9:31     ` Route cache performance under stress David S. Miller
2003-05-19 17:36       ` Jamal Hadi
2003-05-19 19:18         ` Ralph Doncaster
2003-05-19 22:37           ` Jamal Hadi
2003-05-20  1:10             ` Simon Kirby
2003-05-20  1:14               ` David S. Miller
2003-05-20  1:23                 ` Jamal Hadi
2003-05-20  1:24                   ` David S. Miller
2003-05-20  2:13                     ` Jamal Hadi
2003-05-20  5:01                       ` Pekka Savola
2003-05-20 11:47                         ` Jamal Hadi
2003-05-20 11:55                           ` Pekka Savola
2003-05-20  6:46                       ` David S. Miller
2003-05-20 12:04                         ` Jamal Hadi
2003-05-21  0:36                           ` David S. Miller
2003-05-21 13:03                             ` Jamal Hadi
2003-05-23  5:42                               ` David S. Miller
2003-05-22  8:40                             ` Simon Kirby
2003-05-22  8:58                               ` David S. Miller
2003-05-22 10:40                                 ` David S. Miller
2003-05-22 11:15                                   ` Martin Josefsson
2003-05-23  1:00                                     ` David S. Miller
2003-05-23  1:01                                     ` David S. Miller
2003-05-23  8:21                                       ` Andi Kleen
2003-05-23  8:22                                         ` David S. Miller
2003-05-23  9:03                                           ` Andi Kleen
2003-05-23  9:59                                             ` David S. Miller
2003-05-24  0:41                                     ` Andrew Morton
2003-05-26  2:29                                       ` David S. Miller
2003-05-22 11:44                                   ` Simon Kirby
2003-05-22 13:03                                     ` Martin Josefsson
2003-05-23  0:55                                       ` David S. Miller
2003-05-22 22:33                                     ` David S. Miller
2003-05-29 20:51                                       ` Simon Kirby
2003-06-02 10:58                                         ` Robert Olsson
2003-06-02 15:18                                           ` Simon Kirby
2003-06-02 16:36                                             ` Robert Olsson
2003-06-02 18:05                                               ` Simon Kirby
2003-06-09 17:21                                               ` David S. Miller
2003-06-09 17:19                                           ` David S. Miller
2003-05-23  0:59                                     ` David S. Miller
2003-05-26  7:18                   ` Florian Weimer
2003-05-26  7:29                     ` David S. Miller
2003-05-26  9:34                       ` Florian Weimer
2003-05-27  6:32                         ` David S. Miller
2003-06-08 11:39                           ` Florian Weimer
2003-06-08 12:05                             ` David S. Miller
2003-06-08 13:10                               ` Florian Weimer
2003-06-08 23:49                                 ` Simon Kirby
2003-06-08 23:55                                   ` CIT/Paul
2003-06-09  3:15                                     ` Jamal Hadi
2003-06-09  5:27                                       ` CIT/Paul
2003-06-09  5:58                                         ` David S. Miller
2003-06-09  6:28                                           ` CIT/Paul
2003-06-09  6:28                                             ` David S. Miller
2003-06-09 16:23                                               ` Stephen Hemminger
2003-06-09 16:37                                                 ` David S. Miller
2003-06-09  7:13                                             ` Simon Kirby
2003-06-09  8:10                                               ` CIT/Paul
2003-06-09  8:27                                                 ` Simon Kirby
2003-06-09 19:38                                                   ` CIT/Paul
2003-06-09 21:30                                                     ` David S. Miller
2003-06-09 22:19                                                     ` Simon Kirby
2003-06-09 22:54                                                       ` Robert Olsson
2003-06-13  6:21                                                         ` David S. Miller
2003-06-13 10:40                                                           ` Robert Olsson
2003-06-15  6:36                                                             ` David S. Miller
2003-06-17 17:03                                                             ` Robert Olsson
2003-06-09 22:56                                                       ` CIT/Paul
2003-06-09 23:05                                                         ` David S. Miller
2003-06-10 13:41                                                           ` Robert Olsson
2003-06-10  0:03                                                         ` Jamal Hadi
2003-06-10  0:32                                                           ` Ralph Doncaster
2003-06-10  1:15                                                             ` Jamal Hadi
2003-06-10  2:45                                                               ` Ralph Doncaster
2003-06-10  3:23                                                                 ` Ben Greear
2003-06-10  3:41                                                                   ` Ralph Doncaster
2003-06-10 18:10                                                                   ` Ralph Doncaster
2003-06-10 18:21                                                                     ` Ben Greear
2003-06-10  4:34                                                                 ` Simon Kirby
2003-06-10 11:01                                                                   ` Jamal Hadi
2003-06-10 11:28                                                                   ` Jamal Hadi
2003-06-10 13:18                                                                     ` Ralph Doncaster
2003-06-10 16:10                                                                   ` David S. Miller
2003-06-10 10:53                                                                 ` Jamal Hadi
2003-06-10 11:41                                                                   ` chas williams
2003-06-10 16:27                                                                     ` David S. Miller
2003-06-10 16:57                                                                       ` chas williams
2003-06-10 11:41                                                                   ` Pekka Savola
2003-06-10 11:58                                                                     ` John S. Denker
2003-06-10 12:12                                                                       ` Jamal Hadi
2003-06-10 16:33                                                                         ` David S. Miller
2003-06-10 12:07                                                                     ` Jamal Hadi
2003-06-10 15:29                                                                       ` Ralph Doncaster
2003-06-11 19:48                                                                         ` Florian Weimer
2003-06-11 19:40                                                                           ` CIT/Paul
2003-06-11 21:09                                                                           ` Florian Weimer
2003-06-10 13:10                                                                   ` Ralph Doncaster
2003-06-10 13:36                                                                     ` Jamal Hadi
2003-06-10 14:03                                                                       ` Ralph Doncaster
2003-06-10 16:38                                                                     ` David S. Miller
2003-06-10 16:39                                                                     ` David S. Miller
2003-06-10 18:41                                                                   ` Florian Weimer
2003-06-11 11:47                                                                     ` Was (Re: " Jamal Hadi
2003-06-11 18:41                                                                       ` Real World Routers 8-) Florian Weimer
2003-06-10 15:53                                                               ` Route cache performance under stress David S. Miller
2003-06-10 16:15                                                                 ` 3c59x (was Route cache performance under stress) Bogdan Costescu
2003-06-10 16:20                                                                   ` Andi Kleen
2003-06-10 16:23                                                                     ` Jeff Garzik
2003-06-10 17:02                                                                       ` 3c59x David S. Miller
2003-06-10 17:16                                                                         ` 3c59x Jeff Garzik
2003-06-10 17:14                                                                           ` 3c59x David S. Miller
2003-06-10 17:25                                                                             ` 3c59x Jeff Garzik
2003-06-10 17:30                                                                               ` 3c59x David S. Miller
2003-06-10 19:20                                                                                 ` 3c59x Jeff Garzik
2003-06-10 19:21                                                                                   ` 3c59x David S. Miller
2003-06-10 17:18                                                                           ` 3c59x Andi Kleen
2003-06-10 17:29                                                                           ` 3c59x chas williams
2003-06-10 17:31                                                                             ` 3c59x David S. Miller
2003-06-10 17:39                                                                               ` 3c59x chas williams
2003-06-10 17:43                                                                                 ` 3c59x David S. Miller
2003-06-11 17:52                                                               ` Route cache performance under stress Robert Olsson
2003-06-10  1:53                                                             ` Simon Kirby
2003-06-10  3:18                                                               ` Ralph Doncaster
2003-06-10 16:06                                                                 ` David S. Miller
2003-06-10 15:56                                                               ` David S. Miller
2003-06-10 16:45                                                                 ` 3c59x (was Route cache performance under stress) Bogdan Costescu
2003-06-10 16:49                                                                   ` Andi Kleen
2003-06-11  9:54                                                                     ` Robert Olsson
2003-06-11 10:05                                                                       ` Andi Kleen
2003-06-11 10:38                                                                         ` Robert Olsson
2003-06-11 12:08                                                                         ` Jamal Hadi
2003-06-10 17:12                                                                   ` 3c59x David S. Miller
2003-06-10 17:19                                                                 ` Route cache performance under stress Ralph Doncaster
2003-06-10 15:49                                                             ` David S. Miller
2003-06-10 17:33                                                               ` Ralph Doncaster
2003-06-10 17:32                                                                 ` David S. Miller
2003-06-10 18:34                                                                   ` Robert Olsson
2003-06-10 18:57                                                                     ` David S. Miller
2003-06-10 19:53                                                                       ` Robert Olsson
2003-06-10 21:36                                                                       ` CIT/Paul
2003-06-10 21:39                                                                       ` Ralph Doncaster
2003-06-10 22:20                                                                         ` David S. Miller
2003-06-10 23:58                                                                           ` Ralph Doncaster
2003-06-10 23:57                                                                             ` David S. Miller
2003-06-11  0:41                                                                               ` Ralph Doncaster
2003-06-11  0:58                                                                                 ` David S. Miller
2003-06-11  0:58                                                                                 ` David S. Miller
2003-06-11  0:51                                                                             ` Ben Greear
2003-06-11  1:01                                                                               ` David S. Miller
2003-06-11  1:15                                                                                 ` Ben Greear
2003-06-11  1:22                                                                                   ` David S. Miller
2003-06-11  1:51                                                                                     ` Ben Greear
2003-06-11  3:33                                                                                       ` David S. Miller
2003-06-11 11:54                                                                                         ` gettime: Was (Re: " Jamal Hadi
2003-06-11 12:08                                                                                           ` Andi Kleen
2003-06-12  3:30                                                                                             ` David S. Miller
2003-06-12  6:32                                                                                               ` Ben Greear
2003-06-12  8:46                                                                                                 ` David S. Miller
2003-06-11 15:57                                                                                           ` Ben Greear
2003-06-12  3:29                                                                                           ` David S. Miller
2003-06-11  1:17                                                                                 ` Ralph Doncaster
2003-06-11  1:23                                                                                   ` David S. Miller
2003-06-11  7:28                                                                                     ` Andi Kleen
2003-06-11  7:25                                                                                 ` Andi Kleen
2003-06-11 17:40                                                                       ` Robert Olsson
2003-06-13  5:38                                                                         ` David S. Miller [this message]
2003-06-13 10:22                                                                           ` Robert Olsson
2003-06-13 17:15                                                                           ` Robert Olsson
2003-06-12  6:45                                                                     ` David S. Miller
2003-06-12 13:56                                                                       ` Robert Olsson
2003-06-12 21:35                                                                         ` David S. Miller
2003-06-13 10:50                                                                           ` Robert Olsson
2003-06-10  0:56                                                       ` Ralph Doncaster
2003-06-09 11:38                                                 ` Jamal Hadi
2003-06-09 11:55                                                   ` David S. Miller
2003-06-09 12:18                                                     ` Jamal Hadi
2003-06-09 12:32                                                       ` David S. Miller
2003-06-09 13:22                                                         ` Jamal Hadi
2003-06-09 13:22                                                           ` David S. Miller
2003-06-09  8:56                                               ` David S. Miller
2003-06-09 22:39                                                 ` Robert Olsson
2003-06-09  6:25                                       ` David S. Miller
2003-06-09  6:59                                         ` Simon Kirby
2003-06-09  7:03                                           ` David S. Miller
2003-06-09 13:04                                       ` Ralph Doncaster
2003-06-09 13:26                                         ` Jamal Hadi
2003-06-09  5:44                                     ` David S. Miller
2003-06-09  5:51                                       ` CIT/Paul
2003-06-09  6:03                                         ` David S. Miller
2003-06-09  6:52                                           ` Simon Kirby
2003-06-09  6:56                                             ` David S. Miller
2003-06-09  7:36                                               ` Simon Kirby
2003-06-09  8:18                                               ` Simon Kirby
2003-06-09  8:22                                                 ` David S. Miller
2003-06-09  8:31                                                   ` Simon Kirby
2003-06-09  9:01                                                 ` David S. Miller
2003-06-09  9:47                                                   ` Andi Kleen
2003-06-09 10:03                                                     ` David S. Miller
2003-06-09 10:13                                                       ` Andi Kleen
2003-06-09 10:13                                                         ` David S. Miller
2003-06-09 10:40                                                           ` YOSHIFUJI Hideaki / 吉藤英明
2003-06-09 10:40                                                             ` David S. Miller
2003-06-09 14:14                                                 ` David S. Miller
2003-06-09  6:47                                     ` Simon Kirby
2003-06-09  6:49                                       ` David S. Miller
2003-06-09 13:28                                       ` Ralph Doncaster
2003-06-09 16:30                                         ` Simon Kirby
2003-06-17 20:58                                           ` Florian Weimer
2003-06-09  5:38                                   ` David S. Miller
2003-06-10  3:05                                 ` Steven Blake
2003-06-12  6:31                                   ` David S. Miller
2003-06-08 17:58                             ` Pekka Savola
2003-05-21  0:09                 ` Simon Kirby
2003-05-21  0:13                   ` David S. Miller
2003-05-26  9:29                     ` Florian Weimer
     [not found] <8765pshpd4.fsf@deneb.enyo.de>
2003-04-05 18:17 ` Martin Josefsson

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=20030612.223818.74754074.davem@redhat.com \
    --to=davem@redhat.com \
    --cc=Robert.Olsson@data.slu.se \
    --cc=fw@deneb.enyo.de \
    --cc=hadi@shell.cyberus.ca \
    --cc=kuznet@ms2.inr.ac.ru \
    --cc=linux-net@vger.kernel.org \
    --cc=netdev@oss.sgi.com \
    --cc=ralph+d@istop.com \
    --cc=ralph@istop.com \
    --cc=sim@netnation.com \
    --cc=xerox@foonet.net \
    /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).