linux_dsm_epyc7002/drivers/net
Eric Dumazet 40931b8511 mlx4: give precise rx/tx bytes/packets counters
mlx4 stats are chaotic because a deferred work queue is responsible
to update them every 250 ms.

Even sampling stats every one second with "sar -n DEV 1" gives
variations like the following :

lpaa23:~# sar -n DEV 1 10 | grep eth0 | cut -c1-65
07:39:22         eth0 146877.00 3265554.00   9467.15 4828168.50
07:39:23         eth0 146587.00 3260329.00   9448.15 4820445.98
07:39:24         eth0 146894.00 3259989.00   9468.55 4819943.26
07:39:25         eth0 110368.00 2454497.00   7113.95 3629012.17  <<>>
07:39:26         eth0 146563.00 3257502.00   9447.25 4816266.23
07:39:27         eth0 145678.00 3258292.00   9389.79 4817414.39
07:39:28         eth0 145268.00 3253171.00   9363.85 4809852.46
07:39:29         eth0 146439.00 3262185.00   9438.97 4823172.48
07:39:30         eth0 146758.00 3264175.00   9459.94 4826124.13
07:39:31         eth0 146843.00 3256903.00   9465.44 4815381.97
Average:         eth0 142827.50 3179259.70   9206.30 4700578.16

This patch allows rx/tx bytes/packets counters being folded at the
time we need stats.

We now can fetch stats every 1 ms if we want to check NIC behavior
on a small time window. It is also easier to detect anomalies.

lpaa23:~# sar -n DEV 1 10 | grep eth0 | cut -c1-65
07:42:50         eth0 142915.00 3177696.00   9212.06 4698270.42
07:42:51         eth0 143741.00 3200232.00   9265.15 4731593.02
07:42:52         eth0 142781.00 3171600.00   9202.92 4689260.16
07:42:53         eth0 143835.00 3192932.00   9271.80 4720761.39
07:42:54         eth0 141922.00 3165174.00   9147.64 4679759.21
07:42:55         eth0 142993.00 3207038.00   9216.78 4741653.05
07:42:56         eth0 141394.06 3154335.64   9113.85 4663731.73
07:42:57         eth0 141850.00 3161202.00   9144.48 4673866.07
07:42:58         eth0 143439.00 3180736.00   9246.05 4702755.35
07:42:59         eth0 143501.00 3210992.00   9249.99 4747501.84
Average:         eth0 142835.66 3182165.93   9206.98 4704874.08

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-11-29 13:36:34 -05:00
..
appletalk net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
arcnet
bonding netns: make struct pernet_operations::id unsigned int 2016-11-18 10:59:15 -05:00
caif
can can: sja1000: plx_pci: Add support for Moxa CAN devices 2016-10-31 20:48:19 +01:00
cris net: cris: make eth_v10.c explicitly non-modular 2016-10-31 20:58:34 -04:00
dsa net: dsa: mv88e6xxx: Fix mv88e6xxx_g1_irq_free() interrupt count 2016-11-28 15:59:40 -05:00
ethernet mlx4: give precise rx/tx bytes/packets counters 2016-11-29 13:36:34 -05:00
fddi net: use core MTU range checking in misc drivers 2016-10-20 14:51:10 -04:00
fjes net: use core MTU range checking in misc drivers 2016-10-20 14:51:10 -04:00
hamradio
hippi net: use core MTU range checking in misc drivers 2016-10-20 14:51:10 -04:00
hyperv Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-10-30 12:42:58 -04:00
ieee802154 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-26 23:42:21 -05:00
ipvlan ipvlan: constify l3mdev_ops structure 2016-10-15 17:49:57 -04:00
irda
phy Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-26 23:42:21 -05:00
plip net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
ppp netns: make struct pernet_operations::id unsigned int 2016-11-18 10:59:15 -05:00
slip net: use core MTU range checking in misc drivers 2016-10-20 14:51:10 -04:00
team genetlink: mark families as __ro_after_init 2016-10-27 16:16:09 -04:00
usb lan78xx: relocate mdix setting to phy driver 2016-11-18 13:57:33 -05:00
vmxnet3 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-10-30 12:42:58 -04:00
wan Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-10-30 12:42:58 -04:00
wimax net: use core MTU range checking in wireless drivers 2016-10-20 14:51:08 -04:00
wireless wireless-drivers-next patches for 4.10 2016-11-27 20:26:59 -05:00
xen-netback xen-netback: prefer xenbus_scanf() over xenbus_gather() 2016-11-09 20:24:35 -05:00
dummy.c
eql.c
geneve.c geneve: fix ip_hdr_len reserved for geneve6 tunnel. 2016-11-28 16:14:49 -05:00
gtp.c netns: make struct pernet_operations::id unsigned int 2016-11-18 10:59:15 -05:00
ifb.c
Kconfig
LICENSE.SRC
loopback.c
macsec.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-10-30 12:42:58 -04:00
macvlan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-26 23:42:21 -05:00
macvtap.c virtio_net: Simplify call sites for virtio_net_hdr_{from, to}_skb(). 2016-11-19 10:37:03 -05:00
Makefile
mdio.c
mii.c net: mii: report 0 for unknown lp_advertising 2016-11-09 20:26:58 -05:00
netconsole.c
nlmon.c
ntb_netdev.c net: use core MTU range checking in core net infra 2016-10-20 14:51:09 -04:00
rionet.c net: use core MTU range checking in misc drivers 2016-10-20 14:51:10 -04:00
sb1000.c net: deprecate eth_change_mtu, remove usage 2016-10-13 09:36:57 -04:00
Space.c
sungem_phy.c
tun.c tuntap: remove unnecessary sk_receive_queue length check during xmit 2016-11-24 16:06:56 -05:00
veth.c net: use core MTU range checking in core net infra 2016-10-20 14:51:09 -04:00
virtio_net.c virtio-net: enable multiqueue by default 2016-11-28 13:17:40 -05:00
vrf.c net: Enable support for VRF with ipv4 multicast 2016-11-01 11:54:26 -04:00
vxlan.c netns: make struct pernet_operations::id unsigned int 2016-11-18 10:59:15 -05:00
xen-netfront.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-11-15 10:54:36 -05:00