[mrtg-developers] Re: proposed mrtg performance improvements?

Tobias Oetiker oetiker at ee.ethz.ch
Fri Nov 21 07:43:59 MET 2003

Yesterday Dave Plonka wrote:

Hi Dave,

>   for (;;) { # ever
>     readtargets();       # get the current state of the routers, uses Forks...
>     foreach $target (@targets) {
> 	getcurrent();    # get the current values for the target
> 	writegraphics(); # update the RRD file for that target
>     }
>   }
> And the "getcurrent" part is not parallelized currently.

Yes, but the snmpgets only happen in readtargets, getcurrent is
just data mangling ... there is no latency as fahr as I remember my
code ...

> I guess I just wanted to know if I'm missing some subtle detail about
> why perhaps the getcurrent/writegraphics shouldn't be similarly
> performed in parallel by the forked children.

because this activity is disk and cpu bound, parallelisation can
help you with cpu bound as you have a smp system, but so can severl
cfg files ... diskio will not get better when more process
"threads" pound on it ...

> Since there are these short waits for network i/o (between the getcurrent
> SNMP gets and response) it seems that's the opportunity to interleave
> some of the disk i/o.

the snmp stuff happens in readtargets ...

> > Have you used the perl profiler on the code, this might reveal
> > where the hotspots are in the code ...
> No, I might try that.

when I did this last time I discovered a very bad performance
killer in the cfg reading code ... It cut the startup time by a
huge factor witch grew progressively with the size of the config
file ...

> Anotehr thing I'm wondering about is trying to avoid the often
> unnecessary RRDs::tune and "threscheck" calls.  Perhaps the mrtg
> process could remember the previous tune that it performed so as
> not to do it repeated in RunAsDaemon mode.

this might be a a sensible thing to do yes ... actually it does
not have to remember it at all, because the config will not change
after startup, so a single tune run is perfectly sufficient ...


 ______    __   _
/_  __/_  / /  (_) Oetiker @ ISG.EE, ETZ J97, ETH, CH-8092 Zurich
 / // _ \/ _ \/ /  System Manager, Time Lord, Coder, Designer, Coach
/_/ \.__/_.__/_/   http://people.ee.ethz.ch/~oetiker   +41(0)1-632-5286

Unsubscribe mailto:mrtg-developers-request at list.ee.ethz.ch?subject=unsubscribe
Help        mailto:mrtg-developers-request at list.ee.ethz.ch?subject=help
Archive     http://www.ee.ethz.ch/~slist/mrtg-developers

More information about the mrtg-developers mailing list