netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] net: tx scalability works : tx_packets/tx_bytes/tx_dropped
@ 2009-05-18 10:33 Eric Dumazet
  2009-05-18 22:15 ` David Miller
  0 siblings, 1 reply; 2+ messages in thread
From: Eric Dumazet @ 2009-05-18 10:33 UTC (permalink / raw)
  To: David S. Miller; +Cc: Linux Netdev List

offsetof(struct net_device, features)=0x44
offsetof(struct net_device, stats.tx_packets)=0x54
offsetof(struct net_device, stats.tx_bytes)=0x5c
offsetof(struct net_device, stats.tx_dropped)=0x6c

This means drivers that touch stats.tx_packets/stats.tx_bytes in their
tx path can slow down SMP operations, since they dirty a cache line
that should stay shared (dev->features is needed in rx and tx paths)

We could move away stats field in net_device but it wont help that much.
(Two cache lines dirtied in tx path, we can do one only)

Better solution is to add tx_packets/tx_bytes/tx_dropped in struct netdev_queue
because this structure is already touched in tx path and counters
updates will then be free.

First patch adds the infrastructure, and second one uses this
infrastructure for VLAN devices, for which I spoted the performance
problem on Gigabit links.

rx path has same problem of course, but less prevalent as less
cpus are involved in rx path if IRQ affinities not too dumb.

Thank you

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-05-18 22:15 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-18 10:33 [PATCH 0/2] net: tx scalability works : tx_packets/tx_bytes/tx_dropped Eric Dumazet
2009-05-18 22:15 ` David Miller

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).