summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorEric Dumazet <dada1@cosmosbay.com>2009-03-20 01:33:32 -0700
committerDavid S. Miller <davem@davemloft.net>2009-03-20 01:33:32 -0700
commit5e140dfc1fe87eae27846f193086724806b33c7d (patch)
treea38240220f71ac128576cd8f432248442bac2deb /drivers
parent408896d508794c98a2ac6b6e1dcd7a4888a4d32b (diff)
downloadlinux-5e140dfc1fe87eae27846f193086724806b33c7d.tar.gz
linux-5e140dfc1fe87eae27846f193086724806b33c7d.tar.bz2
linux-5e140dfc1fe87eae27846f193086724806b33c7d.zip
net: reorder struct Qdisc for better SMP performance
dev_queue_xmit() needs to dirty fields "state", "q", "bstats" and "qstats" On x86_64 arch, they currently span three cache lines, involving more cache line ping pongs than necessary, making longer holding of queue spinlock. We can reduce this to one cache line, by grouping all read-mostly fields at the beginning of structure. (Or should I say, all highly modified fields at the end :) ) Before patch : offsetof(struct Qdisc, state)=0x38 offsetof(struct Qdisc, q)=0x48 offsetof(struct Qdisc, bstats)=0x80 offsetof(struct Qdisc, qstats)=0x90 sizeof(struct Qdisc)=0xc8 After patch : offsetof(struct Qdisc, state)=0x80 offsetof(struct Qdisc, q)=0x88 offsetof(struct Qdisc, bstats)=0xa0 offsetof(struct Qdisc, qstats)=0xac sizeof(struct Qdisc)=0xc0 Signed-off-by: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
0 files changed, 0 insertions, 0 deletions