PSINet/Cogent Latency

Richard A Steenbergen ras at e-gerbil.net
Tue Jul 23 06:40:10 UTC 2002


On Tue, Jul 23, 2002 at 02:25:36AM -0400, Phil Rosenthal wrote:
> I have a small RRD project box that polls 200 interfaces and has it
> takes 1 minute, 5 seconds to run with 60%  cpu usage (so obviously it
> can be streamlined if I wanted to work on it). I guess the limit in this
> implementation is 1000 interfaces per box in this setup -- but I see
> most of the CPU usage is in the forking of snmpget over and over.  Im
> sure I could write a small program in C that could do this at least 10X
> more efficiently.  That's 10,000 interfaces with RRD on one intel -- if
> you are determined to do it.

10x? Wanna try a higher order of magnitude?

While you're at it, eliminate the forking to the rrdtool bin when you're
adding data. A little thought and profiling goes a long way, this is
simple number crunching we're talking about, not supercomputer work. The
problem comes from the perl mentality (why is there no C lib for
efficiently adding to an rrd db? because they're expecting everyone to
call it from perl :P), "it's good enough for my couple boxes and you can
throw more machines at it".

But again, I have no doubt that if you designed it properly you could 
throw lots of snmp queries and scale decently to a nice sized core 
network, I've seen it done. The problem is potential communication loss 
between the poller and the device, and the amount of work that the device 
(which usually isn't running gods gift to any code let alone snmp code) 
has to do for higher sampling rates with many interfaces.

-- 
Richard A Steenbergen <ras at e-gerbil.net>       http://www.e-gerbil.net/ras
PGP Key ID: 0x138EA177  (67 29 D7 BC E8 18 3E DA  B2 46 B3 D8 14 36 FE B6)



More information about the NANOG mailing list