Bruce Morgan | 23 Apr 09:42 2015

RRDGraph Error in 1.5.0 and 1.5.1

Using RRDtool version 1.4.7 I get a graph with the following command
(actually I use RRDs but no matter):
rrdtool graph /tmp/vic-crlt-pe1:25900_day.png --start -24h --end 1429773557
--width 820 --height 350 --title "vic-crlt-pe1 xe-0/0/3.201"  -a PNG
LINE:687_xe_0_0_3_201b#000000: HRULE:0#000000:
PRINT:687_xe_0_0_3_20195:%6.3lf PRINT:o687_xe_0_0_3_20195:%6.3lf
PRINT:687_xe_0_0_3_201av:%6.3lf PRINT:o687_xe_0_0_3_201av:%6.3lf
PRINT:687_xe_0_0_3_201max:%6.3lf PRINT:o687_xe_0_0_3_201max:%6.3lf
PRINT:687_xe_0_0_3_201c:%6.3lf PRINT:o687_xe_0_0_3_201c:%6.3lf
(Continue reading)

Tobias Oetiker | 22 Apr 14:04 2015

[rrd] rrdtool 1.5.1 released

For all those who never install a x.0 version: RRDtool 1.5.1 is out.
Get a copy from

A big thank you to the sponsors who are helping to fund my work on
rrdtool:, and

RRDtool 1.5.1 - 2015-04-22
Bug Fixes
* parse numbers up to 40 characters long ..
* fix install rules for Python and Lua
* include missing VERSION and LICENSE file
* unlink before rename in rrd_create when running on WIN32

Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland tobi <at> +41 62 775 9902
Tobias Oetiker | 16 Apr 23:48 2015

rrdtool version 1.5.0 is out

Finally! RRDtool 1.5.0 is out.
Get a copy from

A big thank you to the sponsors who are helping to fund my work on
rrdtool: and

New Features
* automatic x-axis labels that work from 1s to 30y on a single chart
* librados integration
* new datasource types: DCOUNTER and DDERIVE (they work the same as
  the original DS, except that they can deal with floatingpoint
* compile without graphics libraries: ./configure --disable-rrd_graph
* updated windows port (see WIN32-BUILD-TIPS.txt)
* single step RRAs for MIN,MAX,LAST are generated virtually from
* ignore updates in the past with rrdtool update --skip-past-updates
* ignore a LINE when scaling a chart using the skipscale option
* detect 32bit timeoverflows
* massive performance boost for charts with more than 100 DEF line
* by switching form a linear search to a HASH when searching for data
* improved cross compilation support
* .Net bindings
* allow rrdtool graph to silently skip non-existing source files
  using the --use-nan-for-all-missing-data option
* restore from a pipe (rrdtool restore - y.rrd)
* in rrdtool create, row count and step can be defined in absolute time
* all new "create on steroids" can pull both data and configuration
(Continue reading)

Gaby | 14 Mar 17:00 2015

RRDcached performance issues (from Users mailinglist)

Dear developers, could you take a look at my post in the Users forum?;cid=1426345040002-291

It has no replies, and I'm still very interested in shedding some light on


View this message in context:
Sent from the RRDtool Developers Mailinglist mailing list archive at
Yamei Feng | 21 Jan 22:13 2015

rrdtool compilation in Solaris

Hi All,

I want to compile the rrdtool source tree in Solaris. I would like to 
know which environment variables I need to configure when I run 
./configure? For example how should I set CC, MAKE, PATH?

-- Yamei
Steve Clark | 11 Dec 21:03 2014

threads and rrdcached

Hello List,

I was reading the web page
about using threads and it says to use the _r calls like rrd_update_r().

But in examing the code in rrd_update.c for version 1.4.8
it appears calling rrd_update_r() will bypass the use of rrdcached. Am I understanding this

Also it looks like rrd_update() eventually calls rrd_update_r() if it doesn't use the
rrdcached daemon.
From rrd_update()
    if (! rrdc_is_connected(opt_daemon))
      rc = rrd_update_r(argv[optind], tmplt,
                        argc - optind - 1, (const char **) (argv + optind + 1));
    else /* we are connected */
        rc = rrdc_update (argv[optind], /* file */
                          argc - optind - 1, /* values_num */
                          (const char *const *) (argv + optind + 1)); /* values */
        if (rc > 0)
            rrd_set_error("Failed sending the values to rrdcached: %s",
                          rrd_strerror (rc));


Stephen Clark
NetWolves Managed Services, LLC.
Director of Technology
Phone: 813-579-3200
Fax: 813-882-0209
Email: steve.clark <at>
rrd-developers mailing list
rrd-developers <at>
Eduardo Bragatto | 18 Nov 17:23 2014

Pull requests should go to 1.4 or master?


I have submitted a couple pull requests for the 1.4 branch and today I noticed Tobias created new pull requests for the same changes to the master branch.

Should I have created pull requests for both branches?

Just asking so in the future I can save you some time and do it properly.

- Eduardo Bragatto
rrd-developers mailing list
rrd-developers <at>
Jeroen Massar | 24 Oct 12:29 2014

rrdcached API documentation?

Hola muchachos,

I was checking on adding rrdcached support to the SixXS
statistics daemon[1] to get it a bit out of IO hell...

$ du -hcs rrd
21G	rrd
21G	total

if you get my drift ;) [which might be little for some folks...]

But apart from:

I can't find any API documentation, using those APIs I googled a bit:

A google(rrdc_connect is empty.

A google(rrdc_connect gives only the patches
on the mailinglist.

The Debian librrd-dev does not have anything either and I can't
seem to find it in the source tarballs (see below) unless I am
looking in the wrong location.

Is there a small minimal example application that shows the ropes?

Also, if rrdcached opens the files, how are permissions handled?
Especially when the calling process runs as user X and the daemon
as user Y. Or is it expected that rrdcached runs as X or at least
in the right group?

has nothing about this...


[1] The thing that collects the data for
    but also traffic + latency stats for the individual tunnels

rrdtool-1.4.7$ rgrep rrdc_connect .
./src/rrd_update.c:        int status = rrdc_connect(opt_daemon);
./src/rrd_client.c:static int rrdc_connect_unix (const char *path) /* {{{ */
./src/rrd_client.c:} /* }}} int rrdc_connect_unix */
./src/rrd_client.c:static int rrdc_connect_network (const char *addr_orig) /* {{{ */
./src/rrd_client.c:} /* }}} int rrdc_connect_network */
./src/rrd_client.c:int rrdc_connect (const char *addr) /* {{{ */
./src/rrd_client.c:    status = rrdc_connect_unix (addr + strlen ("unix:"));
./src/rrd_client.c:    status = rrdc_connect_unix (addr);
./src/rrd_client.c:    status = rrdc_connect_network(addr);
./src/rrd_client.c:} /* }}} int rrdc_connect */
./src/rrd_client.c:  rrdc_connect(opt_daemon);
./src/rrd_xport.c:        int status = rrdc_connect(im.daemon_addr);
./src/rrd_graph.c:        int status = rrdc_connect(im->daemon_addr);
./src/rrd_flushcached.c:    status = rrdc_connect(opt_daemon);
./src/rrd_client.h:int rrdc_connect (const char *addr);
./src/rrd_client.h:#	define rrdc_connect(a) 0
./debian/librrd4.symbols: rrdc_connect <at> Base 1.4~rc2
./debian/librrd4.symbols: rrdc_connect <at> Base 1.4~rc2
Tugrul Erdogan | 12 Sep 08:28 2014

Rrdtool fetch performance difference between Linux and Freebsd


I am porting a project which is developed and used on FreeBSD 10 to Linux. After porting rrdtool funuctionalities, I realized that periodic "rrdtool fetch" calls on CentOS 7 spends two times more time than on FreeBSD. The rrdtool version on FreeBSD is 1.4.7 and on Linux 1.4.8 . 

To examine the situation more deeply, I have transfer same rrd file to FreeBSD and I have write a bash script which reports start and end times of 500 "rrdtool fetch" call with same parameters on same rrd file. The results show that "rrdtool fetch" call on Linux is two times slower than "rrdtool fetch" call on Linux.

What can be the cause of this performance decreasing? How can I improve the perfomance of "rrdtool fetch" call on Linux to make it as fast as FreeBSD "rrdtool fetch" call performance?
rrd-developers mailing list
rrd-developers <at>
Peter | 7 Jul 23:25 2014

RRDCached on Windows

is a rrdchached windows service available?
If not, has someone built it from rrd_daemon.c?

View this message in context:
Sent from the RRDtool Developers Mailinglist mailing list archive at
Maciek Kolbusz | 27 Jun 08:09 2014

Proposing a new instruction for rrdraph: DSN

Hello List,

I migrated my growing collection of RRD files to MySQL several months ago and it really reduced the IO load on the data collecting host as well as improved the speed of drawing graphs. A new problem I faced was that the length of rrdgraph commands increased due to longer DEF statements - with sql/ notation on average the length of a single DEF statement is about 250 characters. I have scripts that generate rrdgraph commands to draw complex graphs with tens or sometimes hundreds of DEFs, CDEFs, GPRINTs for formatted legends etc. and many times it happened that rrdgraph failed to generate a picture, because the command was too long (the length limit on my system is 130k characters). It would help to avoid this issue and shorten the command length if it was possible to define a DSN (Data Source Name) and reuse it in DEFs, ie.:

rrdtool graph ... \
DSN:dsn1=sql//mysql/ \
... \
DEF:defA=dsn1/rrdminstepsize=60/TABLE_A/timestamp/value/RRDKeyID='"keyA'":avg:AVERAGE \
DEF:defB=dsn1/rrdminstepsize=60/TABLE_B/timestamp/value/RRDKeyID='"keyB'":avg:AVERAGE \
DEF:defC=dsn1/rrdminstepsize=60/TABLE_C/timestamp/value/RRDKeyID='"keyC'":avg:AVERAGE \

It's debatable what elements should be included in DSN and what should be left for DEF, however I would suggest that DSN only contained host, port, dbname, dbuser and password, because one database can have multiple tables with different step sizes, so the in DEFs it would be possible to use different tables in the same DB referring to the same DSN, but giving different step sizes and table names.

Another feature that I think would be very useful is reading DSN from files: store DSN definition in a text file and then point to this file in the command, ie.:

rrdtool graph ... \
DSN:dsn1=file:///path/to/file \

This way DB credentials would be better protected as there would be no risk that they appear in the commands and later in application logs or elsewhere in the system where other users could see them.

Please share your thoughts and comments on this feature.

Maciek Kolbusz
rrd-developers mailing list
rrd-developers <at>