* Tom Feiner (feiner....@gmail.com) wrote:
> As matthias mentioned in the upstream ticket you filed, the if_ plugin
> in the 1.3 series should do the right thing now.

No, it doesn't.  *.max is *still* set to 1,000,000,000, which is wrong.
This is a counter since *boot* (or last overflow), not since the last
second.  Sure, the interface can only do 1Gb per second, but a
per-second amount isn't what's being sent to rrdtool.  What happens,
however, is that *.max is translated to a maximum value that rrdtool
will accept, and so it starts throwing away values which are larger than
that.  Reality is that on a 64bit kernel you're not going to get an
overflow until 2^64 (or so), so as soon as you've transferred over 1Gb
since booting a system, the if plugin blows up.

> Can you check if the latest if_ plugin solves your problem? Ther latest if_
> plugin from the munin trunk can be found at:
> http://munin.projects.linpro.no/browser/trunk/plugins/node.d.linux/if_.in

As long as *.max is set to what the interface per-second speed is, and
*.max translates to the max value for rrdtool, it's going to be busted.
rrdtool can generally handle wrap-arounds, it might be as simple as
removing the .max settings.  Alternatively, have a check to figure out
if it's a 32bit or 64bit machine and set the max value based on
eight-times 2^32 or 2^64 respectively (since it's reported in bytes
anyway by /proc/net/dev...).  By the way, because of that, you've
actually got around 34 seconds on a gigabit interface which is going at
full gigabit speeds before you get a roll-over with 32bit counters.
Over 5 minutes with a 100Mbps interface.  No clue who came up with the
idea to set the max value here to the interface speed, but it's just
plain wrong.

        Thanks,

                Stephen

Attachment: signature.asc
Description: Digital signature

Reply via email to