virtio_net: Add ethtool stats
authorToshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Wed, 17 Jan 2018 06:38:25 +0000 (15:38 +0900)
committerDavid S. Miller <davem@davemloft.net>
Mon, 22 Jan 2018 20:25:37 +0000 (15:25 -0500)
commitd7dfc5cf56b0e34f52d70260b024335e98f4c8c9
tree0d6b9c1acfc1e0844761a053b12e9cca82921f23
parentd1b1110fe84d31633bf0c9de7d83c1a8629cc759
virtio_net: Add ethtool stats

The main purpose of this patch is adding a way of checking per-queue stats.
It's useful to debug performance problems on multiqueue environment.

$ ethtool -S ens10
NIC statistics:
     rx_queue_0_packets: 2090408
     rx_queue_0_bytes: 3164825094
     rx_queue_1_packets: 2082531
     rx_queue_1_bytes: 3152932314
     tx_queue_0_packets: 2770841
     tx_queue_0_bytes: 4194955474
     tx_queue_1_packets: 3084697
     tx_queue_1_bytes: 4670196372

This change converts existing per-cpu stats structure into per-queue one.
This should not impact on performance since each queue counter is not
updated concurrently by multiple cpus.

Performance numbers:
 - Guest has 2 vcpus and 2 queues
 - Guest runs netserver
 - Host runs 100-flow super_netperf

                     Before      After       Diff
UDP_STREAM 18byte        86.22       87.00   +0.90%
UDP_STREAM 1472byte    4055.27     4042.18   -0.32%
TCP_STREAM            16956.32    16890.63   -0.39%
UDP_RR               178667.11   185862.70   +4.03%
TCP_RR               128473.04   124985.81   -2.71%

Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/virtio_net.c