linux/include
Eric Dumazet 5e140dfc1f 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>
2009-03-20 01:33:32 -07:00
..
acpi ACPI: Enable bit 11 in _PDC to advertise hw coord 2009-02-07 00:41:14 -05:00
asm-arm
asm-frv Merge branch 'master' of /home/davem/src/GIT/linux-2.6/ 2009-02-24 03:50:29 -08:00
asm-generic Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-26 09:47:28 -08:00
asm-h8300
asm-m32r net: new user space API for time stamping of incoming and outgoing packets 2009-02-15 22:43:33 -08:00
asm-mn10300 net: new user space API for time stamping of incoming and outgoing packets 2009-02-15 22:43:33 -08:00
crypto crypto: shash - Fix tfm destruction 2009-02-05 16:51:25 +11:00
drm drm: disable encoders before re-routing them 2009-02-25 14:42:23 +10:00
keys
linux net: reorder struct Qdisc for better SMP performance 2009-03-20 01:33:32 -07:00
math-emu
media Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 2009-02-02 19:26:06 -08:00
mtd headers_check fix: mtd/inftl-user.h 2009-01-31 00:13:34 +05:30
net net: reorder struct Qdisc for better SMP performance 2009-03-20 01:33:32 -07:00
pcmcia
rdma net: replace __constant_{endian} uses in net headers 2009-02-14 22:58:35 -08:00
rxrpc
scsi [SCSI] iscsi_tcp: make padbuf non-static 2009-01-13 10:41:34 -06:00
sound headers_check fix: sound/hdsp.h 2009-01-31 00:13:56 +05:30
trace Network Drop Monitor: Add trace declaration for skb frees 2009-03-13 12:09:27 -07:00
video atyfb: fix CONFIG_ namespace violations 2009-02-05 12:56:48 -08:00
xen
Kbuild