[rrd-users] Can this script be optimised ?

Simon Hobson linux at thehobsons.co.uk
Wed Nov 28 17:27:32 CET 2012

Pablo Sanchez wrote:

>When I do any optimization, I always instrument and prioritize the
>slowest area of code.
>Looking at the shell script below, there appear to be two areas of
>optimization that you can change:
>1) The while conditional check, and/or
>2) The setting of UpdateVal
>I'll assume the `rrdtool' can't be changed (e.g. the disk the .rrd is
>on isn't the bottleneck.
>Given the above, where's the slowness?  Is it 1) or 2)?

I assume the main bottleneck is forking processes - as you hint, 
there's a fork for the while check, and then several forks to 
get/update the values (I'd expect all the code/external programs to 
remain in cache as there's spare RAM). The code runs OK, and I 
estimate that it takes about 2.5% of the CPU - based on using 'time' 
to get the system and user times for a complete run and dividing by 
The runtimes for those two bits are :

To get the value :
real	0m0.074s
user	0m0.020s
sys	0m0.016s
To run the update (which goes to a remote system, it's not a local RRD file) :
real	0m0.102s
user	0m0.020s
sys	0m0.020s
It's not so much optimising individual bits, it was more a question 
of "does a fresh set of eyes see something that shouts out "that's an 
inefficient way of doing it'". I'd already spotted several areas 
where I was able to improve the code when I came back (after a year 
or two since I first wrote it) and took another look.

Simon Hobson

Visit http://www.magpiesnestpublishing.co.uk/ for books by acclaimed
author Gladys Hobson. Novels - poetry - short stories - ideal as
Christmas stocking fillers. Some available as e-books.

More information about the rrd-users mailing list