## Process this file with automake to produce Makefile.in
-SUFFIXES = .pod .1 .man .html .txt .pm .pdf .src .inc
+SUFFIXES = .pod .1 .man .html .txt .pm .pdf .inc
#AUTOMAKE_OPTIONS = foreign
#ACLOCAL_M4 = $(top_srcdir)/config/aclocal.m4
-CLEANFILES = *.1 *.html *.txt *-dircache *.pm *.pdf *~ core *itemcache *.rej *.orig rrdgraph_*.pod *.tmp rrdgraph.pod
+CLEANFILES = *.1 *.html *.txt *-dircache RRD?.pod *.pdf *~ core *itemcache *.rej *.orig *.tmp
-SRC = rrdgraph.src rrdgraph_examples.src rrdgraph_rpn.src \
- rrdgraph_data.src rrdgraph_graph.src
+POD = bin_dec_hex.pod rrddump.pod rrdgraph_examples.pod rrdrestore.pod rrdupdate.pod \
+ cdeftutorial.pod rrdfetch.pod rrdgraph_graph.pod rrdthreads.pod rrdxport.pod \
+ rpntutorial.pod rrdfirst.pod rrdgraph_rpn.pod rrdtool.pod \
+ rrd-beginners.pod rrdinfo.pod rrdtune.pod \
+ rrdcgi.pod rrdgraph.pod rrdlast.pod \
+ rrdcreate.pod rrdgraph_data.pod rrdresize.pod rrdtutorial.pod
-PODOLD = rrdgraph-old.pod
-POD = rrdtool.pod rrdlast.pod rrdfirst.pod rrdcreate.pod rrdupdate.pod rrdtutorial.es.pod \
- cdeftutorial.pod rpntutorial.pod rrdthreads.pod bin_dec_hex.pod \
- rrdfetch.pod rrdrestore.pod rrddump.pod rrdtune.pod rrdresize.pod \
- rrdcgi.pod rrdtutorial.pod rrdinfo.pod rrdxport.pod rrd-beginners.pod \
- $(SRC:.src=.pod)
+PMP = RRDs.pod RRDp.pod
-PMP = RRDs.pm RRDp.pm
-
-MAN = $(POD:.pod=.1) $(PMP:.pm=.1)
+MAN = $(POD:.pod=.1)
TXT = $(MAN:.1=.txt)
-HTML = $(POD:.pod=.html) $(PMP:.pm=.html)
+HTML = $(POD:.pod=.html) $(PMP:.pod=.html)
PDF = $(MAN:.1=.pdf)
# what should go into the distribution
.pm.html .pod.html .pl.html:
pod2html --infile=$< --outfile=$@ --noindex --htmlroot=. --podpath=. --title=$*
-RRDs.pm:
- ln -s ../bindings/perl-shared/RRDs.pm .
+RRDs.pod:
+ ln -s ../bindings/perl-shared/RRDs.pm RRDs.pod
-RRDp.pm:
- ln -s ../bindings/perl-piped/RRDp.pm .
+RRDp.pod:
+ ln -s ../bindings/perl-piped/RRDp.pm RRDp.pod
index.html:
rm -f index.html; ln -s rrdtool.html index.html
-link: RRDp.pm RRDs.pm index.html
+link: RRDp.pod RRDs.pod index.html
man: $(MAN)
cdeftutorial - Alex van den Bogaerdt's CDEF tutorial
-=for html <div align="right"><a href="cdeftutorial.pdf">PDF</a> version.</div>
-
=head1 DESCRIPTION
-B<You provide a question and I will try to provide an answer in the next
-release>. B<No feedback equals no changes!>
-
-I<Additions to this document are also welcome.>
-
-Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>
+If you provide a question, I will try to provide an answer in the next
+release of this tutorial. No feedback equals no changes! Additions to this document are also welcome.
+-- Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>
=head2 Why this tutorial ?
data flow to update the RRDtool database.
=back
-
+
RRDtool has a lot to do with time. With every data update, it also needs to
know the time when that update occurred. Time is always expressed in
seconds passed since epoch (01-01-1971). RRDtool can be installed on Unix as
operations on RRD database. This command set can be accessed from the command line,
and from Shell or Perl scripts. The scripts
act as wrappers for accessing data stored in RRDtool database.
-
+
=head2 Understanding by an example
The structure of an RRD database is different than other linear databases.
The structure of a database and the terminology associated with it can be
best explained with an example.
- rrdtool create target.rrd
- --start 1023654125
- --step 300
- DS:mem:GAUGE:600:0:671744
- RRA:AVERAGE:0.5:12:24
+ rrdtool create target.rrd \
+ --start 1023654125 \
+ --step 300 \
+ DS:mem:GAUGE:600:0:671744 \
+ RRA:AVERAGE:0.5:12:24 \
RRA:AVERAGE:0.5:288:31
This example creates a database named F<target.rrd>. Start time (1023654125) is
use lib qw( /usr/local/rrdtool-1.0.41/lib/perl ../lib/perl );
use RRDs;
my $cur_time = time(); # setting current time
- my $end_time = $cur_time - 86400; # setting end time to 24 hours behind current time
- my $start_time = $end_time - 2592000; # setting start time to 30 days from end time
+ my $end_time = $cur_time - 86400; # setting end time 24 hours ago
+ my $start_time = $end_time - 2592000; # setting start 30 days in the future
#fetching average values from RRD database between start and end time
my ($start,$step,$ds_names,$data) =
"--rigid", \
"--base=1024", \
"DEF:tot_mem=target.rrd:mem:AVERAGE", \
- "CDEF:correct_tot_mem=tot_mem,0,671744,LIMIT,UN,0,tot_mem,IF,1024,/",\
+ "CDEF:tot_mem_cor=tot_mem,0,671744,LIMIT,UN,0,tot_mem,IF,1024,/",\
"CDEF:machine_mem=tot_mem,656,+,tot_mem,-",\
"COMMENT:Memory Consumption between $start_time",\
"COMMENT: and $end_time ",\
"HRULE:656#000000:Maximum Available Memory - 656 MB",\
"AREA:machine_mem#CCFFFF:Memory Unused", \
- "AREA:correct_tot_mem#6699CC:Total memory consumed in MB");
+ "AREA:tot_mem_cor#6699CC:Total memory consumed in MB");
my $err=RRDs::error;
if ($err) {print "problem generating the graph: $err\n";}
#printing the output
--- /dev/null
+=head1 NAME
+
+rrdgraph - Round Robin Database tool grapher functions
+
+=head1 SYNOPSIS
+
+B<rrdtool graph> I<filename>
+[I<L<option|rrdgraph/OPTIONS>> ...]
+[I<L<data definition|rrdgraph_data/DEF>> ...]
+[I<L<data calculation|rrdgraph_data/CDEF>> ...]
+[I<L<variable definition|rrdgraph_data/VDEF>> ...]
+[I<L<graph element|rrdgraph_graph/GRAPH>> ...]
+[I<L<print element|rrdgraph_graph/PRINT>> ...]
+
+=head1 DESCRIPTION
+
+The B<graph> function of B<RRDtool> is used to present the
+data from an B<RRD> to a human viewer. Its main purpose is to
+create a nice graphical representation but it can also generate
+a numerical report.
+
+=head1 OVERVIEW
+
+B<rrdtool graph> needs data to work with, use one or more
+B<L<data definition|rrdgraph_data/DEF>> statements to collect this
+data. You are not limited to one database, it's perfectly legal to
+collect data from two or more databases (one per statement though).
+
+If you want to display averages, maxima, percentiles etcetera
+it is best to collect them now using the
+B<L<variable definition|rrdgraph_data/VDEF>> statement.
+Currently this makes no difference but in a future version
+of rrdtool you may want to collect these values before consolidation.
+
+The data fetched from the B<RRA> is then B<consolidated> so that
+there is exactly one datapoint per pixel in the graph. If you do
+not take care yourself, B<RRDtool> will expand the range slightly
+if necessary (in that case the first and/or last pixel may very
+well become unknown!).
+
+Sometimes data is not exactly as you would like to display it. For
+instance, you might be collecting B<bytes> per second but want to
+display B<bits> per second. This is where the
+B<L<data calculation|rrdgraph_data/CDEF>> command is designed for.
+After B<consolidating> the data, a copy is made and this copy is
+modified using a rather flexible B<L<RPN|rrdgraph_rpn/>> command
+set.
+
+When you are done fetching and processing the data, it is time to
+graph it (or print it). This ends the B<rrdtool graph> sequence.
+
+=head1 OPTIONS
+
+=over 4
+
+=item filename
+
+The name and path of the graph to generate. It is recommended to
+end this in C<.png>, C<.svg> or C<.eps> but B<RRDtool> does not enforce this.
+
+I<filename> can be 'C<->' to send the image to C<stdout>. In
+that case, no other output is generated.
+
+=item Time range
+
+[B<-s>|B<--start> I<time>]
+[B<-e>|B<--end> I<time>]
+[B<-S>|B<--step> I<seconds>]
+
+The start and end of what you would like to display, and which
+B<RRA> the data should come from. Defaults are: 1 day ago until
+now, with the best possible resolution. B<Start> and B<end> can
+be specified in several formats, see
+L<AT-STYLE TIME SPECIFICATION|rrdfetch/> and L<rrdgraph_examples>.
+By default, B<rrdtool graph> calculates the width of one pixel in
+the time domain and tries to get data from an B<RRA> with that
+resolution. With the B<step> option you can alter this behaviour.
+If you want B<rrdtool graph> to get data at a one-hour resolution
+from the B<RRD>, set B<step> to 3600. Note: a step smaller than
+one pixel will silently be ignored.
+
+=item Labels
+
+[B<-t>|B<--title> I<string>]
+[B<-v>|B<--vertical-label> I<string>]
+
+A horizontal string at the top of the graph and/or a vertically
+placed string at the left hand side of the graph.
+
+=item Size
+
+[B<-w>|B<--width> I<pixels>]
+[B<-h>|B<--height> I<pixels>]
+[B<-j>|B<--only-graph>]
+
+The width and height of the B<canvas> (the part of the graph with
+the actual lines and such). Defaults are 400 pixels by 100 pixels.
+
+If you specify the B<--only-graph> option and set the height E<lt> 32
+pixels you will get a tiny graph image to use as an icon in a potential
+overview. All labeling will be stripped off the graph.
+
+=item Limits
+
+[B<-u>|B<--upper-limit> I<value>]
+[B<-l>|B<--lower-limit> I<value>]
+[B<-r>|B<--rigid>]
+
+By default the graph will be autoscaling so that it displays the
+portion of the y-axis that is actually used. You can change this
+behaviour by setting the limits. The displayed y-axis will show
+at least from B<lower-limit> to B<upper-limit>. Autoscaling will
+still permit those boundaries to be stretched unless the B<rigid>
+option is set.
+
+[B<-A>|B<--alt-autoscale>]
+
+Sometimes the default algorithm for selecting the y-axis scale is not
+performing very well. Normally the scale is selected from a predefined
+set of ranges and this fails miserably when you need to graph something
+like C<260 + 0.001 * sin(x)>. This option calculates the minimum and
+maximum y-axis from the actual minimum and maximum values. Our example
+would display slightly less than C<260-0.001> to slightly more than
+C<260+0.001> (Contributed by Sasha Mikheev).
+
+[B<-M>|B<--alt-autoscale-max>]
+
+Where C<--alt-autoscale> will modify both the absolute maximum AND minimum
+values, this option will only affect the maximum value. The minimum
+value, if not defined on the command line, will be 0. This option can
+be useful when graphing router traffic when the WAN line uses compression,
+and thus the throughput may be higher than the WAN line speed.
+
+[B<-N>|B<--no-gridfit>]
+
+To avoid anti-aliasing effects gridlines are placed on
+integer pixel values. This is by default done by extending
+the scale so gridlines happens to be spaced using an
+integer number of pixels, and starts on integer pixel value.
+This might extend the scale too much for some logarithmic scales
+and for linear scales where B<--alt-autoscale> is needed.
+Using B<--no-gridfit> disables modification of the scale.
+
+=item Grid
+
+=over 4
+
+=item X-Axis
+
+[B<-x>|B<--x-grid> I<GTM>B<:>I<GST>B<:>I<MTM>B<:>I<MST>B<:>I<LTM>B<:>I<LST>B<:>I<LPR>B<:>I<LFM>]
+
+[B<-x>|B<--x-grid> B<none>]
+
+The x-axis label is quite complex to configure, if you don't have
+very special needs it is probably best to rely on the autoconfiguration
+to get this right. You can specify the string C<none> to skip the grid
+and labels altogether.
+
+The grid is defined by specifying a certain amount of time in the I<?TM>
+positions. You can choose from C<SECOND>, C<MINUTE>, C<HOUR>, C<DAY>,
+C<WEEK>, C<MONTH> or C<YEAR>. Then you define how many of these should
+pass between each line or label. This pair (I<?TM:?ST>) needs to be
+specified for the base grid (I<G??>), the major grid (I<M??>) and the
+labels (I<L??>). For the labels you also need to define a precision
+in I<LPR> and a I<strftime> format string in I<LFM>. I<LPR> defines
+where each label will be placed. If it is zero, the label will be
+placed right under the corresponding line (useful for hours, dates
+etcetera). If you specify a number of seconds here the label is
+centered in this interval (useful for Monday, January etcetera).
+
+ --x-grid MINUTE:10:HOUR:1:HOUR:4:0:%X
+
+This places grid lines every 10 minutes, major grid lines every hour
+and labels every 4 hours. The labels are placed under the major grid
+lines as they specify exactly that time.
+
+ --x-grid HOUR:8:DAY:1:DAY:1:0:%A
+
+This places grid lines every 8 hours, major grid lines and labels
+each day. The labels are placed exactly between two major grid lines
+as they specify the complete day and not just midnight.
+
+=item Y-Axis
+
+[B<-y>|B<--y-grid> I<grid step>B<:>I<label factor>]
+
+[B<-y>|B<--y-grid> B<none>]
+
+Y-axis grid lines appear at each I<grid step> interval. Labels are
+placed every I<label factor> lines. You can specify C<-y none> to
+skip the grid and labels altogether. The default for this option is
+to automatically select sensible values.
+
+[B<-Y>|B<--alt-y-grid>]
+
+Place Y grid dynamically based on graph Y range. Algorithm ensures
+that you always have grid, that there are enough but not too many
+grid lines and the grid is metric. That is grid lines are placed
+every 1, 2, 5 or 10 units. (contributed by Sasha Mikheev)
+
+[B<-o>|B<--logarithmic>]
+
+Logarithmic y-axis scaling.
+
+[B<-X>|B<--units-exponent> I<value>]
+
+This sets the 10**exponent scaling of the y-axis values. Normally
+values will be scaled to the appropriate units (k, M, etc.). However
+you may wish to display units always in k (Kilo, 10e3) even if the data
+is in the M (Mega, 10e6) range for instance. Value should be an
+integer which is a multiple of 3 between -18 and 18 inclusive. It is
+the exponent on the units you which to use. For example, use 3 to
+display the y-axis values in k (Kilo, 10e3, thousands), use -6 to
+display the y-axis values in u (Micro, 10e-6, millionths). Use a value
+of 0 to prevent any scaling of the y-axis values.
+
+This option is very effective at confusing the heck out of the default
+rrdtool autoscaler and grid painter. If rrdtool detects that it is not
+successful in labeling the graph under the given circumstances, it will switch
+to the more robust B<--alt-y-grid> mode.
+
+[B<-L>|B<--units-length> I<value>]
+
+How many digits should rrdtool assume the y-axis labels to be ? You may have to use this option
+to make enough space once you start fideling with the y-axis labeling.
+
+=back
+
+=item Miscellaneous
+
+[B<-z>|B<--lazy>]
+
+Only generate the graph, if the current graph is out of date or not
+existent.
+
+[B<-f>|B<--imginfo> I<printfstr>]
+
+After the image has been created, the graph function uses printf
+together with this format string to create output similar to the PRINT
+function, only that the printf is supplied with the parameters
+I<filename>, I<xsize> and I<ysize>. In order to generate an B<IMG> tag
+suitable for including the graph into a web page, the command line
+would look like this:
+
+ --imginfo '<IMG SRC="/img/%s" WIDTH="%lu" HEIGHT="%lu" ALT="Demo">'
+
+[B<-c>|B<--color> I<COLORTAG>#I<rrggbb>[I<aa>]]
+
+Override the default colors for the standard elements of the graph. The
+I<COLORTAG> is one of C<BACK> background, C<CANVAS> for the background of
+the actual graph, C<SHADEA> for the left and top border, C<SHADEB> for the
+right and bottom border, C<GRID>, C<MGRID> for the major grid, C<FONT> for
+the color of the font, C<AXIS> for the axis of the graph and finaly C<ARROW>
+for the arrow head pointing to the future. Each color is composed out of
+three hexadecimal numbers specifying its color component (00 is off, FF is
+maximum) of red, green and blue. Optionally you may add another hexadecimal
+number specifying the transparency (FF is solid). You may set this option
+several times to alter multiple defaults.
+
+A green arrow is made by: C<--color ARROW:00FF00>
+
+[B<--zoom> I<factor>]
+
+Zoom the graphics by the given amount ... The factor must be E<gt> 0
+
+[B<-n>|B<--font> I<FONTTAG>B<:>I<size>B<:>I<font>]
+
+Lets you customize which font to use for the various text elements on the
+RRD graphs. C<DEFAULT> sets the default value for all elements C<TITLE>,
+C<AXIS> for the axis labels, C<UNIT> for the vertical unit label, C<LEGEND>
+for the graph legend.
+
+Use Times for the title: C<--font TITLE:13:/usr/lib/fonts/times.ttf>
+
+RRDtool comes with a preset default font. You can set the environment
+variable C<RRD_DEFAULT_FONT> if you want to change this.
+
+Truetype fonts are only supported for PNG output. See below.
+
+[B<-a>|B<--imgformat> B<PNG>|B<SVG>|B<EPS>|B<PDF>]
+
+Image format for the generated graph. For the vector formats you can choose among the standard Postscript fonts
+Courier-Bold, Courier-BoldOblique, Courier-Oblique, Courier, Helvetica-Bold,
+Helvetica-BoldOblique, Helvetica-Oblique, Helvetica, Symbol, Times-Bold, Times-BoldItalic,
+Times-Italic, Times-Roman, ZapfDingbats
+
+[B<-i>|B<--interlaced>]
+
+If images are interlaced they become visible on browsers more quickly.
+
+[B<-g>|B<--no-legend>]
+
+Suppress generation of legend; only render the graph.
+
+[B<-F>|B<--force-rules-legend>]
+
+Force the generation of HRULE and VRULE legend even if those HRULE or VRULE will not be drawn because out of graph boundaries (mimics behaviour of pre 1.0.42 versions).
+
+[B<-T>|B<--tabwidth> I<value>]
+
+By default the tab-width is 40 pixels, use this option to change it.
+
+[B<-b>|B<--base> I<value>]
+
+If you are graphing memory (and NOT network traffic) this switch
+should be set to 1024 so that one Kb is 1024 byte. For traffic
+measurement, 1 kb/s is 1000 b/s.
+
+=item Data and variables
+
+B<DEF:>I<vname>B<=>I<rrdfile>B<:>I<ds-name>B<:>I<CF>[B<:step=>I<step>][B<:start=>I<time>][B<:end=>I<time>]
+
+B<CDEF:>I<vname>B<=>I<RPN expression>
+
+B<VDEF:>I<vname>B<=>I<RPN expression>
+
+You need at least one B<DEF> statement to generate anything. The
+other statements are useful but optional.
+See L<rrdgraph_data> and L<rrdgraph_rpn> for exact format.
+
+=item Graph and print elements
+
+You need at least one graph element to generate an image and/or
+at least one print statement to generate a report.
+See L<rrdgraph_graph> for exact format.
+
+=back
+
+=head1 SEE ALSO
+
+L<rrdgraph> gives an overview of how B<rrdtool graph> works.
+L<rrdgraph_data> describes B<DEF>,B<CDEF> and B<VDEF> in detail,
+L<rrdgraph_rpn> describes the B<RPN> language used in the B<?DEF> statements,
+L<rrdgraph_graph> page describes all of the graph and print functions.
+
+Make sure to read L<rrdgraph_examples> for tipsE<amp>tricks.
+
+=head1 AUTHOR
+
+Program by Tobias Oetiker E<lt>oetiker@ee.ethz.chE<gt>
+
+This manual page by Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>
+
+++ /dev/null
-=head1 NAME
-
-=cut
-
-WARNING: DO NOT EDIT THE POD FILES. THEY ARE AUTO-GENERATED
-
-=pod
-
-rrdgraph - Round Robin Database tool grapher functions
-
-=head1 SYNOPSIS
-
-B<rrdtool graph> I<filename>
-[I<L<option|rrdgraph/OPTIONS>> ...]
-[I<L<data definition|rrdgraph_data/DEF>> ...]
-[I<L<data calculation|rrdgraph_data/CDEF>> ...]
-[I<L<variable definition|rrdgraph_data/VDEF>> ...]
-[I<L<graph element|rrdgraph_graph/GRAPH>> ...]
-[I<L<print element|rrdgraph_graph/PRINT>> ...]
-
-=head1 DESCRIPTION
-
-The B<graph> function of B<RRDtool> is used to present the
-data from an B<RRD> to a human viewer. Its main purpose is to
-create a nice graphical representation but it can also generate
-a numerical report.
-
-=head1 OVERVIEW
-
-B<rrdtool graph> needs data to work with, use one or more
-B<L<data definition|rrdgraph_data/DEF>> statements to collect this
-data. You are not limited to one database, it's perfectly legal to
-collect data from two or more databases (one per statement though).
-
-If you want to display averages, maxima, percentiles etcetera
-it is best to collect them now using the
-B<L<variable definition|rrdgraph_data/VDEF>> statement.
-Currently this makes no difference but in a future version
-of rrdtool you may want to collect these values before consolidation.
-
-The data fetched from the B<RRA> is then B<consolidated> so that
-there is exactly one datapoint per pixel in the graph. If you do
-not take care yourself, B<RRDtool> will expand the range slightly
-if necessary (in that case the first and/or last pixel may very
-well become unknown!).
-
-Sometimes data is not exactly as you would like to display it. For
-instance, you might be collecting B<bytes> per second but want to
-display B<bits> per second. This is where the
-B<L<data calculation|rrdgraph_data/CDEF>> command is designed for.
-After B<consolidating> the data, a copy is made and this copy is
-modified using a rather flexible B<L<RPN|rrdgraph_rpn/>> command
-set.
-
-When you are done fetching and processing the data, it is time to
-graph it (or print it). This ends the B<rrdtool graph> sequence.
-
-=head1 OPTIONS
-
-=over 4
-
-=item filename
-
-The name and path of the graph to generate. It is recommended to
-end this in C<.png>, C<.svg> or C<.eps> but B<RRDtool> does not enforce this.
-
-I<filename> can be 'C<->' to send the image to C<stdout>. In
-that case, no other output is generated.
-
-=item Time range
-
-[B<-s>|B<--start> I<time>]
-[B<-e>|B<--end> I<time>]
-[B<-S>|B<--step> I<seconds>]
-
-The start and end of what you would like to display, and which
-B<RRA> the data should come from. Defaults are: 1 day ago until
-now, with the best possible resolution. B<Start> and B<end> can
-be specified in several formats, see
-L<AT-STYLE TIME SPECIFICATION|rrdfetch/> and L<rrdgraph_examples>.
-By default, B<rrdtool graph> calculates the width of one pixel in
-the time domain and tries to get data from an B<RRA> with that
-resolution. With the B<step> option you can alter this behaviour.
-If you want B<rrdtool graph> to get data at a one-hour resolution
-from the B<RRD>, set B<step> to 3600. Note: a step smaller than
-one pixel will silently be ignored.
-
-=item Labels
-
-[B<-t>|B<--title> I<string>]
-[B<-v>|B<--vertical-label> I<string>]
-
-A horizontal string at the top of the graph and/or a vertically
-placed string at the left hand side of the graph.
-
-=item Size
-
-[B<-w>|B<--width> I<pixels>]
-[B<-h>|B<--height> I<pixels>]
-[B<-j>|B<--only-graph>]
-
-The width and height of the B<canvas> (the part of the graph with
-the actual lines and such). Defaults are 400 pixels by 100 pixels.
-
-If you specify the B<--only-graph> option and set the height E<lt> 32
-pixels you will get a tiny graph image to use as an icon in a potential
-overview. All labeling will be stripped off the graph.
-
-=item Limits
-
-[B<-u>|B<--upper-limit> I<value>]
-[B<-l>|B<--lower-limit> I<value>]
-[B<-r>|B<--rigid>]
-
-By default the graph will be autoscaling so that it displays the
-portion of the y-axis that is actually used. You can change this
-behaviour by setting the limits. The displayed y-axis will show
-at least from B<lower-limit> to B<upper-limit>. Autoscaling will
-still permit those boundaries to be stretched unless the B<rigid>
-option is set.
-
-[B<-A>|B<--alt-autoscale>]
-
-Sometimes the default algorithm for selecting the y-axis scale is not
-performing very well. Normally the scale is selected from a predefined
-set of ranges and this fails miserably when you need to graph something
-like C<260 + 0.001 * sin(x)>. This option calculates the minimum and
-maximum y-axis from the actual minimum and maximum values. Our example
-would display slightly less than C<260-0.001> to slightly more than
-C<260+0.001> (Contributed by Sasha Mikheev).
-
-[B<-M>|B<--alt-autoscale-max>]
-
-Where C<--alt-autoscale> will modify both the absolute maximum AND minimum
-values, this option will only affect the maximum value. The minimum
-value, if not defined on the command line, will be 0. This option can
-be useful when graphing router traffic when the WAN line uses compression,
-and thus the throughput may be higher than the WAN line speed.
-
-[B<-N>|B<--no-gridfit>]
-
-To avoid anti-aliasing effects gridlines are placed on
-integer pixel values. This is by default done by extending
-the scale so gridlines happens to be spaced using an
-integer number of pixels, and starts on integer pixel value.
-This might extend the scale too much for some logarithmic scales
-and for linear scales where B<--alt-autoscale> is needed.
-Using B<--no-gridfit> disables modification of the scale.
-
-=item Grid
-
-=over 4
-
-=item X-Axis
-
-[B<-x>|B<--x-grid> I<GTM>B<:>I<GST>B<:>I<MTM>B<:>I<MST>B<:>I<LTM>B<:>I<LST>B<:>I<LPR>B<:>I<LFM>]
-
-[B<-x>|B<--x-grid> B<none>]
-
-The x-axis label is quite complex to configure, if you don't have
-very special needs it is probably best to rely on the autoconfiguration
-to get this right. You can specify the string C<none> to skip the grid
-and labels altogether.
-
-The grid is defined by specifying a certain amount of time in the I<?TM>
-positions. You can choose from C<SECOND>, C<MINUTE>, C<HOUR>, C<DAY>,
-C<WEEK>, C<MONTH> or C<YEAR>. Then you define how many of these should
-pass between each line or label. This pair (I<?TM:?ST>) needs to be
-specified for the base grid (I<G??>), the major grid (I<M??>) and the
-labels (I<L??>). For the labels you also need to define a precision
-in I<LPR> and a I<strftime> format string in I<LFM>. I<LPR> defines
-where each label will be placed. If it is zero, the label will be
-placed right under the corresponding line (useful for hours, dates
-etcetera). If you specify a number of seconds here the label is
-centered in this interval (useful for Monday, January etcetera).
-
-Example: C<--x-grid MINUTE:10:HOUR:1:HOUR:4:0:%X>
-
-This places grid lines every 10 minutes, major grid lines every hour
-and labels every 4 hours. The labels are placed under the major grid
-lines as they specify exactly that time.
-
-Example: C<--x-grid HOUR:8:DAY:1:DAY:1:0:%A>
-
-This places grid lines every 8 hours, major grid lines and labels
-each day. The labels are placed exactly between two major grid lines
-as they specify the complete day and not just midnight.
-
-=item Y-Axis
-
-[B<-y>|B<--y-grid> I<grid step>B<:>I<label factor>]
-
-[B<-y>|B<--y-grid> B<none>]
-
-Y-axis grid lines appear at each I<grid step> interval. Labels are
-placed every I<label factor> lines. You can specify C<-y none> to
-skip the grid and labels altogether. The default for this option is
-to automatically select sensible values.
-
-[B<-Y>|B<--alt-y-grid>]
-
-Place Y grid dynamically based on graph Y range. Algorithm ensures
-that you always have grid, that there are enough but not too many
-grid lines and the grid is metric. That is grid lines are placed
-every 1, 2, 5 or 10 units. (contributed by Sasha Mikheev)
-
-[B<-o>|B<--logarithmic>]
-
-Logarithmic y-axis scaling.
-
-[B<-X>|B<--units-exponent> I<value>]
-
-This sets the 10**exponent scaling of the y-axis values. Normally
-values will be scaled to the appropriate units (k, M, etc.). However
-you may wish to display units always in k (Kilo, 10e3) even if the data
-is in the M (Mega, 10e6) range for instance. Value should be an
-integer which is a multiple of 3 between -18 and 18 inclusive. It is
-the exponent on the units you which to use. For example, use 3 to
-display the y-axis values in k (Kilo, 10e3, thousands), use -6 to
-display the y-axis values in u (Micro, 10e-6, millionths). Use a value
-of 0 to prevent any scaling of the y-axis values.
-
-This option is very effective at confusing the heck out of the default
-rrdtool autoscaler and grid painter. If rrdtool detects that it is not
-successful in labeling the graph under the given circumstances, it will switch
-to the more robust B<--alt-y-grid> mode.
-
-[B<-L>|B<--units-length> I<value>]
-
-How many digits should rrdtool assume the y-axis labels to be ? You may have to use this option
-to make enough space once you start fideling with the y-axis labeling.
-
-=back
-
-=item Miscellaneous
-
-[B<-z>|B<--lazy>]
-
-Only generate the graph, if the current graph is out of date or not
-existent.
-
-[B<-f>|B<--imginfo> I<printfstr>]
-
-After the image has been created, the graph function uses printf
-together with this format string to create output similar to the PRINT
-function, only that the printf is supplied with the parameters
-I<filename>, I<xsize> and I<ysize>. In order to generate an B<IMG> tag
-suitable for including the graph into a web page, the command line
-would look like this:
-
- --imginfo '<IMG SRC="/img/%s" WIDTH="%lu" HEIGHT="%lu" ALT="Demo">'
-
-[B<-c>|B<--color> I<COLORTAG>#I<rrggbb>[I<aa>]]
-
-Override the default colors for the standard elements of the graph. The
-I<COLORTAG> is one of C<BACK> background, C<CANVAS> for the background of
-the actual graph, C<SHADEA> for the left and top border, C<SHADEB> for the
-right and bottom border, C<GRID>, C<MGRID> for the major grid, C<FONT> for
-the color of the font, C<AXIS> for the axis of the graph and finaly C<ARROW>
-for the arrow head pointing to the future. Each color is composed out of
-three hexadecimal numbers specifying its color component (00 is off, FF is
-maximum) of red, green and blue. Optionally you may add another hexadecimal
-number specifying the transparency (FF is solid). You may set this option
-several times to alter multiple defaults.
-
-A green arrow is made by: C<--color ARROW:00FF00>
-
-[B<--zoom> I<factor>]
-
-Zoom the graphics by the given amount ... The factor must be E<gt> 0
-
-[B<-n>|B<--font> I<FONTTAG>B<:>I<size>B<:>I<font>]
-
-Lets you customize which font to use for the various text elements on the
-RRD graphs. C<DEFAULT> sets the default value for all elements C<TITLE>,
-C<AXIS> for the axis labels, C<UNIT> for the vertical unit label, C<LEGEND>
-for the graph legend.
-
-Use Times for the title: C<--font TITLE:13:/usr/lib/fonts/times.ttf>
-
-RRDtool comes with a preset default font. You can set the environment
-variable C<RRD_DEFAULT_FONT> if you want to change this.
-
-Truetype fonts are only supported for PNG output. See below.
-
-[B<-a>|B<--imgformat> B<PNG>|B<SVG>|B<EPS>|B<PDF>]
-
-Image format for the generated graph. For the vector formats you can choose among the standard Postscript fonts
-Courier-Bold, Courier-BoldOblique, Courier-Oblique, Courier, Helvetica-Bold,
-Helvetica-BoldOblique, Helvetica-Oblique, Helvetica, Symbol, Times-Bold, Times-BoldItalic,
-Times-Italic, Times-Roman, ZapfDingbats
-
-[B<-i>|B<--interlaced>]
-
-If images are interlaced they become visible on browsers more quickly.
-
-[B<-g>|B<--no-legend>]
-
-Suppress generation of legend; only render the graph.
-
-[B<-F>|B<--force-rules-legend>]
-
-Force the generation of HRULE and VRULE legend even if those HRULE or VRULE will not be drawn because out of graph boundaries (mimics behaviour of pre 1.0.42 versions).
-
-[B<-T>|B<--tabwidth> I<value>]
-
-By default the tab-width is 40 pixels, use this option to change it.
-
-[B<-b>|B<--base> I<value>]
-
-If you are graphing memory (and NOT network traffic) this switch
-should be set to 1024 so that one Kb is 1024 byte. For traffic
-measurement, 1 kb/s is 1000 b/s.
-
-=item Data and variables
-
-B<DEF:>I<vname>B<=>I<rrdfile>B<:>I<ds-name>B<:>I<CF>[B<:step=>I<step>][B<:start=>I<time>][B<:end=>I<time>]
-
-B<CDEF:>I<vname>B<=>I<RPN expression>
-
-B<VDEF:>I<vname>B<=>I<RPN expression>
-
-You need at least one B<DEF> statement to generate anything. The
-other statements are useful but optional.
-See L<rrdgraph_data> and L<rrdgraph_rpn> for exact format.
-
-=item Graph and print elements
-
-You need at least one graph element to generate an image and/or
-at least one print statement to generate a report.
-See L<rrdgraph_graph> for exact format.
-
-=head1 SEE ALSO
-
-L<rrdgraph> gives an overview of how B<rrdtool graph> works.
-L<rrdgraph_data> describes B<DEF>,B<CDEF> and B<VDEF> in detail,
-L<rrdgraph_rpn> describes the B<RPN> language used in the B<?DEF> statements,
-L<rrdgraph_graph> page describes all of the graph and print functions.
-
-Make sure to read L<rrdgraph_examples> for tipsE<amp>tricks.
-
-=head1 AUTHOR
-
-Program by Tobias Oetiker E<lt>oetiker@ee.ethz.chE<gt>
-
-This manual page by Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>
-
--- /dev/null
+=head1 NAME
+
+rrdgraph_data - preparing data for graphing in rrdtool graph
+
+=head1 SYNOPSIS
+
+B<DEF:>I<E<lt>vnameE<gt>>=I<E<lt>rrdfileE<gt>>:I<E<lt>ds-nameE<gt>>:I<E<lt>CFE<gt>>[:step=I<E<lt>stepE<gt>>][:start=I<E<lt>timeE<gt>>][:end=I<E<lt>timeE<gt>>][:reduce=I<E<lt>B<CF>E<gt>>]
+
+B<VDEF>:I<vname>=I<RPN expression>
+
+B<CDEF>:I<vname>=I<RPN expression>
+
+=head1 DESCRIPTION
+
+These three instructions collect the data out of the B<RRD> files,
+optionally altering it (think of a bytes to bits conversion) and
+if desired you can define variables containing useful information
+such as maximum, minimum etcetera. Two of the instructions use
+a language called B<RPN> which is described in its own manual page.
+
+=head1 DEF
+
+B<DEF:>I<E<lt>vnameE<gt>>=I<E<lt>rrdfileE<gt>>:I<E<lt>ds-nameE<gt>>:I<E<lt>CFE<gt>>[:step=I<E<lt>stepE<gt>>][:start=I<E<lt>timeE<gt>>][:end=I<E<lt>timeE<gt>>][:reduce=I<E<lt>B<CF>E<gt>>]
+
+This command fetches data from an B<RRD> file. The virtual name
+I<vname> can then be used throughout the rest of the script. By
+default, an B<RRA> which contains the correct consolidated data
+at an appropriate resolution will be chosen. The resolution can
+be overridden with the L<--step|rrdgraph/item_Time> option.
+The resolution can again be overridden by specifying the B<step size>.
+The time span of this data is the same as for the graph by default,
+you can override this by specifying B<start and end>. Remember to
+escape colons in the time specification!
+
+If the resolution of the data is higher than the resolution of off
+graph, the data will be further consolidated. This may result in
+a graph that spans slightly more time than requested.
+Ideally each point in the graph should correspond with one B<CDP>
+from an B<RRA>. For instance, if your B<RRD> has an B<RRA> with
+a resolution of 1800 seconds per B<CDP>, you should create an
+image with width 400 and time span 400*1800 seconds (use appropriate
+start and end times, such as C<--start end-8days8hours>).
+
+If consolidation needs to be done, the B<CF> of the B<RRA> specified in the
+B<DEF> itself will be used to reduce the data density. This behaviour can
+be changed using C<:reduce=I<E<lt>B<CF>E<gt>>>. This optional parameter
+specifies the B<CF> to use during the data reduction phase.
+
+Example:
+
+ DEF:ds0=router.rrd:ds0:AVERAGE
+ DEF:ds0weekly=router.rrd:ds0:AVERAGE:step=7200
+ DEF:ds0weekly=router.rrd:ds0:AVERAGE:start=end-1h
+ DEF:ds0weekly=router.rrd:ds0:AVERAGE:start=11\:00:end=start+1h
+
+=head1 VDEF
+
+B<VDEF>:I<vname>=I<RPN expression>
+
+This command returns a value and/or a time according to the B<RPN>
+statements used. The resulting I<vname> will, depending on the
+functions used, have a value and a time component. When you use
+this I<vname> in another B<RPN> expression, you are effectively
+inserting its value just as if you had put a number at that place.
+The variable can also be used in the various graph and print
+elements.
+
+Example: C<VDEF:avg=mydata,AVERAGE>
+
+=head1 CDEF
+
+B<CDEF>:I<vname>=I<RPN expression>
+
+This command creates a new set of data points (in memory only, not
+in the B<RRD> file) out of one or more other data series. The B<RPN>
+instructions are used to evaluate a mathematical function on each
+data point. The resulting I<vname> can then be used further on in
+the script, just as if it were generated by a B<DEF> instruction.
+
+Example: C<CDEF:mydatabits=mydata,8,*>
+
+=head1 SEE ALSO
+
+L<rrdgraph> gives an overview of how B<rrdtool graph> works.
+L<rrdgraph_data> describes B<DEF>,B<CDEF> and B<VDEF> in detail,
+L<rrdgraph_rpn> describes the B<RPN> language used in the B<?DEF> statements,
+L<rrdgraph_graph> page describes all of the graph and print functions.
+
+Make sure to read L<rrdgraph_examples> for tipsE<amp>tricks.
+
+=head1 AUTHOR
+
+Program by Tobias Oetiker E<lt>oetiker@ee.ethz.chE<gt>
+
+This manual page by Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>
+++ /dev/null
-=head1 NAME
-
-rrdgraph_data - preparing data for graphing in rrdtool graph
-
-=head1 SYNOPSIS
-
-B<DEF:>I<E<lt>vnameE<gt>>=I<E<lt>rrdfileE<gt>>:I<E<lt>ds-nameE<gt>>:I<E<lt>CFE<gt>>[:step=I<E<lt>stepE<gt>>][:start=I<E<lt>timeE<gt>>][:end=I<E<lt>timeE<gt>>][:reduce=I<E<lt>B<CF>E<gt>>]
-
-B<VDEF>:I<vname>=I<RPN expression>
-
-B<CDEF>:I<vname>=I<RPN expression>
-
-=head1 DESCRIPTION
-
-These three instructions collect the data out of the B<RRD> files,
-optionally altering it (think of a bytes to bits conversion) and
-if desired you can define variables containing useful information
-such as maximum, minimum etcetera. Two of the instructions use
-a language called B<RPN> which is described in its own manual page.
-
-=head1 DEF
-
-B<DEF:>I<E<lt>vnameE<gt>>=I<E<lt>rrdfileE<gt>>:I<E<lt>ds-nameE<gt>>:I<E<lt>CFE<gt>>[:step=I<E<lt>stepE<gt>>][:start=I<E<lt>timeE<gt>>][:end=I<E<lt>timeE<gt>>][:reduce=I<E<lt>B<CF>E<gt>>]
-
-This command fetches data from an B<RRD> file. The virtual name
-I<vname> can then be used throughout the rest of the script. By
-default, an B<RRA> which contains the correct consolidated data
-at an appropriate resolution will be chosen. The resolution can
-be overridden with the L<--step|rrdgraph/item_Time> option.
-The resolution can again be overridden by specifying the B<step size>.
-The time span of this data is the same as for the graph by default,
-you can override this by specifying B<start and end>. Remember to
-escape colons in the time specification!
-
-If the resolution of the data is higher than the resolution of off
-graph, the data will be further consolidated. This may result in
-a graph that spans slightly more time than requested.
-Ideally each point in the graph should correspond with one B<CDP>
-from an B<RRA>. For instance, if your B<RRD> has an B<RRA> with
-a resolution of 1800 seconds per B<CDP>, you should create an
-image with width 400 and time span 400*1800 seconds (use appropriate
-start and end times, such as C<--start end-8days8hours>).
-
-If consolidation needs to be done, the B<CF> of the B<RRA> specified in the
-B<DEF> itself will be used to reduce the data density. This behaviour can
-be changed using C<:reduce=I<E<lt>B<CF>E<gt>>>. This optional parameter
-specifies the B<CF> to use during the data reduction phase.
-
-Example:
-
- DEF:ds0=router.rrd:ds0:AVERAGE
- DEF:ds0weekly=router.rrd:ds0:AVERAGE:step=7200
- DEF:ds0weekly=router.rrd:ds0:AVERAGE:start=end-1h
- DEF:ds0weekly=router.rrd:ds0:AVERAGE:start=11\:00:end=start+1h
-
-=head1 VDEF
-
-B<VDEF>:I<vname>=I<RPN expression>
-
-This command returns a value and/or a time according to the B<RPN>
-statements used. The resulting I<vname> will, depending on the
-functions used, have a value and a time component. When you use
-this I<vname> in another B<RPN> expression, you are effectively
-inserting its value just as if you had put a number at that place.
-The variable can also be used in the various graph and print
-elements.
-
-Example: C<VDEF:avg=mydata,AVERAGE>
-
-=head1 CDEF
-
-B<CDEF>:I<vname>=I<RPN expression>
-
-This command creates a new set of data points (in memory only, not
-in the B<RRD> file) out of one or more other data series. The B<RPN>
-instructions are used to evaluate a mathematical function on each
-data point. The resulting I<vname> can then be used further on in
-the script, just as if it were generated by a B<DEF> instruction.
-
-Example: C<CDEF:mydatabits=mydata,8,*>
-
-=head1 SEE ALSO
-
-L<rrdgraph> gives an overview of how B<rrdtool graph> works.
-L<rrdgraph_data> describes B<DEF>,B<CDEF> and B<VDEF> in detail,
-L<rrdgraph_rpn> describes the B<RPN> language used in the B<?DEF> statements,
-L<rrdgraph_graph> page describes all of the graph and print functions.
-
-Make sure to read L<rrdgraph_examples> for tipsE<amp>tricks.
-
-=head1 AUTHOR
-
-Program by Tobias Oetiker E<lt>oetiker@ee.ethz.chE<gt>
-
-This manual page by Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>
--- /dev/null
+=head1 NAME
+
+rrdgraph_examples - Examples for rrdtool graph
+
+=head1 SYNOPSIS
+
+B<rrdtool graph /home/httpd/html/test.png --img-format PNG \>
+
+followed by any of the examples below
+
+=head1 DESCRIPTION
+
+For your convenience some of the commands are explained here
+by using detailed examples. They are not always cut-and-paste
+ready because comments are intermixed with the examples.
+
+=head1 EXAMPLES
+
+=head2 Data with multiple resolutions
+
+ --end now --start end-120000s --width 400
+ DEF:ds0a=/home/rrdtool/data/router1.rrd:ds0:AVERAGE
+ DEF:ds0b=/home/rrdtool/data/router1.rrd:ds0:AVERAGE:step=1800
+ DEF:ds0c=/home/rrdtool/data/router1.rrd:ds0:AVERAGE:step=7200
+ LINE1:ds0a#0000FF:"default resolution\n"
+ LINE1:ds0b#00CCFF:"resolution 1800 seconds per interval\n"
+ LINE1:ds0c#FF00FF:"resolution 7200 seconds per interval\n"
+
+=head2 Nicely formatted legend section
+
+ DEF:ds0=/home/rrdtool/data/router1.rrd:ds0:AVERAGE
+ DEF:ds1=/home/rrdtool/data/router1.rrd:ds1:AVERAGE
+ VDEF:ds0max=ds0,MAXIMUM,8,*
+ VDEF:ds0avg=ds0,AVERAGE,8,*
+ VDEF:ds0min=ds0,MINIMUM,8,*
+ VDEF:ds0pct=95,ds0,PERCENTILE,8,*
+ VDEF:ds1max=ds1,MAXIMUM,8,*
+ VDEF:ds1avg=ds1,AVERAGE,8,*
+ VDEF:ds1min=ds1,MINIMUM,8,*
+ VDEF:ds1pct=95,ds1,PERCENTILE,8,*
+
+Note: consolidation occurs here.
+
+ CDEF:ds0bits=ds0,8,*
+ CDEF:ds1bits=ds1,8,*
+
+Note: 10 spaces to move text to the right
+
+ COMMENT:" "
+
+Note: three times size == 11 chars, "###.## xBps"
+
+ COMMENT:"Maximum "
+ COMMENT:"Average "
+ COMMENT:"Minimum "
+
+Note: last line contains new-line character
+
+ COMMENT:"95th percentile\n"
+ AREA:ds0bits#00C000:"Inbound "
+ GPRINT:ds0max:"%6.2lf %Sbps"
+ GPRINT:ds0avg:"%6.2lf %Sbps"
+ GPRINT:ds0min:"%6.2lf %Sbps"
+ GPRINT:ds0pct:"%6.2lf %Sbps\n"
+ LINE1:ds1bits#0000FF:"Outbound"
+ GPRINT:ds1max:"%6.2lf %Sbps"
+ GPRINT:ds1avg:"%6.2lf %Sbps"
+ GPRINT:ds1min:"%6.2lf %Sbps"
+ GPRINT:ds1pct:"%6.2lf %Sbps\n"
+
+=head2 Offsetting a line on the y-axis
+
+Depending on your needs you can do this in two ways:
+
+=over 4
+
+=item *
+
+Offset the data, then graph this
+
+ DEF:mydata=my.rrd:ds:AVERAGE
+
+Note: this will also influence anything that uses "data"
+
+ CDEF:data=mydata,100,+
+ LINE1:data#FF0000:"Data with offset"
+
+=item *
+
+Graph the original data, with an offset
+
+ DEF:mydata=my.rrd:ds:AVERAGE
+
+Note: no color in the first line so it is not visible
+
+ LINE1:100
+
+Note: the second line gets stacked on top of the first one
+
+ LINE1:data#FF0000:"Data with offset":STACK
+
+=back
+
+=head2 Time ranges
+
+ Last four weeks: --start end-4w --end 00:00
+ Januari 2001: --start 200101010000 --end start+31d
+ Januari 2001: --start 200101010000 --end 200102010000
+ Last hour: --start end-1h
+ Last 24 hours: <nothing at all>
+ Yesterday: --end 00:00
+
+=head2 Viewing This week and last week together
+
+ --end now --start end-1w
+ DEF:thisweek=router.rrd:ds0:AVERAGE
+ DEF:lastweek=router.rrd:ds0:AVERAGE:end=now-1w:start=end-1w
+
+shift the data forward by one week (604800 seconds)
+
+ SHIFT:lastweek:604800
+ [ more of the usual VDEF and CDEF stuff if you like ]
+ AREA:lastweek#0000FF:Last\ week
+ LINE1:thisweek#FF0000:This\ week
+
+=head1 SEE ALSO
+
+L<rrdgraph> gives an overview of how B<rrdtool graph> works.
+L<rrdgraph_data> describes B<DEF>,B<CDEF> and B<VDEF> in detail,
+L<rrdgraph_rpn> describes the B<RPN> language used in the B<?DEF> statements,
+L<rrdgraph_graph> page describes all of the graph and print functions.
+
+Make sure to read L<rrdgraph_examples> for tipsE<amp>tricks.
+
+=head1 AUTHOR
+
+Program by Tobias Oetiker E<lt>oetiker@ee.ethz.chE<gt>
+
+This manual page by Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>
+++ /dev/null
-=head1 NAME
-
-rrdgraph_examples - Examples for rrdtool graph
-
-=head1 SYNOPSIS
-
-B<rrdtool graph /home/httpd/html/test.png --img-format PNG \>
-
-followed by any of the examples below
-
-=head1 DESCRIPTION
-
-For your convenience some of the commands are explained here
-by using detailed examples. They are not always cut-and-paste
-ready because comments are intermixed with the examples.
-
-=head1 EXAMPLES
-
-=head2 Data with multiple resolutions
-
- --end now --start end-120000s --width 400
- DEF:ds0a=/home/rrdtool/data/router1.rrd:ds0:AVERAGE
- DEF:ds0b=/home/rrdtool/data/router1.rrd:ds0:AVERAGE:step=1800
- DEF:ds0c=/home/rrdtool/data/router1.rrd:ds0:AVERAGE:step=7200
- LINE1:ds0a#0000FF:"default resolution\n"
- LINE1:ds0b#00CCFF:"resolution 1800 seconds per interval\n"
- LINE1:ds0c#FF00FF:"resolution 7200 seconds per interval\n"
-
-=head2 Nicely formatted legend section
-
- DEF:ds0=/home/rrdtool/data/router1.rrd:ds0:AVERAGE
- DEF:ds1=/home/rrdtool/data/router1.rrd:ds1:AVERAGE
- VDEF:ds0max=ds0,MAXIMUM,8,*
- VDEF:ds0avg=ds0,AVERAGE,8,*
- VDEF:ds0min=ds0,MINIMUM,8,*
- VDEF:ds0pct=95,ds0,PERCENTILE,8,*
- VDEF:ds1max=ds1,MAXIMUM,8,*
- VDEF:ds1avg=ds1,AVERAGE,8,*
- VDEF:ds1min=ds1,MINIMUM,8,*
- VDEF:ds1pct=95,ds1,PERCENTILE,8,*
-
-Note: consolidation occurs here.
-
- CDEF:ds0bits=ds0,8,*
- CDEF:ds1bits=ds1,8,*
-
-Note: 10 spaces to move text to the right
-
- COMMENT:" "
-
-Note: three times size == 11 chars, "###.## xBps"
-
- COMMENT:"Maximum "
- COMMENT:"Average "
- COMMENT:"Minimum "
-
-Note: last line contains new-line character
-
- COMMENT:"95th percentile\n"
- AREA:ds0bits#00C000:"Inbound "
- GPRINT:ds0max:"%6.2lf %Sbps"
- GPRINT:ds0avg:"%6.2lf %Sbps"
- GPRINT:ds0min:"%6.2lf %Sbps"
- GPRINT:ds0pct:"%6.2lf %Sbps\n"
- LINE1:ds1bits#0000FF:"Outbound"
- GPRINT:ds1max:"%6.2lf %Sbps"
- GPRINT:ds1avg:"%6.2lf %Sbps"
- GPRINT:ds1min:"%6.2lf %Sbps"
- GPRINT:ds1pct:"%6.2lf %Sbps\n"
-
-=head2 Offsetting a line on the y-axis
-
-Depending on your needs you can do this in two ways:
-
-=over 4
-
-=item *
-
-Offset the data, then graph this
-
- DEF:mydata=my.rrd:ds:AVERAGE
-
-Note: this will also influence anything that uses "data"
-
- CDEF:data=mydata,100,+
- LINE1:data#FF0000:"Data with offset"
-
-=item *
-
-Graph the original data, with an offset
-
- DEF:mydata=my.rrd:ds:AVERAGE
-
-Note: no color in the first line so it is not visible
-
- LINE1:100
-
-Note: the second line gets stacked on top of the first one
-
- LINE1:data#FF0000:"Data with offset":STACK
-
-=back
-
-=head2 Time ranges
-
- Last four weeks: --start end-4w --end 00:00
- Januari 2001: --start 200101010000 --end start+31d
- Januari 2001: --start 200101010000 --end 200102010000
- Last hour: --start end-1h
- Last 24 hours: <nothing at all>
- Yesterday: --end 00:00
-
-=head2 Viewing This week and last week together
-
- --end now --start end-1w
- DEF:thisweek=router.rrd:ds0:AVERAGE
- DEF:lastweek=router.rrd:ds0:AVERAGE:end=now-1w:start=end-1w
-
-shift the data forward by one week (604800 seconds)
-
- SHIFT:lastweek:604800
- [ more of the usual VDEF and CDEF stuff if you like ]
- AREA:lastweek#0000FF:Last\ week
- LINE1:thisweek#FF0000:This\ week
-
-=head1 SEE ALSO
-
-L<rrdgraph> gives an overview of how B<rrdtool graph> works.
-L<rrdgraph_data> describes B<DEF>,B<CDEF> and B<VDEF> in detail,
-L<rrdgraph_rpn> describes the B<RPN> language used in the B<?DEF> statements,
-L<rrdgraph_graph> page describes all of the graph and print functions.
-
-Make sure to read L<rrdgraph_examples> for tipsE<amp>tricks.
-
-=head1 AUTHOR
-
-Program by Tobias Oetiker E<lt>oetiker@ee.ethz.chE<gt>
-
-This manual page by Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>
--- /dev/null
+=head1 NAME
+
+rrdgraph_graph - rrdtool graph command reference
+
+=head1 SYNOPSIS
+
+B<PRINT>B<:>I<vname>B<:>I<format>
+
+B<GPRINT>B<:>I<vname>B<:>I<format>
+
+B<COMMENT>B<:>I<text>
+
+B<VRULE>B<:>I<vname>B<#>I<color>[B<:>I<legend>]
+
+B<LINE>I<width>B<:>I<vname>B<#>I<color>[B<:>I<legend>][B<:>B<STACK>]
+
+B<AREA>B<:>I<vname>B<#>I<color>[B<:>I<legend>][B<:>B<STACK>]
+
+B<TICK>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<fraction>[B<:>I<legend>]]
+
+B<SHIFT>B<:>I<vname>B<:>I<offset>
+
+=cut
+
+B<PART>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<legend>]
+
+=pod
+
+B<PRINT>B<:>I<vname>B<:>I<CF>B<:>I<format> (deprecated)
+
+B<GPRINT>B<:>I<vname>B<:>I<CF>B<:>I<format> (deprecated)
+
+B<HRULE>B<:>I<value>B<#>I<color>[B<:>I<legend>] (deprecated)
+
+B<STACK>B<:>I<vname>B<#>I<color>[B<:>I<legend>] (deprecated)
+
+=head1 DESCRIPTION
+
+These instructions allow you to generate your image or report.
+If you don't use any graph elements, no graph is generated.
+Similarly no report is generated if you don't use print options.
+
+=head1 PRINT
+
+=over 4
+
+=item B<PRINT:>I<vname>B<:>I<CF><:>I<format>
+
+I<Deprecated. Use the new form of this command in new scripts.>
+The first form of this command is to be used with B<CDEF> I<vname>s.
+
+=item B<PRINT:>I<vname>B<:>I<format>
+
+Depending on the context, either the value component or the time
+component of a B<VDEF> is printed using I<format>. It is an error
+to specify a I<vname> generated by a B<DEF> or B<CDEF>.
+
+Any text in I<format> is printed literally with one exception:
+The percent character introduces a formatter string. This string
+can be:
+
+For printing values:
+
+=over 4
+
+=item *
+
+B<%%> just prints a literal '%' character
+
+=item *
+
+B<%#.#le> prints like 1.2346e+04. Optional numbers # are field width and
+decimal precision
+
+=item *
+
+B<%#.#lf> prints like 12345.6789, with optional field width and precision
+
+=item *
+
+B<%s> place this after B<%le>, B<%lf> or B<%lg>. This will be replaced by the
+appropriate SI magnitude unit and the value will be scaled
+accordingly (123456 -> 123.456 k)
+
+=item *
+
+B<%S> is similar to B<%s>. It does however use a previously defined
+magnitude unit. If there is no such unit yet, it tries to define
+one (just like B<%s>). However, if the value is zero, the magnitude
+unit stays undefined. Thus, formatter strings using B<%S> and no B<%s>
+will all use the same magnitude unit except for zero values.
+
+=back
+
+For printing times:
+
+=over 4
+
+=item *
+
+B<%%> just prints a literal '%' character
+
+=item *
+
+B<%a, %A> prints abbreviated, full weekday name
+
+=item *
+
+B<%b, %B> prints abbreviated, full month name
+
+=item *
+
+B<%d, %m, %y, %H, %M, %S> day,month,year,hour,minute,second all in two-digit format
+
+=item *
+
+B<%Y> year in 4-digit format
+
+=item *
+
+B<%I, %p> hour (01..12), 'am' or 'pm'
+
+=item *
+
+B<%j, %w> day of the week (0..6), day of the year (1..366)
+
+=item *
+
+B<%c, %x, %X> date+time, date, time
+
+=item *
+
+B<%U, %W> week number of the current year with either the first Sunday or
+the first Monday determining the first week
+
+=item *
+
+B<%Z> time zone
+
+=back
+
+=back
+
+=head1 GRAPH
+
+=over 4
+
+=item B<GPRINT>B<:>I<vname>B<:>I<CF>B<:>I<format>
+
+I<Deprecated. Use the new form of this command in new scripts.>
+This is the same as C<PRINT> but now it is printed inside the graph.
+
+=item B<GPRINT>B<:>I<vname>B<:>I<format>
+
+This is the same as C<PRINT> but now it is printed inside the graph.
+
+=item B<COMMENT>B<:>I<text>
+
+Text is printed literally in the legend section of the graph
+
+=item B<HRULE>B<:>I<value>B<#>I<color> [ :I<legend> ]
+
+I<Deprecated. Use B<LINEx> in new scripts.>
+
+=item B<VRULE>B<:>I<vname>B<#>I<color> [B<:>I<legend> ]
+
+Draw a vertical line at I<time>. Its color is composed from three
+hexadecimal numbers specifying the color components (00 is off, FF is
+maximum) red, green and blue. Optionally a legend box and string is
+printed in the legend section. I<time> may be a number or a variable
+from a B<VDEF>. It is an error to use I<vname>s from B<DEF> or B<CDEF> here.
+
+=item B<LINE>I<width>B<:>I<{vname or number}>B<#>I<color>[B<:>I<legend>]
+[ C<:STACK> ]
+
+Draw a line of the specified width into the graph. If the color
+is not specified, the drawing is done 'blind'. This is useful when
+stacking something else on top of this line. Also optional is the
+legend box and string which will be printed in the legend section
+if specified. The B<vname> can be generated by B<DEF>, B<VDEF> and
+B<CDEF>. If the optional B<STACK> modifier is used, this line is
+stacked on top of the previous element which can be a B<LINEx> or
+an B<AREA>
+
+=item B<AREA>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<legend>][B<:STACK>]
+
+See B<LINE>, however the area between the x-axis and the line will
+also be filled.
+
+=item B<TICK>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<fraction>[B<:>I<legend>]]
+
+Plot a tick mark (a vertical line) for each value of I<vname> that is
+non-zero and not *UNKNOWN*. The I<fraction> argument specifies the
+length of the tick mark as a fraction of the y-axis; the default value
+is 0.1 (10% of the axis). Note that the color specification is not
+optional.
+
+=item B<SHIFT>B<:>I<vname>B<:>I<offset>
+
+Using this command B<RRDtool> will graph the following elements
+with the specified offset. For instance, you can specify an
+offset of S<( 7*24*60*60 = ) 604800 seconds> to "look back" one
+week. Make sure to notify the viewer you did so...
+As with the other graphing elements, you can specify a number or
+a variable here.
+
+=cut
+
+=item B<PART>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<legend>]
+
+B<RRDtool> has now support for B<pie charts>. If you include the
+B<PART> command, the canvas is extended to make room for a chart
+The size of the canvas is determined by the lesser of
+L<width and height|rrdgraph/item_Size>.
+
+Pie parts will be concatenated, the first one will start at the
+top and parts will be created clockwise. The size of the part
+is defined by the value part of the L<VDEF|rrdgraph_data/VDEF>
+function. It should return a number between 0 and 100, being a
+percentage. Providing wrong input will produce undefined results.
+
+=pod
+
+=item B<STACK>B<:>I<vname>B<#>I<color>[B<:>I<legend>]
+
+I<Deprecated. Use the B<STACK> modifiers on the other commands.>
+
+=back
+
+B<Some notes on stacking>
+
+When stacking, an element is not placed above the X-axis but rather
+on top of the previous element. There must be something to stack
+upon.
+
+An B<invisible> LINEx or AREA B<is> present and can be stacked upon.
+
+An B<unknown> value makes the entire stack unknown from that moment on.
+You don't know where to begin (the unknown value) and therefore do
+not know where to end.
+
+If you want to make sure you will be displaying a certain variable,
+make sure never to stack upon the unknown value. Use a CDEF instruction
+with B<IF> and B<UN> to do so.
+
+=head1 NOTES on legend arguments
+
+=head2 Escaping the colon
+
+In a ':' in a I<legend> argument will mark the end of the legend. To
+enter a ':' into a legend, the colon must be escaped with a backslash '\:'.
+Beware, that many environments look for backslashes themselves, so it may
+be necessary to write two backslashes so that one is passed onto rrd_graph.
+
+=head2 String Formatting
+
+The text printed below the actual graph can be formated by appending special
+escaped characters at the end of a text. When ever such a character occurs,
+all pending text is pushed onto the graph according to the character
+specified.
+
+Valid markers are: B<\j> for justified, B<\l> for left aligned, B<\r> for
+right aligned and B<\c> for centered. In the next section there is an
+example showing how to use centered formating.
+
+Normally there are two space characters inserted between every two items
+printed into the graph. The space following a string can be suppressed by
+putting a B<\g> at the end of the string. The B<\g> also ignores any space
+inside the string if it is at the very end of the string. This can be used
+in connection with B<%s> to suppress empty unit strings.
+
+ GPRINT:a:MAX:%lf%s\g
+
+A special case is COMMENT:B<\s> this inserts some additional vertical space
+before placing the next row of legends.
+
+If you are using the proportional font in your graph, you can use tab characters
+or the sequence B<\t> to lin-up legend elements. Note that the tabs inserted are
+relative to the start of the current legend element!
+
+=head1 SEE ALSO
+
+L<rrdgraph> gives an overview of how B<rrdtool graph> works.
+L<rrdgraph_data> describes B<DEF>,B<CDEF> and B<VDEF> in detail,
+L<rrdgraph_rpn> describes the B<RPN> language used in the B<?DEF> statements,
+L<rrdgraph_graph> page describes all of the graph and print functions.
+
+Make sure to read L<rrdgraph_examples> for tipsE<amp>tricks.
+
+=head1 AUTHOR
+
+Program by Tobias Oetiker E<lt>oetiker@ee.ethz.chE<gt>
+
+This manual page by Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>
+++ /dev/null
-=head1 NAME
-
-rrdgraph_graph - rrdtool graph command reference
-
-=head1 SYNOPSIS
-
-B<PRINT>B<:>I<vname>B<:>I<format>
-
-B<GPRINT>B<:>I<vname>B<:>I<format>
-
-B<COMMENT>B<:>I<text>
-
-B<VRULE>B<:>I<vname>B<#>I<color>[B<:>I<legend>]
-
-B<LINE>I<width>B<:>I<vname>B<#>I<color>[B<:>I<legend>][B<:>B<STACK>]
-
-B<AREA>B<:>I<vname>B<#>I<color>[B<:>I<legend>][B<:>B<STACK>]
-
-B<TICK>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<fraction>[B<:>I<legend>]]
-
-B<SHIFT>B<:>I<vname>B<:>I<offset>
-
-=cut
-
-B<PART>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<legend>]
-
-=pod
-
-B<PRINT>B<:>I<vname>B<:>I<CF>B<:>I<format> (deprecated)
-
-B<GPRINT>B<:>I<vname>B<:>I<CF>B<:>I<format> (deprecated)
-
-B<HRULE>B<:>I<value>B<#>I<color>[B<:>I<legend>] (deprecated)
-
-B<STACK>B<:>I<vname>B<#>I<color>[B<:>I<legend>] (deprecated)
-
-=head1 DESCRIPTION
-
-These instructions allow you to generate your image or report.
-If you don't use any graph elements, no graph is generated.
-Similarly no report is generated if you don't use print options.
-
-=head1 PRINT
-
-=over 4
-
-=item B<PRINT:>I<vname>B<:>I<CF><:>I<format>
-
-I<Deprecated. Use the new form of this command in new scripts.>
-The first form of this command is to be used with B<CDEF> I<vname>s.
-
-=item B<PRINT:>I<vname>B<:>I<format>
-
-Depending on the context, either the value component or the time
-component of a B<VDEF> is printed using I<format>. It is an error
-to specify a I<vname> generated by a B<DEF> or B<CDEF>.
-
-Any text in I<format> is printed literally with one exception:
-The percent character introduces a formatter string. This string
-can be:
-
-For printing values:
-
-=over 4
-
-=item *
-
-B<%%> just prints a literal '%' character
-
-=item *
-
-B<%#.#le> prints like 1.2346e+04. Optional numbers # are field width and
-decimal precision
-
-=item *
-
-B<%#.#lf> prints like 12345.6789, with optional field width and precision
-
-=item *
-
-B<%s> place this after B<%le>, B<%lf> or B<%lg>. This will be replaced by the
-appropriate SI magnitude unit and the value will be scaled
-accordingly (123456 -> 123.456 k)
-
-=item *
-
-B<%S> is similar to B<%s>. It does however use a previously defined
-magnitude unit. If there is no such unit yet, it tries to define
-one (just like B<%s>). However, if the value is zero, the magnitude
-unit stays undefined. Thus, formatter strings using B<%S> and no B<%s>
-will all use the same magnitude unit except for zero values.
-
-=back
-
-For printing times:
-
-=over 4
-
-=item *
-
-B<%%> just prints a literal '%' character
-
-=item *
-
-B<%a, %A> prints abbreviated, full weekday name
-
-=item *
-
-B<%b, %B> prints abbreviated, full month name
-
-=item *
-
-B<%d, %m, %y, %H, %M, %S> day,month,year,hour,minute,second all in two-digit format
-
-=item *
-
-B<%Y> year in 4-digit format
-
-=item *
-
-B<%I, %p> hour (01..12), 'am' or 'pm'
-
-=item *
-
-B<%j, %w> day of the week (0..6), day of the year (1..366)
-
-=item *
-
-B<%c, %x, %X> date+time, date, time
-
-=item *
-
-B<%U, %W> week number of the current year with either the first Sunday or
-the first Monday determining the first week
-
-=item *
-
-B<%Z> time zone
-
-=back
-
-=back
-
-=head1 GRAPH
-
-=over 4
-
-=item B<GPRINT>B<:>I<vname>B<:>I<CF>B<:>I<format>
-
-I<Deprecated. Use the new form of this command in new scripts.>
-This is the same as C<PRINT> but now it is printed inside the graph.
-
-=item B<GPRINT>B<:>I<vname>B<:>I<format>
-
-This is the same as C<PRINT> but now it is printed inside the graph.
-
-=item B<COMMENT>B<:>I<text>
-
-Text is printed literally in the legend section of the graph
-
-=item B<HRULE>B<:>I<value>B<#>I<color> [ :I<legend> ]
-
-I<Deprecated. Use B<LINEx> in new scripts.>
-
-=item B<VRULE>B<:>I<vname>B<#>I<color> [B<:>I<legend> ]
-
-Draw a vertical line at I<time>. Its color is composed from three
-hexadecimal numbers specifying the color components (00 is off, FF is
-maximum) red, green and blue. Optionally a legend box and string is
-printed in the legend section. I<time> may be a number or a variable
-from a B<VDEF>. It is an error to use I<vname>s from B<DEF> or B<CDEF> here.
-
-=item B<LINE>I<width>B<:>I<{vname or number}>B<#>I<color>[B<:>I<legend>]
-[ C<:STACK> ]
-
-Draw a line of the specified width into the graph. If the color
-is not specified, the drawing is done 'blind'. This is useful when
-stacking something else on top of this line. Also optional is the
-legend box and string which will be printed in the legend section
-if specified. The B<vname> can be generated by B<DEF>, B<VDEF> and
-B<CDEF>. If the optional B<STACK> modifier is used, this line is
-stacked on top of the previous element which can be a B<LINEx> or
-an B<AREA>
-
-=item B<AREA>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<legend>][B<:STACK>]
-
-See B<LINE>, however the area between the x-axis and the line will
-also be filled.
-
-=item B<TICK>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<fraction>[B<:>I<legend>]]
-
-Plot a tick mark (a vertical line) for each value of I<vname> that is
-non-zero and not *UNKNOWN*. The I<fraction> argument specifies the
-length of the tick mark as a fraction of the y-axis; the default value
-is 0.1 (10% of the axis). Note that the color specification is not
-optional.
-
-=item B<SHIFT>B<:>I<vname>B<:>I<offset>
-
-Using this command B<RRDtool> will graph the following elements
-with the specified offset. For instance, you can specify an
-offset of S<( 7*24*60*60 = ) 604800 seconds> to "look back" one
-week. Make sure to notify the viewer you did so...
-As with the other graphing elements, you can specify a number or
-a variable here.
-
-=cut
-
-=item B<PART>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<legend>]
-
-B<RRDtool> has now support for B<pie charts>. If you include the
-B<PART> command, the canvas is extended to make room for a chart
-The size of the canvas is determined by the lesser of
-L<width and height|rrdgraph/item_Size>.
-
-Pie parts will be concatenated, the first one will start at the
-top and parts will be created clockwise. The size of the part
-is defined by the value part of the L<VDEF|rrdgraph_data/VDEF>
-function. It should return a number between 0 and 100, being a
-percentage. Providing wrong input will produce undefined results.
-
-=pod
-
-=item B<STACK>B<:>I<vname>B<#>I<color>[B<:>I<legend>]
-
-I<Deprecated. Use the B<STACK> modifiers on the other commands.>
-
-=back
-
-B<Some notes on stacking>
-
-When stacking, an element is not placed above the X-axis but rather
-on top of the previous element. There must be something to stack
-upon.
-
-An B<invisible> LINEx or AREA B<is> present and can be stacked upon.
-
-An B<unknown> value makes the entire stack unknown from that moment on.
-You don't know where to begin (the unknown value) and therefore do
-not know where to end.
-
-If you want to make sure you will be displaying a certain variable,
-make sure never to stack upon the unknown value. Use a CDEF instruction
-with B<IF> and B<UN> to do so.
-
-=head1 NOTES on legend arguments
-
-=head2 Escaping the colon
-
-In a ':' in a I<legend> argument will mark the end of the legend. To
-enter a ':' into a legend, the colon must be escaped with a backslash '\:'.
-Beware, that many environments look for backslashes themselves, so it may
-be necessary to write two backslashes so that one is passed onto rrd_graph.
-
-=head2 String Formatting
-
-The text printed below the actual graph can be formated by appending special
-escaped characters at the end of a text. When ever such a character occurs,
-all pending text is pushed onto the graph according to the character
-specified.
-
-Valid markers are: B<\j> for justified, B<\l> for left aligned, B<\r> for
-right aligned and B<\c> for centered. In the next section there is an
-example showing how to use centered formating.
-
-Normally there are two space characters inserted between every two items
-printed into the graph. The space following a string can be suppressed by
-putting a B<\g> at the end of the string. The B<\g> also ignores any space
-inside the string if it is at the very end of the string. This can be used
-in connection with B<%s> to suppress empty unit strings.
-
- GPRINT:a:MAX:%lf%s\g
-
-A special case is COMMENT:B<\s> this inserts some additional vertical space
-before placing the next row of legends.
-
-If you are using the proportional font in your graph, you can use tab characters
-or the sequence B<\t> to lin-up legend elements. Note that the tabs inserted are
-relative to the start of the current legend element!
-
-=head1 SEE ALSO
-
-L<rrdgraph> gives an overview of how B<rrdtool graph> works.
-L<rrdgraph_data> describes B<DEF>,B<CDEF> and B<VDEF> in detail,
-L<rrdgraph_rpn> describes the B<RPN> language used in the B<?DEF> statements,
-L<rrdgraph_graph> page describes all of the graph and print functions.
-
-Make sure to read L<rrdgraph_examples> for tipsE<amp>tricks.
-
-=head1 AUTHOR
-
-Program by Tobias Oetiker E<lt>oetiker@ee.ethz.chE<gt>
-
-This manual page by Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>
--- /dev/null
+=head1 NAME
+
+rrdgraph_rpn - About RPN Math in rrdtool graph
+
+=head1 SYNOPSIS
+
+I<RPN expression>:=I<vname>|I<operator>|I<value>[,I<RPN expression>]
+
+=head1 DESCRIPTION
+
+If you have ever used a traditional HP calculator you already know
+B<RPN>. The idea behind B<RPN> is that you have a stack and push
+your data onto this stack. Whenever you execute an operation, it
+takes as many elements from the stack as needed. Pushing is done
+implicit so whenever you specify a number or a variable, it gets
+pushed automatically.
+
+At the end of the calculation there should be one and exactly one
+value left on the stack. This is the outcome of the function and
+this is what is put into the I<vname>. For B<CDEF> instructions,
+the stack is processed for each data point on the graph. B<VDEF>
+instructions work on an entire data set in one run.
+
+Example: C<VDEF:maximum=mydata,MAXIMUM>
+
+This will set variable "maximum" which you now can use in the rest
+of your RRD script.
+
+Example: C<CDEF:mydatabits=mydata,8,*>
+
+This means: push variable I<mydata>, push the number 8, execute
+the operator I<+>. The operator needs two elements and uses those
+to return one value. This value is then stored in I<mydatabits>.
+As you may have guessed, this instruction means nothing more than
+I<mydatabits = mydata * 8>. The real power of B<RPN> lies in the
+fact that it is always clear in which order to process the input.
+For expressions like C<a = b + 3 * 5> you need to multiply 3 with
+5 first before you add I<b> to get I<a>. However, with parentheses
+you could change this order: C<a = (b + 3) * 5>. In B<RPN>, you
+would do C<a = b, 3, +, 5, *> and need no parentheses.
+
+=head1 OPERATORS
+
+=over 4
+
+=item Boolean operators
+
+B<LT, LE, GT, GE, EQ, NE>
+
+Pop two elements from the stack, compare them for the selected condition
+and return 1 for true or 0 for false. Comparing an I<unknown> or an
+I<infinite> value will always result in 0 (false).
+
+B<UN, ISINF>
+
+Pop one element from the stack, compare this to I<unknown> respectively
+to I<positive or negative infinity>. Returns 1 for true or 0 for false.
+
+B<IF>
+
+Pops three elements from the stack. If the last element is 0 (false),
+the first value is pushed back onto the stack, otherwise the second
+popped value is pushed back. This does, indeed, mean that any value
+other than 0 is considered to be true.
+
+Example: C<A,B,C,IF> should be read as C<if (A) then (B) else (C)>
+
+Z<>
+
+=item Comparing values
+
+B<MIN, MAX>
+
+Pops two elements from the stack and returns the lesser or larger.
+The two numbers shouldn't be I<infinite> or I<unknown>, if they are
+that value is pushed back onto the stack as the result.
+
+B<LIMIT>
+
+Pops two elements from the stack and uses them to define a range.
+Then it pops another element and if it falls inside the range, it
+is pushed back. If not, an I<unknown> is pushed.
+
+The range defined includes the two boundaries (so: a number equal
+to one of the boundaries will be pushed back). If any of the three
+numbers involved is either I<unknown> or I<infinite> this function
+will always return an I<unknown>
+
+Example: C<CDEF:a=alpha,0,100,LIMIT> will return I<unknown> if
+alpha is lower than 0 or if it is higher than 100.
+
+Z<>
+
+=item Arithmetics
+
+B<+, -, *, /, %>
+
+Add, subtract, multiply, divide, modulo
+
+B<SIN, COS, LOG, EXP, SQRT>
+
+Sine, cosine (input in radians), log, exp (natural logarithm), square root
+
+B<ATAN>
+
+Arctangent. Output in radians.
+
+B<FLOOR, CEIL>
+
+Round down,up to the nearest integer
+
+Z<>
+
+=item Set Operations
+
+B<SORT, REV>
+
+Pop one element from the stack. This is the I<count> of items to be sorted
+(or reversed). The top I<count> of the remaining elements are then sorted
+(or reversed) in place on the stack.
+
+Example: C<CDEF:x=v1,v2,v3,v4,v5,v6,6,SORT,POP,5,REV,POP,+,+,+,4,/> will
+compute the average of the values v1..v6 after removing the smallest and
+largest.
+
+B<TREND>
+
+Create a "sliding window" average of another data series.
+
+Usage:
+CDEF:smoothed=x,1800,TREND
+
+This will create a half-hour (1800 second) sliding window average of x. The
+average is essentially computed as shown here:
+
+ +---!---!---!---!---!---!---!---!--->
+ now
+ delay t0
+ <--------------->
+ delay t1
+ <--------------->
+ delay t2
+ <--------------->
+
+
+ Value at sample (t0) will be the average between (t0-delay) and (t0)
+ Value at sample (t1) will be the average between (t1-delay) and (t1)
+ Value at sample (t2) will be the average between (t2-delay) and (t2)
+
+=item Special values
+
+B<UNKN>
+
+Pushes an unknown value on the stack
+
+B<INF, NEGINF>
+
+Pushes a positive or negative infinite value on the stack. When
+such a value is graphed, it appears at the top or bottom of the
+graph, no matter what the actual value on the y-axis is.
+
+B<PREV>
+
+Pushes an I<unknown> value if this is the first value of a data
+set or otherwise the result of this B<CDEF> at the previous time
+step. This allows you to do calculations across the data. This
+function cannot be used in B<VDEF> instructions.
+
+B<PREV(vname)>
+
+Pushes an I<unknown> value if this is the first value of a data
+set or otherwise the result of vname variable at the previous time
+step. This allows you to do calculations across the data. This
+function cannot be used in B<VDEF> instructions.
+
+B<COUNT>
+
+Pushes the number 1 if this is the first value of the data set, the
+number 2 if it is the second, and so on. This special value, allows
+you to make calculations based on the position of the value within
+the data set. This function cannot be used in B<VDEF> instructions.
+
+Z<>
+
+=item Time
+
+Time inside RRDtool is measured in seconds since the epoch. This
+epoch is defined to be S<C<Thu Jan 1 00:00:00 UTC 1970>>.
+
+B<NOW>
+
+Pushes the current time on the stack.
+
+B<TIME>
+
+Pushes the time the currently processed value was taken onto the stack.
+
+B<LTIME>
+
+Takes the time as defined by B<TIME>, applies the time zone offset
+valid at that time including daylight saving time if your OS supports
+it, and pushes the result on the stack. There is an elaborate example
+in the examples section on how to use this.
+
+=item Processing the stack directly
+
+B<DUP, POP, EXC>
+
+Duplicate the top element, remove the top element, exchange the two
+top elements.
+
+Z<>
+
+=back
+
+=head1 VARIABLES
+
+These operators work only on B<VDEF> statements.
+
+=over 4
+
+=item MAXIMUM, MINIMUM, AVERAGE
+
+Return the corresponding value, MAXIMUM and MINIMUM also return
+the first occurrence of that value in the time component.
+
+Example: C<VDEF:avg=mydata,AVERAGE>
+
+=item LAST, FIRST
+
+Return the last,first value including its time. The time for
+FIRST is actually the start of the corresponding interval, where
+the LAST time component returns the end of the corresponding interval.
+
+Example: C<VDEF:first=mydata,FIRST>
+
+=item TOTAL
+
+Returns the rate from each defined time slot multiplied with the
+step size. This can for instance return total bytes transfered
+when you have logged bytes per second. The time component returns
+the amount of seconds
+
+Example: C<VDEF:total=mydata,TOTAL>
+
+=item PERCENT
+
+Should follow a B<DEF> or B<CDEF> I<vname>. This I<vname> is popped,
+another number is popped which is a certain percentage (0..100). The
+data set is then sorted and the value returned is chosen such that
+I<percentage> percent of the values is lower or equal than the result.
+I<Unknown> values are considered lower than any finite number for this
+purpose so if this operator returns an I<unknown> you have quite a lot
+of them in your data. B<Inf>inite numbers are lesser, or more, than the
+finite numbers and are always more than the I<Unknown> numbers.
+(NaN E<lt> -INF E<lt> finite values E<lt> INF)
+
+Example: C<VDEF:perc95=mydata,95,PERCENT>
+
+=back
+
+=head1 SEE ALSO
+
+L<rrdgraph> gives an overview of how B<rrdtool graph> works.
+L<rrdgraph_data> describes B<DEF>,B<CDEF> and B<VDEF> in detail,
+L<rrdgraph_rpn> describes the B<RPN> language used in the B<?DEF> statements,
+L<rrdgraph_graph> page describes all of the graph and print functions.
+
+Make sure to read L<rrdgraph_examples> for tipsE<amp>tricks.
+
+=head1 AUTHOR
+
+Program by Tobias Oetiker E<lt>oetiker@ee.ethz.chE<gt>
+
+This manual page by Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>
+++ /dev/null
-=head1 NAME
-
-rrdgraph_rpn - About RPN Math in rrdtool graph
-
-=head1 SYNOPSIS
-
-I<RPN expression>:=I<vname>|I<operator>|I<value>[,I<RPN expression>]
-
-=head1 DESCRIPTION
-
-If you have ever used a traditional HP calculator you already know
-B<RPN>. The idea behind B<RPN> is that you have a stack and push
-your data onto this stack. Whenever you execute an operation, it
-takes as many elements from the stack as needed. Pushing is done
-implicit so whenever you specify a number or a variable, it gets
-pushed automatically.
-
-At the end of the calculation there should be one and exactly one
-value left on the stack. This is the outcome of the function and
-this is what is put into the I<vname>. For B<CDEF> instructions,
-the stack is processed for each data point on the graph. B<VDEF>
-instructions work on an entire data set in one run.
-
-Example: C<VDEF:maximum=mydata,MAXIMUM>
-
-This will set variable "maximum" which you now can use in the rest
-of your RRD script.
-
-Example: C<CDEF:mydatabits=mydata,8,*>
-
-This means: push variable I<mydata>, push the number 8, execute
-the operator I<+>. The operator needs two elements and uses those
-to return one value. This value is then stored in I<mydatabits>.
-As you may have guessed, this instruction means nothing more than
-I<mydatabits = mydata * 8>. The real power of B<RPN> lies in the
-fact that it is always clear in which order to process the input.
-For expressions like C<a = b + 3 * 5> you need to multiply 3 with
-5 first before you add I<b> to get I<a>. However, with parentheses
-you could change this order: C<a = (b + 3) * 5>. In B<RPN>, you
-would do C<a = b, 3, +, 5, *> and need no parentheses.
-
-=head1 OPERATORS
-
-=over 4
-
-=item Boolean operators
-
-B<LT, LE, GT, GE, EQ, NE>
-
-Pop two elements from the stack, compare them for the selected condition
-and return 1 for true or 0 for false. Comparing an I<unknown> or an
-I<infinite> value will always result in 0 (false).
-
-B<UN, ISINF>
-
-Pop one element from the stack, compare this to I<unknown> respectively
-to I<positive or negative infinity>. Returns 1 for true or 0 for false.
-
-B<IF>
-
-Pops three elements from the stack. If the last element is 0 (false),
-the first value is pushed back onto the stack, otherwise the second
-popped value is pushed back. This does, indeed, mean that any value
-other than 0 is considered to be true.
-
-Example: C<A,B,C,IF> should be read as C<if (A) then (B) else (C)>
-
-Z<>
-
-=item Comparing values
-
-B<MIN, MAX>
-
-Pops two elements from the stack and returns the lesser or larger.
-The two numbers shouldn't be I<infinite> or I<unknown>, if they are
-that value is pushed back onto the stack as the result.
-
-B<LIMIT>
-
-Pops two elements from the stack and uses them to define a range.
-Then it pops another element and if it falls inside the range, it
-is pushed back. If not, an I<unknown> is pushed.
-
-The range defined includes the two boundaries (so: a number equal
-to one of the boundaries will be pushed back). If any of the three
-numbers involved is either I<unknown> or I<infinite> this function
-will always return an I<unknown>
-
-Example: C<CDEF:a=alpha,0,100,LIMIT> will return I<unknown> if
-alpha is lower than 0 or if it is higher than 100.
-
-Z<>
-
-=item Arithmetics
-
-B<+, -, *, /, %>
-
-Add, subtract, multiply, divide, modulo
-
-B<SIN, COS, LOG, EXP, SQRT>
-
-Sine, cosine (input in radians), log, exp (natural logarithm), square root
-
-B<ATAN>
-
-Arctangent. Output in radians.
-
-B<FLOOR, CEIL>
-
-Round down,up to the nearest integer
-
-Z<>
-
-=item Set Operations
-
-B<SORT, REV>
-
-Pop one element from the stack. This is the I<count> of items to be sorted
-(or reversed). The top I<count> of the remaining elements are then sorted
-(or reversed) in place on the stack.
-
-Example: C<CDEF:x=v1,v2,v3,v4,v5,v6,6,SORT,POP,5,REV,POP,+,+,+,4,/> will
-compute the average of the values v1..v6 after removing the smallest and
-largest.
-
-B<TREND>
-
-Create a "sliding window" average of another data series.
-
-Usage:
-CDEF:smoothed=x,1800,TREND
-
-This will create a half-hour (1800 second) sliding window average of x. The
-average is essentially computed as shown here:
-
- +---!---!---!---!---!---!---!---!--->
- now
- delay t0
- <--------------->
- delay t1
- <--------------->
- delay t2
- <--------------->
-
-
- Value at sample (t0) will be the average between (t0-delay) and (t0)
- Value at sample (t1) will be the average between (t1-delay) and (t1)
- Value at sample (t2) will be the average between (t2-delay) and (t2)
-
-=item Special values
-
-B<UNKN>
-
-Pushes an unknown value on the stack
-
-B<INF, NEGINF>
-
-Pushes a positive or negative infinite value on the stack. When
-such a value is graphed, it appears at the top or bottom of the
-graph, no matter what the actual value on the y-axis is.
-
-B<PREV>
-
-Pushes an I<unknown> value if this is the first value of a data
-set or otherwise the result of this B<CDEF> at the previous time
-step. This allows you to do calculations across the data. This
-function cannot be used in B<VDEF> instructions.
-
-B<PREV(vname)>
-
-Pushes an I<unknown> value if this is the first value of a data
-set or otherwise the result of vname variable at the previous time
-step. This allows you to do calculations across the data. This
-function cannot be used in B<VDEF> instructions.
-
-B<COUNT>
-
-Pushes the number 1 if this is the first value of the data set, the
-number 2 if it is the second, and so on. This special value, allows
-you to make calculations based on the position of the value within
-the data set. This function cannot be used in B<VDEF> instructions.
-
-Z<>
-
-=item Time
-
-Time inside RRDtool is measured in seconds since the epoch. This
-epoch is defined to be S<C<Thu Jan 1 00:00:00 UTC 1970>>.
-
-B<NOW>
-
-Pushes the current time on the stack.
-
-B<TIME>
-
-Pushes the time the currently processed value was taken onto the stack.
-
-B<LTIME>
-
-Takes the time as defined by B<TIME>, applies the time zone offset
-valid at that time including daylight saving time if your OS supports
-it, and pushes the result on the stack. There is an elaborate example
-in the examples section on how to use this.
-
-=item Processing the stack directly
-
-B<DUP, POP, EXC>
-
-Duplicate the top element, remove the top element, exchange the two
-top elements.
-
-Z<>
-
-=back
-
-=head1 VARIABLES
-
-These operators work only on B<VDEF> statements.
-
-=over 4
-
-=item MAXIMUM, MINIMUM, AVERAGE
-
-Return the corresponding value, MAXIMUM and MINIMUM also return
-the first occurrence of that value in the time component.
-
-Example: C<VDEF:avg=mydata,AVERAGE>
-
-=item LAST, FIRST
-
-Return the last,first value including its time. The time for
-FIRST is actually the start of the corresponding interval, where
-the LAST time component returns the end of the corresponding interval.
-
-Example: C<VDEF:first=mydata,FIRST>
-
-=item TOTAL
-
-Returns the rate from each defined time slot multiplied with the
-step size. This can for instance return total bytes transfered
-when you have logged bytes per second. The time component returns
-the amount of seconds
-
-Example: C<VDEF:total=mydata,TOTAL>
-
-=item PERCENT
-
-Should follow a B<DEF> or B<CDEF> I<vname>. This I<vname> is popped,
-another number is popped which is a certain percentage (0..100). The
-data set is then sorted and the value returned is chosen such that
-I<percentage> percent of the values is lower or equal than the result.
-I<Unknown> values are considered lower than any finite number for this
-purpose so if this operator returns an I<unknown> you have quite a lot
-of them in your data. B<Inf>inite numbers are lesser, or more, than the
-finite numbers and are always more than the I<Unknown> numbers.
-(NaN E<lt> -INF E<lt> finite values E<lt> INF)
-
-Example: C<VDEF:perc95=mydata,95,PERCENT>
-
-=back
-
-=head1 SEE ALSO
-
-L<rrdgraph> gives an overview of how B<rrdtool graph> works.
-L<rrdgraph_data> describes B<DEF>,B<CDEF> and B<VDEF> in detail,
-L<rrdgraph_rpn> describes the B<RPN> language used in the B<?DEF> statements,
-L<rrdgraph_graph> page describes all of the graph and print functions.
-
-Make sure to read L<rrdgraph_examples> for tipsE<amp>tricks.
-
-=head1 AUTHOR
-
-Program by Tobias Oetiker E<lt>oetiker@ee.ethz.chE<gt>
-
-This manual page by Alex van den Bogaerdt E<lt>alex@ergens.op.het.netE<gt>
rrdinfo - extract header information from an RRD
-=for html <div align="right"><a href="rrdinfo.pdf">PDF</a> version.</div>
-
=head1 SYNOPSIS
B<rrdtool> B<info> I<filename.rrd>
rrdlast - Return the date of the last data sample in an RRD
-=for html <div align="right"><a href="rrdlast.pdf">PDF</a> version.</div>
-
=head1 SYNOPSIS
B<rrdtool> B<last> I<filename>
rrdresize - alters the size of an RRA and creates new .rrd file
-=for html <div align="right"><a href="rrdresize.pdf">PDF</a> version.</div>
-
=head1 SYNOPSIS
B<rrdtool> B<resize> I<filename> I<rra-num> B<GROW>I<|>B<SHRINK> I<rows>
rrdrestore - Restore the contents of an RRD from its XML dump format
-=for html <div align="right"><a href="rrdrestore.pdf">PDF</a> version.</div>
-
=head1 SYNOPSIS
B<rrdtool> B<restore> I<filename.xml> I<filename.rrd>
rrdtune - Modify some basic properties of a Round Robin Database
-=for html <div align="right"><a href="rrdtune.pdf">PDF</a> version.</div>
-
=head1 SYNOPSIS
B<rrdtool> B<tune> I<filename>
rrdtutorial - Alex van den Bogaerdt's RRDtool tutorial
-=for html <div align="right">Go <a href="rrdtutorial.es.html">Spanish</a></div>
-
-=for html <div align="right"><a href="rrdtutorial.pdf">PDF</a> version.</div>
-
=head1 DESCRIPTION
RRDtool is written by Tobias Oetiker <oetiker@ee.ethz.ch> with
rrdupdate - Store a new set of values into the RRD
-=for html <div align="right"><a href="rrdupdate.pdf">PDF</a> version.</div>
-
=head1 SYNOPSIS
B<rrdtool> {B<update> | B<updatev>} I<filename>
rrdxport - Export data in XML format based on data from one or several RRD
-=for html <div align="right"><a href="rrdxport.pdf">PDF</a> version.</div>
-
=head1 SYNOPSIS
B<rrdtool> B<xport>