Subject: Tools for sampling ethtool --statistics

From: Jesper Dangaard Brouer <[email-masked]>
Date: Wed, 20 Jan 2016 10:13:11 +0100

Hi All,

I wrote a small tool[1] to extract ethtool --statistics|-S, sample and
present it in a more human readable manor.  You might also find this
useful...

https://github.com/netoptimizer/network-testing/blob/master/bin/ethtool_stats.pl

The reason I wrote this script is that the mlx5 driver (Mellanox 100 Gbit/s)
does not report correct ifconfig stats.  It reports the HW counters,
not what the network stack is able to handle.  I/we obviously need the
stack number when working on improving the stack.

-- 
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Principal Kernel Engineer at Red Hat
  Author of http://www.iptv-analyzer.org
  LinkedIn: http://www.linkedin.com/in/brouer

Output examples:

pktgen (1 core) sending ~20Mpps

Show adapter mlx5p2 statistics (ONLY that changed!)
Ethtool(mlx5p2) stat:     19431694 (     19,431,694) <= frames_rx /sec
Ethtool(mlx5p2) stat:   1243722215 (  1,243,722,215) <= in_octets /sec
Ethtool(mlx5p2) stat:     19433161 (     19,433,161) <= in_ucast_pkts /sec
Ethtool(mlx5p2) stat:   1243746943 (  1,243,746,943) <= octets /sec
Ethtool(mlx5p2) stat:   1243629263 (  1,243,629,263) <= octets_received /sec
Ethtool(mlx5p2) stat:     19433654 (     19,433,654) <= p64octets /sec
Ethtool(mlx5p2) stat:     19433556 (     19,433,556) <= pkts /sec
Ethtool(mlx5p2) stat:      1815546 (      1,815,546) <= rx3_packets /sec
Ethtool(mlx5p2) stat:   1165854821 (  1,165,854,821) <= rx_bytes /sec
Ethtool(mlx5p2) stat:     19430906 (     19,430,906) <= rx_csum_good /sec
Ethtool(mlx5p2) stat:     19430906 (     19,430,906) <= rx_packets /sec
Ethtool(mlx5p2) stat:   1165854821 (  1,165,854,821) <= rx_unicast_bytes /sec
Ethtool(mlx5p2) stat:     19430906 (     19,430,906) <= rx_unicast_packets /sec

pktgen (4 cores) sending ~50Mpps

Show adapter mlx5p2 statistics (ONLY that changed!)
Ethtool(mlx5p2) stat:     25710443 (     25,710,443) <= drop_events /sec
Ethtool(mlx5p2) stat:     51861645 (     51,861,645) <= frames_rx /sec
Ethtool(mlx5p2) stat:     25710502 (     25,710,502) <= in_discards /sec
Ethtool(mlx5p2) stat:   3319134161 (  3,319,134,161) <= in_octets /sec
Ethtool(mlx5p2) stat:     26150970 (     26,150,970) <= in_ucast_pkts /sec
Ethtool(mlx5p2) stat:   3319128053 (  3,319,128,053) <= octets /sec
Ethtool(mlx5p2) stat:   3319145319 (  3,319,145,319) <= octets_received /sec
Ethtool(mlx5p2) stat:     51861369 (     51,861,369) <= p64octets /sec
Ethtool(mlx5p2) stat:     51861375 (     51,861,375) <= pkts /sec
Ethtool(mlx5p2) stat:      1383475 (      1,383,475) <= rx3_packets /sec
Ethtool(mlx5p2) stat:   1569059171 (  1,569,059,171) <= rx_bytes /sec
Ethtool(mlx5p2) stat:     26150988 (     26,150,988) <= rx_csum_good /sec
Ethtool(mlx5p2) stat:     26150988 (     26,150,988) <= rx_packets /sec
Ethtool(mlx5p2) stat:   1569059171 (  1,569,059,171) <= rx_unicast_bytes /sec
Ethtool(mlx5p2) stat:     26150988 (     26,150,988) <= rx_unicast_packets /sec