Code

Imported upstream version 1.4~rc2.
[pkg-rrdtool.git] / doc / rrdcached.txt
diff --git a/doc/rrdcached.txt b/doc/rrdcached.txt
new file mode 100644 (file)
index 0000000..32d3674
--- /dev/null
@@ -0,0 +1,498 @@
+RRDCACHED(1)                        rrdtool                       RRDCACHED(1)
+
+
+
+N\bNA\bAM\bME\bE
+       rrdcached - Data caching daemon for rrdtool
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+       r\brr\brd\bdc\bca\bac\bch\bhe\bed\bd [-\b-l\bl/\b/-\b-L\bL _\ba_\bd_\bd_\br_\be_\bs_\bs] [-\b-w\bw _\bt_\bi_\bm_\be_\bo_\bu_\bt] [-\b-z\bz _\bd_\be_\bl_\ba_\by] [-\b-f\bf _\bt_\bi_\bm_\be_\bo_\bu_\bt]
+       [-\b-p\bp _\bp_\bi_\bd_\b__\bf_\bi_\bl_\be] [-\b-t\bt _\bw_\br_\bi_\bt_\be_\b__\bt_\bh_\br_\be_\ba_\bd_\bs] [-\b-j\bj _\bj_\bo_\bu_\br_\bn_\ba_\bl_\b__\bd_\bi_\br] [-F] [-g]
+       [-\b-b\bb _\bb_\ba_\bs_\be_\b__\bd_\bi_\br [-\b-B\bB]]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       r\brr\brd\bdc\bca\bac\bch\bhe\bed\bd is a daemon that receives updates to existing RRD files,
+       accumulates them and, if enough have been received or a defined time
+       has passed, writes the updates to the RRD file. A _\bf_\bl_\bu_\bs_\bh command may be
+       used to force writing of values to disk, so that graphing facilities
+       and similar can work with up-to-date data.
+
+       The daemon was written with big setups in mind. Those setups usually
+       run into IO related problems sooner or later for reasons that are
+       beyond the scope of this document. Check the wiki at the RRDTool home-
+       page for details. Also check "SECURITY CONSIDERATIONS" below before
+       using this daemon! A detailed description of how the daemon operates
+       can be found in the "HOW IT WORKS" section below.
+
+O\bOP\bPT\bTI\bIO\bON\bNS\bS
+       -\b-l\bl _\ba_\bd_\bd_\br_\be_\bs_\bs
+           Tells the daemon to bind to _\ba_\bd_\bd_\br_\be_\bs_\bs and accept incoming connections
+           on that socket. If _\ba_\bd_\bd_\br_\be_\bs_\bs begins with "unix:", everything follow-
+           ing that prefix is interpreted as the path to a UNIX domain socket.
+           Otherwise the address or node name are resolved using getaddrinfo.
+
+           For network sockets, a port may be specified by using the form
+           "[address]:port". If the address is an IPv4 address or a fully
+           qualified domain name (i. e. the address contains at least one dot
+           (".")), the square brackets can be omitted, resulting in the (sim-
+           pler) "address:port" pattern.. The default port is 4\b42\b22\b21\b17\b7/\b/u\bud\bdp\bp.
+
+           The following formats are accepted. Please note that the address of
+           the UNIX domain socket m\bmu\bus\bst\bt start with a slash in the second case!
+
+              unix:</path/to/unix.sock>
+              /<path/to/unix.sock>
+              <hostname-or-ip>
+              [<hostname-or-ip>]:<port>
+              <hostname-or-ipv4>:<port>
+
+           If the -\b-l\bl option is not specified the default address,
+           "unix:/tmp/rrdcached.sock", will be used.
+
+       -\b-L\bL _\ba_\bd_\bd_\br_\be_\bs_\bs
+           Same as -\b-l\bl, except creates a low-privilege socket.  See S\bSE\bEC\bCU\bUR\bRI\bIT\bTY\bY
+           C\bCO\bON\bNS\bSI\bID\bDE\bER\bRA\bAT\bTI\bIO\bON\bNS\bS for more information.
+
+       -\b-w\bw _\bt_\bi_\bm_\be_\bo_\bu_\bt
+           Data is written to disk every _\bt_\bi_\bm_\be_\bo_\bu_\bt seconds. If this option is
+           not specified the default interval of 300 seconds will be used.
+
+       -\b-z\bz _\bd_\be_\bl_\ba_\by
+           If specified, rrdcached will delay writing of each RRD for a random
+           number of seconds in the range [0,_\bd_\be_\bl_\ba_\by).  This will avoid too many
+           writes being queued simultaneously.  This value should be no
+           greater than the value specified in -\b-w\bw.  By default, there is no
+           delay.
+
+       -\b-f\bf _\bt_\bi_\bm_\be_\bo_\bu_\bt
+           Every _\bt_\bi_\bm_\be_\bo_\bu_\bt seconds the entire cache is searched for old values
+           which are written to disk. This only concerns files to which
+           updates have stopped, so setting this to a high value, such as
+           3600 seconds, is acceptable in most cases. This timeout defaults to
+           3600 seconds.
+
+       -\b-p\bp _\bf_\bi_\bl_\be
+           Sets the name and location of the PID-file. If not specified, the
+           default, "$localststedir/run/rrdcached.pid" will be used.
+
+       -\b-t\bt _\bw_\br_\bi_\bt_\be_\b__\bt_\bh_\br_\be_\ba_\bd_\bs
+           Specifies the number of threads used for writing RRD files.  The
+           default is 4.  Increasing this number will allow rrdcached to have
+           more simultaneous I/O requests into the kernel.  This may allow the
+           kernel to re-order disk writes, resulting in better disk through-
+           put.
+
+       -\b-j\bj _\bd_\bi_\br
+           Write updates to a journal in _\bd_\bi_\br.  In the event of a program or
+           system crash, this will allow the daemon to write any updates that
+           were pending at the time of the crash.
+
+           On startup, the daemon will check for journal files in this direc-
+           tory.  If found, all updates therein will be read into memory
+           before the daemon starts accepting new connections.
+
+           The journal will be rotated with the same frequency as the flush
+           timer given by -\b-f\bf.
+
+           When journaling is enabled, the daemon will use a fast shutdown
+           procedure.  Rather than flushing all files to disk, it will make
+           sure the journal is properly written and exit immediately.
+           Although the RRD data files are not fully up-to-date, no informa-
+           tion is lost; all pending updates will be replayed from the journal
+           next time the daemon starts up.
+
+           To disable fast shutdown, use the -\b-F\bF option.
+
+       -\b-F\bF  ALWAYS flush all updates to the RRD data files when the daemon is
+           shut down, regardless of journal setting.
+
+       -\b-g\bg  Run in the foreground.  The daemon will not _\bf_\bo_\br_\bk_\b(_\b).
+
+       -\b-b\bb _\bd_\bi_\br
+           The daemon will change into a specific directory at startup. All
+           files passed to the daemon, that are specified by a r\bre\bel\bla\bat\bti\biv\bve\be path,
+           will be interpreted to be relative to this directory. If not given
+           the default, "/tmp", will be used.
+
+             +------------------------+------------------------+
+             ! Command line           ! File updated           !
+             +------------------------+------------------------+
+             ! foo.rrd                ! /tmp/foo.rrd           !
+             ! foo/bar.rrd            ! /tmp/foo/bar.rrd       !
+             ! /var/lib/rrd/foo.rrd   ! /var/lib/rrd/foo.rrd   !
+             +------------------------+------------------------+
+             Paths given on the command  line and paths actually
+             updated by the daemon,  assuming the base directory
+             "/tmp".
+
+           W\bWA\bAR\bRN\bNI\bIN\bNG\bG:\b: The paths up to and including the base directory M\bMU\bUS\bST\bT N\bNO\bOT\bT
+           B\bBE\bE symbolic links.  In other words, if the base directory is speci-
+           fied as:
+
+               -b /base/dir/somewhere
+
+           ... then N\bNO\bON\bNE\bE of the following should be symbolic links:
+
+               /base
+               /base/dir
+               /base/dir/somewhere
+
+       -\b-B\bB  Only permit writes into the base directory specified in -\b-b\bb (and any
+           sub-directories).  This does N\bNO\bOT\bT detect symbolic links.  Paths con-
+           taining "../" will also be blocked.
+
+A\bAF\bFF\bFE\bEC\bCT\bTE\bED\bD R\bRR\bRD\bDT\bTO\bOO\bOL\bL C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
+       The following commands may be made aware of the r\brr\brd\bdc\bca\bac\bch\bhe\bed\bd using the
+       command line argument -\b--\b-d\bda\bae\bem\bmo\bon\bn or the environment variable R\bRR\bRD\bD-\b-
+       C\bCA\bAC\bCH\bHE\bED\bD_\b_A\bAD\bDD\bDR\bRE\bES\bSS\bS:
+
+       d\bdu\bum\bmp\bp
+       f\bfe\bet\btc\bch\bh
+       f\bfl\blu\bus\bsh\bh
+       g\bgr\bra\bap\bph\bh
+       g\bgr\bra\bap\bph\bhv\bv
+       i\bin\bnf\bfo\bo
+       l\bla\bas\bst\bt
+       l\bla\bas\bst\btu\bup\bpd\bda\bat\bte\be
+       u\bup\bpd\bda\bat\bte\be
+       x\bxp\bpo\bor\brt\bt
+
+       The u\bup\bpd\bda\bat\bte\be command can send values to the daemon instead of writing
+       them to the disk itself. All other commands can send a F\bFL\bLU\bUS\bSH\bH command
+       (see below) to the daemon before accessing the files, so they work with
+       up-to-date data even if the cache timeout is large.
+
+E\bER\bRR\bRO\bOR\bR R\bRE\bEP\bPO\bOR\bRT\bTI\bIN\bNG\bG
+       The daemon reports errors in one of two ways: During startup, error
+       messages are printed to "STDERR". One of the steps when starting up is
+       to fork to the background and closing "STDERR" - after this writing
+       directly to the user is no longer possible. Once this has happened, the
+       daemon will send log messages to the system logging daemon using _\bs_\by_\bs_\b-
+       _\bl_\bo_\bg(3). The facility used is "LOG_DAEMON".
+
+H\bHO\bOW\bW I\bIT\bT W\bWO\bOR\bRK\bKS\bS
+       When receiving an update, r\brr\brd\bdc\bca\bac\bch\bhe\bed\bd does not write to disk but looks
+       for an entry for that file in its internal tree. If not found, an entry
+       is created including the current time (called "First" in the diagram
+       below). This time is n\bno\bot\bt the time specified on the command line but the
+       time the operating system considers to be "now". The value and time of
+       the value (called "Time" in the diagram below) are appended to the tree
+       node.
+
+       When appending a value to a tree node, it is checked whether it's time
+       to write the values to disk. Values are written to disk if
+       "now() - First >= timeout", where "timeout" is the timeout specified
+       using the -\b-w\bw option, see OPTIONS. If the values are "old enough" they
+       will be enqueued in the "update queue", i. e. they will be appended to
+       the linked list shown below.  Because the tree nodes and the elements
+       of the linked list are the same data structures in memory, any update
+       to a file that has already been enqueued will be written with the next
+       write to the RRD file, too.
+
+       A separate "update thread" constantly dequeues the first element in the
+       update queue and writes all its values to the appropriate file. So as
+       long as the update queue is not empty files are written at the highest
+       possible rate.
+
+       Since the timeout of files is checked only when new values are added to
+       the file, "dead" files, i. e. files that are not updated anymore, would
+       never be written to disk. Therefore, every now and then, controlled by
+       the -\b-f\bf option, the entire tree is walked and all "old" values are
+       enqueued. Since this only affects "dead" files and walking the tree is
+       relatively expensive, you should set the "flush interval" to a reason-
+       ably high value. The default is 3600 seconds (one hour).
+
+       The downside of caching values is that they won't show up in graphs
+       generated from the RRD files. To get around this, the daemon provides
+       the "flush command" to flush specific files. This means that the file
+       is inserted at the h\bhe\bea\bad\bd of the update queue or moved there if it is
+       already enqueued. The flush command will return only after the file's
+       pending updates have been written to disk.
+
+        +------+   +------+                               +------+
+        ! head !   ! root !                               ! tail !
+        +---+--+   +---+--+                               +---+--+
+            !         /\                                      !
+            !        /  \                                     !
+            !       /\  /\                                    !
+            !      /\/\ \ `----------------- ... --------,    !
+            V     /      `-------,                       !    V
+        +---+----+---+    +------+-----+             +---+----+---+
+        ! File:  foo !    ! File:  bar !             ! File:  qux !
+        ! First: 101 !    ! First: 119 !             ! First: 180 !
+        ! Next:&bar -+--->! Next:&... -+---> ... --->! Next:NULL  !
+        | Prev:NULL  !<---+-Prev:&foo  !<--- ... ----+-Prev: &... !
+        +============+    +============+             +============+
+        ! Time:  100 !    ! Time:  120 !             ! Time:  180 !
+        ! Value:  10 !    ! Value: 0.1 !             ! Value: 2,2 !
+        +------------+    +------------+             +------------+
+        ! Time:  110 !    ! Time:  130 !             ! Time:  190 !
+        ! Value:  26 !    ! Value: 0.1 !             ! Value: 7,3 !
+        +------------+    +------------+             +------------+
+        :            :    :            :             :            :
+        +------------+    +------------+             +------------+
+        ! Time:  230 !    ! Time:  250 !             ! Time:  310 !
+        ! Value:  42 !    ! Value: 0.2 !             ! Value: 1,2 !
+        +------------+    +------------+             +------------+
+
+       The above diagram demonstrates:
+
+       ·   Files/values are stored in a (balanced) tree.
+
+       ·   Tree nodes and entries in the update queue are the same data struc-
+           ture.
+
+       ·   The local time ("First") and the time specified in updates ("Time")
+           may differ.
+
+       ·   Timed out values are inserted at the "tail".
+
+       ·   Explicitly flushed values are inserted at the "head".
+
+       ·   ASCII art rocks.
+
+S\bSE\bEC\bCU\bUR\bRI\bIT\bTY\bY C\bCO\bON\bNS\bSI\bID\bDE\bER\bRA\bAT\bTI\bIO\bON\bNS\bS
+       The client/server protocol does not have any authentication or autho-
+       rization mechanism.  Therefore, take care to restrict which users can
+       connect to the daemon.
+
+       Control sockets are divided into high-privilege (-\b-l\bl) and low-privilege
+       (-\b-L\bL) sockets.  High-privilege sockets accept all commands, whereas low-
+       privilege sockets accept only F\bFL\bLU\bUS\bSH\bH, S\bST\bTA\bAT\bTS\bS, and H\bHE\bEL\bLP\bP.
+
+       For a multi-user environment where only certain users require
+       read/write access, the recommended configuration uses two sockets as
+       follows:
+
+       -\b-l\bl _\b/_\bp_\br_\bo_\bt_\be_\bc_\bt_\be_\bd_\b/_\bd_\bi_\br_\b/_\br_\br_\bd_\b._\bs_\bo_\bc_\bk
+           Create a high-privilege unix-domain socket.  This should be pro-
+           tected with the same Unix permissions that are used to protect the
+           RRD files.  Updates should be directed to this socket.
+
+       -\b-L\bL _\b1_\b2_\b7_\b._\b0_\b._\b0_\b._\b1
+           Create a low-privilege TCP socket listening on localhost.  All
+           users on the local system may use this to trigger FLUSH of individ-
+           ual files.  Users with read-only access should be directed to this
+           socket.
+
+       If you (want to) use the network capability, i. e. let the daemon bind
+       to an IPv4 or IPv6 socket, it is y\byo\bou\bur\br job to install a packet filter or
+       similar mechanism to prevent unauthorized connections. Unless you have
+       a dedicated VLAN or VPN for this, using the network option is probably
+       a bad idea!
+
+       The daemon will blindly write to any file it gets told, so you really
+       should create a separate user just for this daemon. Also it does not do
+       any sanity checks, so if it gets told to write values for a time far in
+       the future, your files will be messed up good!
+
+       You have been warned.
+
+P\bPR\bRO\bOT\bTO\bOC\bCO\bOL\bL
+       The daemon communicates with clients using a line based ASCII protocol
+       which is easy to read and easy to type. This makes it easy for scripts
+       to implement the protocol and possible for users to use telnet to con-
+       nect to the daemon and test stuff "by hand".
+
+       The protocol is line based, this means that each record consists of one
+       or more lines. A line is terminated by the line feed character 0x0A,
+       commonly written as "\n". In the examples below, this character will be
+       written as "<LF>" ("line feed").
+
+       After the connection has been established, the client is expected to
+       send a "command". A command consists of the command keyword, possibly
+       some arguments, and a terminating newline character. For a list of com-
+       mands, see "Valid Commands" below.
+
+       Example:
+
+         FLUSH /tmp/foo.rrd<LF>
+
+       The daemon answers with a line consisting of a status code and a short
+       status message, separated by one or more space characters. A negative
+       status code signals an error, a positive status code or zero signal
+       success. If the status code is greater than zero, it indicates the num-
+       ber of lines that follow the status line.
+
+       Examples:
+
+        0 Success<LF>
+
+        2 Two lines follow<LF>
+        This is the first line<LF>
+        And this is the second line<LF>
+
+       V\bVa\bal\bli\bid\bd C\bCo\bom\bmm\bma\ban\bnd\bds\bs
+
+       The following commands are understood by the daemon:
+
+       F\bFL\bLU\bUS\bSH\bH _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be
+           Causes the daemon to put _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be to the h\bhe\bea\bad\bd of the update queue
+           (possibly moving it there if the node is already enqueued). The
+           answer will be sent a\baf\bft\bte\ber\br the node has been dequeued.
+
+       F\bFL\bLU\bUS\bSH\bHA\bAL\bLL\bL
+           Causes the daemon to start flushing ALL pending values to disk.
+           This returns immediately, even though the writes may take a long
+           time.
+
+       P\bPE\bEN\bND\bDI\bIN\bNG\bG _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be
+           Shows any "pending" updates for a file, in order.  The updates
+           shown have not yet been written to the underlying RRD file.
+
+       F\bFO\bOR\bRG\bGE\bET\bT _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be
+           Removes _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be from the cache.  Any pending updates W\bWI\bIL\bLL\bL B\bBE\bE L\bLO\bOS\bST\bT.
+
+       Q\bQU\bUE\bEU\bUE\bE
+           Shows the files that are on the output queue.  Returns zero or more
+           lines in the following format, where <num_vals> is the number of
+           values to be written for the <file>:
+
+               <num_vals> <file>
+
+       H\bHE\bEL\bLP\bP [_\bc_\bo_\bm_\bm_\ba_\bn_\bd]
+           Returns a short usage message. If no command is given, or _\bc_\bo_\bm_\bm_\ba_\bn_\bd
+           is H\bHE\bEL\bLP\bP, a list of commands supported by the daemon is returned.
+           Otherwise a short description, possibly containing a pointer to a
+           manual page, is returned.  Obviously, this is meant for interactive
+           usage and the format in which the commands and usage summaries are
+           returned is not well defined.
+
+       S\bST\bTA\bAT\bTS\bS
+           Returns a list of metrics which can be used to measure the daemons
+           performance and check its status. For a description of the values
+           returned, see "Performance Values" below.
+
+           The format in which the values are returned is similar to many
+           other line based protocols: Each value is printed on a separate
+           line, each consisting of the name of the value, a colon, one or
+           more spaces and the actual value.
+
+           Example:
+
+            9 Statistics follow
+            QueueLength: 0
+            UpdatesReceived: 30
+            FlushesReceived: 2
+            UpdatesWritten: 13
+            DataSetsWritten: 390
+            TreeNodesNumber: 13
+            TreeDepth: 4
+            JournalBytes: 190
+            JournalRotate: 0
+
+       U\bUP\bPD\bDA\bAT\bTE\bE _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be _\bv_\ba_\bl_\bu_\be_\bs [_\bv_\ba_\bl_\bu_\be_\bs ...]
+           Adds more data to a filename. This is t\bth\bhe\be operation the daemon was
+           designed for, so describing the mechanism again is unnecessary.
+           Read "HOW IT WORKS" above for a detailed explanation.
+
+           Note that rrdcached only accepts absolute timestamps in the update
+           values.  Updates strings like "N:1:2:3" are automatically converted
+           to absolute time by the RRD client library before sending to rrd-
+           cached.
+
+       W\bWR\bRO\bOT\bTE\bE _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be
+           This command is written to the journal after a file is successfully
+           written out to disk.  It is used during journal replay to determine
+           which updates have already been applied.  It is _\bo_\bn_\bl_\by valid in the
+           journal; it is not accepted from the other command channels.
+
+       B\bBA\bAT\bTC\bCH\bH
+           This command initiates the bulk load of multiple commands.  This is
+           designed for installations with extremely high update rates, since
+           it permits more than one command to be issued per _\br_\be_\ba_\bd_\b(_\b) and
+           _\bw_\br_\bi_\bt_\be_\b(_\b).
+
+           All commands are executed just as they would be if given individu-
+           ally, except for output to the user.  Messages indicating success
+           are suppressed, and error messages are delayed until the client is
+           finished.
+
+           Command processing is finished when the client sends a dot (".") on
+           its own line.  After the client has finished, the server responds
+           with an error count and the list of error messages (if any).  Each
+           error messages indicates the number of the command to which it cor-
+           responds, and the error message itself.  The first user command
+           after B\bBA\bAT\bTC\bCH\bH is command number one.
+
+               client:  BATCH
+               server:  0 Go ahead.  End with dot '.' on its own line.
+               client:  UPDATE x.rrd 1223661439:1:2:3            <--- command #1
+               client:  UPDATE y.rrd 1223661440:3:4:5            <--- command #2
+               client:  and so on...
+               client:  .
+               server:  2 Errors
+               server:  1 message for command 1
+               server:  12 message for command 12
+
+       Q\bQU\bUI\bIT\bT
+           Disconnect from rrdcached.
+
+       P\bPe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be V\bVa\bal\blu\bue\bes\bs
+
+       The following counters are returned by the S\bST\bTA\bAT\bTS\bS command:
+
+       Q\bQu\bue\beu\bue\beL\bLe\ben\bng\bgt\bth\bh _\b(_\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd _\b6_\b4_\bb_\bi_\bt _\bi_\bn_\bt_\be_\bg_\be_\br_\b)
+           Number of nodes currently enqueued in the update queue.
+
+       U\bUp\bpd\bda\bat\bte\bes\bsR\bRe\bec\bce\bei\biv\bve\bed\bd _\b(_\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd _\b6_\b4_\bb_\bi_\bt _\bi_\bn_\bt_\be_\bg_\be_\br_\b)
+           Number of UPDATE commands received.
+
+       F\bFl\blu\bus\bsh\bhe\bes\bsR\bRe\bec\bce\bei\biv\bve\bed\bd _\b(_\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd _\b6_\b4_\bb_\bi_\bt _\bi_\bn_\bt_\be_\bg_\be_\br_\b)
+           Number of FLUSH commands received.
+
+       U\bUp\bpd\bda\bat\bte\bes\bsW\bWr\bri\bit\btt\bte\ben\bn _\b(_\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd _\b6_\b4_\bb_\bi_\bt _\bi_\bn_\bt_\be_\bg_\be_\br_\b)
+           Total number of updates, i. e. calls to "rrd_update_r", since the
+           daemon was started.
+
+       D\bDa\bat\bta\baS\bSe\bet\bts\bsW\bWr\bri\bit\btt\bte\ben\bn _\b(_\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd _\b6_\b4_\bb_\bi_\bt _\bi_\bn_\bt_\be_\bg_\be_\br_\b)
+           Total number of "data sets" written to disk since the daemon was
+           started. A data set is one or more values passed to the U\bUP\bPD\bDA\bAT\bTE\bE com-
+           mand. For example: "1223661439:123:456" is one data set with two
+           values. The term "data set" is used to prevent confusion whether
+           individual values or groups of values are counted.
+
+       T\bTr\bre\bee\beN\bNo\bod\bde\bes\bsN\bNu\bum\bmb\bbe\ber\br _\b(_\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd _\b6_\b4_\bb_\bi_\bt _\bi_\bn_\bt_\be_\bg_\be_\br_\b)
+           Number of nodes in the cache.
+
+       T\bTr\bre\bee\beD\bDe\bep\bpt\bth\bh _\b(_\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd _\b6_\b4_\bb_\bi_\bt _\bi_\bn_\bt_\be_\bg_\be_\br_\b)
+           Depth of the tree used for fast key lookup.
+
+       J\bJo\bou\bur\brn\bna\bal\blB\bBy\byt\bte\bes\bs _\b(_\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd _\b6_\b4_\bb_\bi_\bt _\bi_\bn_\bt_\be_\bg_\be_\br_\b)
+           Total number of bytes written to the journal since startup.
+
+       J\bJo\bou\bur\brn\bna\bal\blR\bRo\bot\bta\bat\bte\be _\b(_\bu_\bn_\bs_\bi_\bg_\bn_\be_\bd _\b6_\b4_\bb_\bi_\bt _\bi_\bn_\bt_\be_\bg_\be_\br_\b)
+           Number of times the journal has been rotated since startup.
+
+S\bSI\bIG\bGN\bNA\bAL\bLS\bS
+       SIGINT and SIGTERM
+           The daemon exits normally on receipt of either of these signals.
+           Pending updates are handled in accordance with the -\b-j\bj and -\b-F\bF
+           options.
+
+       SIGUSR1
+           The daemon exits AFTER flushing all updates out to disk.  This may
+           take a while.
+
+       SIGUSR2
+           The daemon exits immediately, without flushing updates out to disk.
+           Pending updates will be replayed from the journal when the daemon
+           starts up again.  W\bWA\bAR\bRN\bNI\bIN\bNG\bG:\b: i\bif\bf j\bjo\bou\bur\brn\bna\bal\bli\bin\bng\bg (\b(-\b-j\bj)\b) i\bis\bs N\bNO\bOT\bT e\ben\bna\bab\bbl\ble\bed\bd,\b, a\ban\bny\by
+           p\bpe\ben\bnd\bdi\bin\bng\bg u\bup\bpd\bda\bat\bte\bes\bs W\bWI\bIL\bLL\bL B\bBE\bE L\bLO\bOS\bST\bT.
+
+B\bBU\bUG\bGS\bS
+       No known bugs at the moment.
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+       rrdtool, rrdgraph
+
+A\bAU\bUT\bTH\bHO\bOR\bR
+       r\brr\brd\bdc\bca\bac\bch\bhe\bed\bd and this manual page have been written by Florian Forster
+       <octo at verplant.org>.
+
+C\bCO\bON\bNT\bTR\bRI\bIB\bBU\bUT\bTO\bOR\bRS\bS
+       kevin brintnall <kbrint@rufus.net>
+
+
+
+1.3.99909060808                   2009-04-09                      RRDCACHED(1)