Features for RRDtool 1.3

Multiplicative Holt-Winters Forecasting

Evan Miller of IMVU added support for multiplicative Holt-Winters:

There are two popular variants of the Holt-Winters forecasting method; RRDtool supports the "additive" method, which means that seasonal variation is simply added to the baseline. For our application, it would be more appropriate to use the "multiplicative" Holt-Winters method, where seasonal variation is a coefficient multiplied by the baseline. Quick example to illustrate the difference: if the average doubles season-over-season, the additive method would predict the delta between min and max to be constant, whereas the multiplicative method would predict the delta to double as well.


The whole IO subsystem has been redone by Bernhard Fischer. It can now uses MMAPed IO for all RRD file access and uses madvise extensively to help the kernel with cache handling.

The net effect is that in-memory updates are about twice as fast as before. My CoreDuo? Thinkpad was able to do 12k updates per second (in memory) with the 1.2 code base. With the 1.3 code base it is able to do 22k updates per second (in memory).

Obviously RRD data has to go to disk eventually, there has not been all that much change, since the OS still has to write the blocks. My 5400 RPM Thinkpad HD continues to run at about 250 RRD updates per second.

Since we are now telling the kernel that we will not read/write the whole RRD file but just some blocks of it (random access) the disk access could be optimized and cache usage generally reduced. The number of RRD files that can be kept in cache at any one time is 3 to 5 times as large in 1.3 as in 1.2.

Graphing with Cairo/Pango?

No more libart, no more strange error messages about stability. The switch to Cairo makes for a number of neat new features:

  • --graph-render-mode=mono brings back the rrdtool 1.0.x look and feel
    All antialiasing can be disabled ... font and graph seperately.
    . The anti aliasing can be configured for graph and fonts separately.
  • full grid-fitting of all drawing operations makes for crisper looking graph output even when anti aliasing is active.
    Antialiased and grid fitted demo graph.
    The test graph rendered by rrdtool 1.2.23
  • PDF, SVG and EPS output are now created through cairo. The most striking difference here is that you can use the same fonts as in PNG output. A sample file is attached below.

We now use Pango for all text rendering. Pango integrates with Cairo, Freetype and Fontconfig. This has a number of implications:

  • Fonts are accessed through the fontconfig interface. This means you get access to all fonts on your system, and at the same time loose the ability to use true type fonts directly.
  • All text is passed through Pango Markup. This means it is now possible to switch font properties inside any rrdtool graph text field.

New graphv Interface

With web applications becoming more interactive, the need for additional information about the graphs generated with rrdtool has grown. The new graphv interface works in the same way as rrd_info except that it returns a lot of meta information about the graph. If the name of the graph is '-' then even the graph itself will be returned via the new interface. With these features the new graphv function will build the basis for a new bread of interactive rrdtool applications.

Other Enhancements

The TEXTALIGN command lets you specify how the legend of the graph should be aligned by default.
Lets you use a simple markup language in the rrdtool graph text strings.
beginnings of c api
If you want to use rrdtool directly from your c program, have a look at rrd.h it documents all public functions.
libxml for rrd restore
rrdtool restore now uses libxml for parsing its input. This makes it more tolerant.
Last modified 15 years ago Last modified on Jun 11, 2008, 1:22:28 AM

Attachments (4)

Download all attachments as: .zip

NOTE: The content of this website is accessible with any browser. The graphical design though relies completely on CSS2 styles. If you see this text, this means that your browser does not support CSS2. Consider upgrading to a standard conformant browser like Mozilla Firefox or Opera but also Apple's Safari or KDE's Konqueror for example. It may also be that you are looking at a mirror page which did not copy the CSS for this page. Or if some pictu res are missing, then the mirror may not have picked up the contents of the inc directory.