这是 rrdgraph_rpn 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
rrdgraph_rpn - 关于 rrdtool 图中的 RPN 数学
概要
RPN 表达:=虚拟名称|操作者|折扣值[,RPN 表达]
商品描述
如果您曾经使用过传统的 HP 计算器,您就已经知道 RPN (反向波兰语
符号)。 背后的想法 RPN 是你有一个堆栈并将你的数据推送到这个
堆。 每当你执行一个操作时,它从堆栈中取出尽可能多的元素
需要。 推送是隐式完成的,因此无论何时指定数字或变量,它
被自动推入堆栈。
在计算结束时,堆栈中应该只剩下一个值。
这是函数的结果,这是放入 虚拟名称。 对于 CDEF
指令,堆栈会针对图上的每个数据点进行处理。 定义 说明
在一次运行中处理整个数据集。 请注意,目前 定义 说明只支持
有限的功能列表。
示例:“VDEF:maximum=mydata,MAXIMUM”
这将设置变量“maximum”,您现在可以在 RRD 脚本的其余部分中使用它。
示例:“CDEF:mydatabits=mydata,8,*”
这意味着:推送变量 我的数据, 推数字 8, 执行算子 *. 运营商
需要两个元素并使用它们返回一个值。 然后将该值存储在
我的数据位. 您可能已经猜到了,这条指令的意义无非是 我的数据位
= 我的数据 * 8. 真正的力量 RPN 在于它总是很清楚的事实
为了处理输入。 对于像“a = b + 3 * 5”这样的表达式,你需要乘以 3
在添加之前先使用 5 b 要得到 a. 但是,使用括号,您可以更改此设置
顺序:“a = (b + 3) * 5”。 在 RPN, 你会做 "a = b, 3, +, 5, *" 而不需要
括弧。
操作员
布尔运算符
LT, LE, GT, GE, 情商, NE
小于、小于或等于、大于、大于或等于、等于、不等于所有弹出两个
堆栈中的元素,将它们与选定的条件进行比较,并返回 1 为真
或 0 为假。 比较一个 不明 或 无穷 值将导致 不明
返回 ... 也将被视为 false IF 呼叫。
联合国, 信息系统信息网
从堆栈中弹出一个元素,将其与 不明 分别到 积极 or
负 无穷大. 为真返回 1,为假返回 0。
IF
从堆栈中弹出三个元素。 如果最后弹出的元素为 0 (false),则
首先弹出的值被压回堆栈,否则第二个弹出的值是
推后。 这确实意味着除 0 以外的任何值都被认为是
真实的。
示例:“A,B,C,IF”应读作“if (A) then (B) else (C)”
比较值
最小, 最大
从堆栈中弹出两个元素并分别返回较小的或较大的。
需要注意的是 无穷 比什么都大。 如果输入数字之一是
不明 那么操作的结果将是 不明 了。
闽南, 麦克斯南
MIN 和 MAX 的 NAN 安全版本。 如果输入数字之一是 不明 那么
操作的结果将是另一个。 如果两者都是 不明,那么结果
操作是 不明.
极限
从堆栈中弹出两个元素并使用它们来定义范围。 然后它弹出
另一个元素,如果它落在范围内,则将其推回。 如果没有,一个
不明 被推。
定义的范围包括两个边界(所以:一个数字等于其中之一
边界将被推回)。 如果所涉及的三个数字中的任何一个是
不明 or 无穷 此函数将始终返回一个 不明
示例:“CDEF:a=alpha,0,100,LIMIT”将返回 不明 如果 alpha 小于 0 或者如果
它高于100。
算术
+, -, *, /, %
加、减、乘、除、取模
脱氧核糖核酸
NAN 安全添加。 如果一个参数是 NAN/UNKNOWN,它将被视为零。 如果两者
参数为 NAN/UNKNOWN,将返回 NAN/UNKNOWN。
罪, COS, 日志, 经验, SQRT
正弦和余弦(以弧度为单位输入)、log 和 exp(自然对数)、平方根。
ATAN
反正切(以弧度输出)。
ATAN2
y,x 分量的反正切(以弧度为单位输出)。 这将从中弹出一个元素
堆栈,x(余弦)分量,然后是第二个,即 y(正弦)分量。
然后推动它们比率的反正切,解决之间的歧义
象限。
示例: "CDEF:angle=Y,X,ATAN2,RAD2DEG" 会将 "X,Y" 分量转换为
度。
地面, 中欧
向下或向上舍入到最接近的整数。
DEG2RAD, RAD2度
将角度(以度为单位)转换为弧度,或将弧度转换为度数。
ABS
取绝对值。
设置操作
种类, REV
从堆栈中弹出一个元素。 这是 数 要排序的项目(或
反转)。 顶端 数 其余元素的排序(或反转)在
放在堆栈上。
示例: "CDEF:x=v1,v2,v3,v4,v5,v6,6,SORT,POP,5,REV,POP,+,+,+,4,/" 将计算
去除最小和最大后的值 v1 到 v6 的平均值。
AVG
弹出一个元素 (数) 从堆栈中。 现在流行 数 元素并建立平均值,
忽略过程中的所有 UNKNOWN 值。
示例:“CDEF:x=a,b,c,d,4,AVG”
MEDIAN
弹出一个元素(数) 从堆栈中。 现在流行 数 元素并找到中位数,
忽略过程中的所有 UNKNOWN 值。 如果有偶数个非 UNKNOWN
值,中间两个的平均值将被压入堆栈。
示例:“CDEF:x=a,b,c,d,4,MEDIAN”
趋势, 特伦南
创建另一个数据系列的“滑动窗口”平均值。
用法:CDEF:smoothed=x,1800,TREND
这将创建 x 的半小时(1800 秒)滑动窗口平均值。 平均
基本上计算如下所示:
+---!---!---!---!---!---!---!---!--->
现在
延迟 t0
<--------------->
延迟 t1
<--------------->
延迟 t2
<--------------->
样本 (t0) 处的值将是 (t0-delay) 和 (t0) 之间的平均值
样本 (t1) 处的值将是 (t1-delay) 和 (t1) 之间的平均值
样本 (t2) 处的值将是 (t2-delay) 和 (t2) 之间的平均值
TRENDNAN 是 - 与 TREND 相比 - NAN 安全。 如果您使用 TREND 和一个源值
是 NAN 整个滑动窗口受到影响。 TRENDNAN 操作忽略所有
滑动窗口中的 NAN 值并计算剩余值的平均值。
预测, 预测西格玛, 预测PERC
创建另一个数据系列的“滑动窗口”平均值/西格玛/百分比,这也
也按给定的时间量移动数据系列
用法 - 显式说明转变:“CDEF:predict= ,...,
1>,n, ,x,PREDICT" "CDEF:sigma= ,...,
1>,n, ,x,PREDICTSIGMA" "CDEF:perc= ,...,
1>,n, , ,x,PREDICTPERC"
用法 - 定义为基本班次的班次和应用的次数
“CDEF:预测= ,-n, ,x,PREDICT" "CDEF:sigma=
乘数>,-n, ,x,PREDICTSIGMA" "CDEF:sigma=
乘数>,-n, , ,x,PREDICTPERC"
示例:CDEF:predict=172800,86400,2,1800,x,PREDICT
这将创建 x 的半小时(1800 秒)滑动窗口平均值/西格玛,即
平均值的计算方法如下所示:
+---!---!---!---!---!---!---!---!---!---!---!---!- --!---!---!---!---!--->
现在
移位 1 t0
<----------------------->
窗口
<--------------->
2班
<----------------------------------------------->
窗口
<--------------->
移位 1 t1
<----------------------->
窗口
<--------------->
2班
<----------------------------------------------->
窗口
<--------------->
样本 (t0) 处的值将是 (t0-shift1-window) 和 (t0-shift1) 之间的平均值
以及 (t0-shift2-window) 和 (t0-shift2) 之间
样本 (t1) 处的值将是 (t1-shift1-window) 和 (t1-shift1) 之间的平均值
以及 (t1-shift2-window) 和 (t1-shift2) 之间
该功能设计为 NAN 安全的。 这也允许外推到
未来(比如几天)-您可能需要定义可选的数据系列
start= 参数,以便源数据系列有足够的数据来提供预测
也在图表的开头......
百分位数可以在 [-100:+100] 之间。 正百分位数内插
值之间,而负数将取最接近的值。
示例:您在 7 秒的窗口内运行 1800 个班次。 假设 rrd 文件有
步长为 300 秒,这意味着我们必须基于百分位数进行计算
最多 42 个不同的值(如果你有 NAN,则更少)。 这意味着在最好的情况下
您会在 2.4% 的值之间获得步进率。 所以如果你问第 99 个
百分位数,那么您需要查看第 41.59 个值。 因为我们只有
整数,第 41 个或第 42 个值。
使用正百分位数在两个值之间进行线性插值
得到有效值。
负数返回最近的值距离 - 所以在上面的情况下是第 42
值,它有效地返回 Percentile100 或前 7 个的最大值
窗外的日子。
这是一个示例,它将创建一个 10 天的图表,该图表还显示了 3 天的预测
进入未来及其不确定性值(由 avg+-4*sigma 定义) 这也
显示是否在某个点超过了预测。
rrdtool 图 image.png --imgformat=PNG \
--start=-7days --end=+3days --width=1000 --height=200 --alt-autoscale-max \
DEF:值=值.rrd:值:平均:开始=-14天 \
第 1 行:值#ff0000:值 \
CDEF:预测=86400,-7,1800,值,预测\
CDEF:sigma=86400,-7,1800,值,PREDICTSIGMA \
CDEF:上=预测,西格玛,3,*,+ \
CDEF:lower=predict,sigma,3,*,-\
LINE1:预测#00ff00:预测\
LINE1:upper#0000ff:upper\确定性\限制\
LINE1:lower#0000ff:lower\确定性\限制\
CDEF:超过=值,UN,0,值,下限,上限,LIMIT,UN,IF \
TICK:超过#aa000080:1 \
CDEF:perc95=86400,-7,1800,95,值,PREDICTPERC \
LINE1:perc95#ffff00:95th_percentile
注意:经验表明,缩放 sigma 的系数在 3 到 5 之间是一个不错的选择
用于检测异常行为的鉴别器。 这显然也取决于类型
数据以及数据系列有多“嘈杂”。
还要注意在 CDEF 中显式使用 start= - 这是加载所有
必要的数据(即使没有显示)
此预测只能用于短期外推 - 比如说几天后
未来。
特殊值
肯尼迪
将未知值压入堆栈
中频, 负数
将一个正或负的无限值压入堆栈。 当这样的值是
图形化,它出现在图形的顶部或底部,无论实际值是多少
在 y 轴上是。
上一页
推一个 不明 value 如果这是数据集的第一个值,否则
这样做的结果 CDEF 在上一个时间步。 这允许您进行计算
跨数据。 该功能不能用于 定义 指示。
上一篇(vname)
推一个 不明 value 如果这是数据集的第一个值,否则
vname 变量在上一个时间步的结果。 这允许你做
跨数据计算。 该功能不能用于 定义 指示。
COUNT个
如果这是数据集的第一个值,则推送数字 1,如果是,则推送数字 2
第二个,以此类推。 此特殊值允许您根据
值在数据集中的位置。 该功能不能用于 定义
指示。
时间
RRDtool 内的时间以自纪元以来的秒数为单位。 时代被定义为
"Thu Jan 1 00:00:00 UTC 1970".
现在
将当前时间压入堆栈。
步宽
当前步骤的以秒为单位。 您可以使用它从基于速率的返回
以绝对数字表示
CDEF:abs=速率,STEPWIDTH,*,PREF,ADDNAN
新的一天,新周刊,新月,NEWYEAR
每当步骤是给定的第一个步骤时,这三个运算符将返回 1.0
期间。 周期根据当地时区和“LC_TIME”确定
设置。
CDEF:mtotal=速率,STEPWIDTH,*,NEWMONTH,PREV,0,IF,ADDNAN
时间
将当前处理的值推入堆栈的时间。
时间
花费由定义的时间 时间, 应用当时有效的时区偏移
包括夏令时(如果您的操作系统支持),并将结果推送到
堆。 下面的示例部分中有一个详细的示例,说明如何使用
本。
直接处理堆栈
杜普, POP, EXC
复制顶部元素,移除顶部元素,交换两个顶部元素。
深度
将堆栈的当前深度压入堆栈
a,b,DEPTH -> a,b,2
n,COPY
将前 n 个元素的副本压入堆栈
a,b,c,d,2,COPY => a,b,c,d,c,d
n,指数
将第 n 个元素压入堆栈。
a,b,c,d,3,INDEX -> a,b,c,d,b
ñ,米,ROLL
将栈顶的 n 个元素旋转 m
a,b,c,d,3,1,ROLL => a,d,b,c
a,b,c,d,3,-1,ROLL => a,c,d,b
变数
这些运算符仅适用于 定义 声明。 请注意,目前只有这些适用于
定义.
最大值、最小值、平均值
返回对应的值,MAXIMUM 和 MINIMUM 也返回第一次出现
在时间组件中的那个值。
示例:“VDEF:avg=mydata,AVERAGE”
STDEV
返回值的标准偏差。
示例:“VDEF:stdev=mydata,STDEV”
最后,第一
返回所选数据流的最后一个/第一个非 nan 或无限值,
包括它的时间戳。
示例:“VDEF:first=mydata,FIRST”
TOTAL
返回每个定义时隙的速率乘以步长。 这个可以,
例如,当您每秒记录字节数时,返回传输的总字节数。
时间组件返回秒数。
示例:“VDEF:total=mydata,TOTAL”
百分比,百分比
这应该遵循 DEF or CDEF 虚拟名称。 该 虚拟名称 被弹出,另一个数字被弹出
这是某个百分比(0..100)。 然后对数据集进行排序和值
返回的选择是这样的 百分比 值的百分比低于或等于
结果。 对于 PERCENTNAN 不明 值被忽略,但对于 PERCENT 不明 价值观
为此目的,被认为低于任何有限数,因此如果此运算符
返回一个 不明 你的数据中有很多。 天道酬勤初始数是
小于或大于有限数,并且总是大于 不明 号码。
(NaN < -INF < 有限值 < INF)
示例:“VDEF:perc95=mydata,95,PERCENT”
"VDEF:percnan95=mydata,95,PERCENTNAN"
LSLSLOPE、LSLINT、LSLCORREL
返回一个参数 L东 S夸尔斯 LINE (y = mx +b) 其中近似于
提供的数据集。 LSLSLOPE 是斜率 (米) 与 COUNT 位置相关的行
的数据。 LSLINT 是 y 轴截距 (二),这也是第一个数据
图上的点。 LSLCORREL 是相关系数(也称为 Pearson's
乘积矩相关系数)。 它的范围从 0 到 +/-1 并代表
近似值的拟合质量。
示例:“VDEF:slope=mydata,LSLSLOPE”
使用 onworks.net 服务在线使用 rrdgraph_rpn