Thread (34 messages) 34 messages, 12 authors, 2008-06-04

Re: [PATCH] net: add ability to clear stats via ethtool - e1000/pcnet32

From: Ben Hutchings <hidden>
Date: 2008-06-01 22:29:47
Also in: lkml

Bill Fink wrote:
On Sun, 1 Jun 2008, Ben Hutchings wrote:
quoted
Bill Fink wrote:
<snip>
quoted
Yes, every individual Linux network administrator can re-create the
wheel by devising their own scripts, but it makes much more sense
to me to implement a simple general kernel mechanism once that could
be used generically, than to have hundreds (or thousands) of Linux
network administrators each having to do it themselves (perhaps
multiple times if they have a variety of types of systems and types
of NICs).
The ethtool interface is pretty generic, even if the names aren't.
Here's some Python code I just knocked up which demonstrates how
to get a set of named stats.  It shouldn't be terribly hard to
extend this to saving and subtracting stat sets.
I'm not sure what that proves.  Your python code just basically gives
the same info as running the "ethtool -S" command.
Yes, but in a form you can more easily manipulate.
But the question
is how does one devise a generic script or tool that doesn't require
any special knowledge of the specific NIC being used.  For example,
here's the "ethtool -S" info for my myri10ge NIC:

[root@chance8 ~]# ethtool -S eth2
NIC statistics:
[...]
     WC: 1
     irq: 8413
     MSI: 1
     read_dma_bw_MBs: 1398
     write_dma_bw_MBs: 1613
     read_write_dma_bw_MBs: 2711
     serial_number: 287046
[...]
     tx_linearized: 0
     link_changes: 8
     link_up: 1
[...]
How does one know which of these reported values are counter stats
that one wishes to zero/snapshot, and which are not?
Ah, I see, I didn't realise some drivers were abusing ethtool stats in
this way.  But for the most part the differences will show up as zeroes.

If there's really a need for ethtool stats that aren't counters,
maybe the ethtool API should include flags to indicate which they are.
Another issue that occurred to me is if multiple people are working
on troubleshooting a network problem, how do we insure that they all
get a consistent view of the stats?  If this is done via a kernel
mechanism then there isn't an issue.  But if it's done via user space,
then you have to make sure that everyone zeros/snapshots the stats
at the same time.

Ideally, one should be able to do something like "ethtool -z ethX"
to zero/snapshot the driver stats, and then "ethtool -S ethX" to get
the stats since the last snapshot.  You should be able to use the
same tool ("ethtool") to do all of this, and not some other special
tool or specially devised homegrown script.  Why make users lives
any more difficult than need be?
No-one's stopping you from adding these options to ethtool.  You could
have it save statistic sets in, say, /var/run/ethtool.

Ben.

-- 
Ben Hutchings, Senior Software Engineer, Solarflare Communications
Not speaking for my employer; that's the marketing department's job.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help