Package: munin
Version: 1.2.6-10
Severity: normal

The if_ module has problems with large values because it incorrectly
tells rrdtool that the maximum size allowed is the interface speed. As
the data being pulled from /proc/net/dev is the total number of bytes
transferred since boot (modulo overflow), the interface speed is
irrelevant. This *breaks* if_ on just about every system, which is
particularly insane given that it's such a valuable plugin. On 64bit
Linux-based systems (at least 2.6.22 and newer), the counters are 64bit,
though obviously this will help even systems which don't have 64bit
counters some. Yes, a gigabit interface could overflow a 32bit counter
in around 34 seconds, but we don't need to make things worse by telling
rrdtool to toss out any values >1GB when it can go up to ~4GB.

if_ should be adjusted accordingly:

    echo 'down.min 0'
        echo 'down.max 18446744073709551616'

    echo 'up.min 0'
        echo 'up.max 18446744073709551616'

With the 'max' settings provided by iwlist/ethtool removed.

Perhaps with some adjustment/checking to see if the counter is
64bit or 32bit (if possible..). It might make sense to just
always use the 64bit value- I believe rrdtool will figure things
out correctly if an overflow happens near the max 32bit value
even if the 'max' is set to the 64bit value. 

This has been submitted upstream at:
http://munin.projects.linpro.no/ticket/686

        Thanks,

                Stephen

Attachment: signature.asc
Description: Digital signature

Reply via email to