<br><font size=2 face="sans-serif">Hello!</font>
<br>
<br><font size=2 face="sans-serif">In the last couple of days, I implemented
an alternative to the rrdcached: A FUSE based linux file system doing essentially
the same as rrdcached.</font>
<br>
<br><font size=2 face="sans-serif">The idea is as follows:</font>
<br>
<br><font size=2 face="sans-serif">- There is a directory hierarchy (the
permanent storage area), that holds RRD files.</font>
<br><font size=2 face="sans-serif">- Another directory hierarchy is used
to keep cached RRD files, I usually put this below /dev/shm (that is, into
a memory based filesystem for extremely fast access), I call this the staging
area.</font>
<br><font size=2 face="sans-serif">- The rrdfs file system provides a layer
above these directories, providing the same view as in permanent storage</font>
<br><font size=2 face="sans-serif">- Updating RRDs is done by writing data
to a special INPUT file in the format</font>
<br>
<br><font size=2 face="sans-serif">&nbsp; FILENAME &lt;SPACE&gt; &lt;timestamp&gt;:&lt;ds-value&gt;:&lt;ds-value&gt;:....</font>
<br>
<br><font size=2 face="sans-serif">- Alternatively, data can be appended
to the RRD file presented over rrdfs. In that case the FILENAME must not
be written.</font>
<br><font size=2 face="sans-serif">- A read access over rrdfs causes data
to be updated to the staging area before handing RRD data to the reader</font>
<br><font size=2 face="sans-serif">- Unlinking the RRD over rrdfs causes
the staged data to be transferred back to permanent storage</font>
<br><font size=2 face="sans-serif">- An optional cleanup thread causes
the RRD updating and transfer from staging to permanent storage from time
to time.</font>
<br><font size=2 face="sans-serif">- plus a log-file is written in a write-ahead
fashion. The log file gets rolled automatically by the cleanup thread.</font>
<br>
<br><font size=2 face="sans-serif">I started the implementation only about
a week ago, without knowing about rrdcached, so I was pretty embarassed
when I found out about it. But I don't want this to be a complete waste
of time. </font>
<br>
<br><font size=2 face="sans-serif">By the way: The thing is fully multithreaded.</font>
<br>
<br><font size=2 face="sans-serif">So far I only tested it in a 1.2.x environment,
1.3 and 1.4 pending. The ONLY RRD API used is rrd_update_r, so I'm pretty
sure there are no real hard problems to solve to get it to work with newer
versions.</font>
<br>
<br><font size=2 face="sans-serif">One nice feature is the immediate availability
of RRD to any programming language that can append to files: no need to
start a new process.</font>
<br>
<br><font size=2 face="sans-serif">Downloads:</font>
<br>
<br><a href="http://oss.stamfest.net/rrdfs-1.0.tar.gz"><font size=2 face="sans-serif">http://oss.stamfest.net/rrdfs/rrdfs-1.0.tar.gz</font></a>
<br>
<br><font size=2 face="sans-serif">Mercurial repo available on request.</font>
<br>
<br><font size=2 face="sans-serif">I would be willing to actually have
this distributed alongside of rrdtool proper. But as I said: It is an alternative
to rrdcached and it only works on linux. I'd be happy to actually hear
thoughts about the usefulness of this beast. Benchmarking results would
also be great.</font>
<br>
<br><font size=2 face="sans-serif">peter</font>
<br>
<br><tt><font size=3><br>
_________________________________________________________________________<br>
Dipl.-Ing. Peter Stamfest &nbsp; &nbsp; UNIX, Networking &amp; Computing
Consultant<br>
Tel: +43/699/10711205 &nbsp; &nbsp; &nbsp; &nbsp; Software Development
- Internetservices<br>
E-Mail: peter@stamfest.at &nbsp; &nbsp; WWW: </font></tt><a href=http://stamfest.at/><tt><font size=3>http://stamfest.at/</font></tt></a><tt><font size=3><br>
</font></tt>