neigh: reorder struct neighbour fields
Le mardi 12 octobre 2010 à 00:02 +0200, Eric Dumazet a écrit : > Here is the followup patch. > > Thanks ! > Oops, this was an old version, the up2date ones also took care of "used" field. I guess its time for a sleep, sorry again. [PATCH net-next V2] neigh: reorder struct neighbour fields (refcnt) and (ha_lock, ha, used, 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@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
fc66f95c68
commit
e37ef961e5
1 changed files with 4 additions and 4 deletions
|
@ -94,8 +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;
|
||||
__u8 flags;
|
||||
|
@ -103,16 +101,18 @@ struct neighbour {
|
|||
__u8 type;
|
||||
__u8 dead;
|
||||
atomic_t refcnt;
|
||||
struct sk_buff_head arp_queue;
|
||||
struct timer_list timer;
|
||||
unsigned long used;
|
||||
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];
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue