[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1286834567.30423.102.camel@edumazet-laptop>
Date: Tue, 12 Oct 2010 00:02:47 +0200
From: Eric Dumazet <eric.dumazet@...il.com>
To: David Miller <davem@...emloft.net>
Cc: netdev@...r.kernel.org
Subject: [PATCH net-next] neigh: reorder struct neighbour fields
Here is the followup patch.
Thanks !
[PATCH net-next] neigh: reorder struct neighbour fields
(refcnt) and (ha_lock, ha, dev, output, ops, primary_key) should be
placed on a separate cache lines.
refcnt can be often written, while other fields are mostly read.
This gave me good result on stress test :
before:
real 0m45.570s
user 0m15.525s
sys 9m56.669s
After:
real 0m41.841s
user 0m15.261s
sys 8m45.949s
Signed-off-by: Eric Dumazet <eric.dumazet@...il.com>
---
include/net/neighbour.h | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/net/neighbour.h b/include/net/neighbour.h
index f04e7a2..822802a 100644
--- a/include/net/neighbour.h
+++ b/include/net/neighbour.h
@@ -94,7 +94,6 @@ struct neighbour {
struct neighbour __rcu *next;
struct neigh_table *tbl;
struct neigh_parms *parms;
- struct net_device *dev;
unsigned long used;
unsigned long confirmed;
unsigned long updated;
@@ -103,16 +102,17 @@ struct neighbour {
__u8 type;
__u8 dead;
atomic_t refcnt;
+ struct sk_buff_head arp_queue;
+ struct timer_list timer;
atomic_t probes;
rwlock_t lock;
seqlock_t ha_lock;
unsigned char ha[ALIGN(MAX_ADDR_LEN, sizeof(unsigned long))];
struct hh_cache *hh;
int (*output)(struct sk_buff *skb);
- struct sk_buff_head arp_queue;
- struct timer_list timer;
const struct neigh_ops *ops;
struct rcu_head rcu;
+ struct net_device *dev;
u8 primary_key[0];
};
--
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