Đây là lệnh rrdgraph_rpn có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
rrdgraph_rpn - Giới thiệu về Toán RPN trong biểu đồ rrdtool
SYNOPSIS
RPN biểu hiện:=vname|nhà điều hành|giá trị[,RPN biểu hiện]
MÔ TẢ
Nếu bạn đã từng sử dụng máy tính HP truyền thống, bạn đã biết RPN (Tiếng Ba Lan ngược
Ký hiệu). Ý tưởng đằng sau RPN là bạn có một ngăn xếp và đẩy dữ liệu của bạn lên
cây rơm. Bất cứ khi nào bạn thực hiện một thao tác, nó sẽ lấy càng nhiều phần tử từ ngăn xếp như
cần thiết. Việc đẩy được thực hiện ngầm, vì vậy bất cứ khi nào bạn chỉ định một số hoặc một biến, nó
được đẩy lên ngăn xếp tự động.
Khi kết thúc phép tính, sẽ có một và chỉ một giá trị còn lại trên ngăn xếp.
Đây là kết quả của hàm và đây là những gì được đưa vào vname. Đối với CDEF
hướng dẫn, ngăn xếp được xử lý cho mỗi điểm dữ liệu trên biểu đồ. VDEF hướng dẫn
làm việc trên toàn bộ tập dữ liệu trong một lần chạy. Lưu ý, hiện tại VDEF hướng dẫn chỉ hỗ trợ
một danh sách giới hạn các chức năng.
Ví dụ: "VDEF: Maximum = mydata, MAXIMUM"
Điều này sẽ đặt biến "tối đa" mà bây giờ bạn có thể sử dụng trong phần còn lại của tập lệnh RRD của mình.
Ví dụ: "CDEF: mydatabits = mydata, 8, *"
Điều này có nghĩa là: biến push dữ liệu của tôi, đẩy số 8, thực hiện toán tử *. Người điều hành
cần hai phần tử và sử dụng những phần tử đó để trả về một giá trị. Giá trị này sau đó được lưu trữ trong
dữ liệu của tôi. Như bạn có thể đã đoán, hướng dẫn này không có ý nghĩa gì hơn là dữ liệu của tôi
= dữ liệu của tôi * 8. Sức mạnh thực sự của RPN nằm ở chỗ nó luôn rõ ràng trong đó
để xử lý đầu vào. Đối với các biểu thức như "a = b + 3 * 5", bạn cần nhân 3
với 5 đầu tiên trước khi bạn thêm b để có được a. Tuy nhiên, với dấu ngoặc đơn, bạn có thể thay đổi điều này
thứ tự: "a = (b + 3) * 5". Trong RPN, bạn sẽ làm "a = b, 3, +, 5, *" mà không cần
dấu ngoặc đơn.
ĐIỀU HÀNH
Toán tử boolean
L.T., LÊ, GT, đại gia, chỉ số cân bằng, NE
Nhỏ hơn, Nhỏ hơn hoặc bằng, Lớn hơn, Lớn hơn hoặc bằng, Bằng nhau, Không bằng tất cả bật hai
các phần tử từ ngăn xếp, so sánh chúng với điều kiện đã chọn và trả về 1 cho true
hoặc 0 cho sai. So sánh một không xác định hoặc một vô hạn giá trị sẽ dẫn đến không xác định
trả về ... cũng sẽ được coi là sai bởi IF gọi.
VÀ, ISNF
Bật một phần tử từ ngăn xếp, so sánh phần tử này với không xác định tương ứng với tích cực or
tiêu cực vô cực. Trả về 1 cho đúng hoặc 0 cho sai.
IF
Pops ba phần tử từ ngăn xếp. Nếu phần tử xuất hiện cuối cùng là 0 (sai),
giá trị xuất hiện đầu tiên được đẩy trở lại ngăn xếp, nếu không giá trị xuất hiện thứ hai là
đẩy lùi lại. Điều này thực sự có nghĩa là bất kỳ giá trị nào khác 0 được coi là
sự thật.
Ví dụ: "A, B, C, IF" phải được đọc là "if (A) then (B) else (C)"
So sánh các giá trị
TỐI THIỂU, MAX
Bỏ qua hai phần tử từ ngăn xếp và trả về phần tử nhỏ hơn hoặc lớn hơn, tương ứng.
Lưu ý rằng vô hạn lớn hơn bất cứ thứ gì khác. Nếu một trong các số đầu vào là
không xác định thì kết quả của hoạt động sẽ là không xác định quá.
MINNAN, TỐI ĐA
Phiên bản an toàn NAN của MIN và MAX. Nếu một trong các số đầu vào là không xác định sau đó
kết quả của hoạt động sẽ là kết quả khác. Nếu cả hai đều không xác định, sau đó là kết quả của
hoạt động là không xác định.
LIMIT
Pops hai phần tử từ ngăn xếp và sử dụng chúng để xác định một phạm vi. Sau đó, nó bật lên
một phần tử khác và nếu nó nằm trong phạm vi, nó sẽ bị đẩy lùi. Nếu không, một
không xác định được đẩy.
Phạm vi được xác định bao gồm hai ranh giới (vì vậy: một số bằng một trong các
ranh giới sẽ bị đẩy lùi). Nếu bất kỳ con số nào trong ba con số liên quan là
không xác định or vô hạn hàm này sẽ luôn trả về một không xác định
Ví dụ: "CDEF: a = alpha, 0,100, LIMIT" sẽ trả về không xác định nếu alpha thấp hơn 0 hoặc nếu
nó cao hơn 100.
Số học
+, -, *, /, %
Cộng, trừ, nhân, chia, modulo
ADDN
Bổ sung NAN an toàn. Nếu một tham số là NAN / UNKNOWN thì nó sẽ được coi là XNUMX. Nếu cả hai
tham số là NAN / UNKNOWN, NAN / UNKNOWN sẽ được trả về.
TỘI, COS, ĐĂNG NHẬP, NS, SQRT
Sine và cosine (đầu vào bằng radian), log và exp (logarit tự nhiên), căn bậc hai.
ATÂN
Arctangent (đầu ra tính bằng radian).
ATAN2
Arctang của các thành phần y, x (đầu ra tính bằng radian). Điều này bật ra một phần tử từ
ngăn xếp, thành phần x (cosine), và sau đó là giây, là thành phần y (sin).
Sau đó, nó nâng cao tỷ lệ arctang của chúng, giải quyết sự không rõ ràng giữa
góc phần tư.
Ví dụ: "CDEF: angle = Y, X, ATAN2, RAD2DEG" sẽ chuyển đổi các thành phần "X, Y" thành một góc trong
độ.
SÀN NHÀ, TRẦN
Làm tròn xuống hoặc lên đến số nguyên gần nhất.
DEG2RAD, RAD2DEG
Chuyển đổi góc theo độ sang radian hoặc radian sang độ.
ABS
Lấy giá trị tuyệt đối.
Đặt hoạt động
LOẠI, REV
Bật một phần tử từ ngăn xếp. Đây là tính trong tổng số các mục được sắp xếp (hoặc
đảo ngược). Đỉnh tính các phần tử còn lại sau đó được sắp xếp (hoặc đảo ngược) trong
đặt trên ngăn xếp.
Ví dụ: "CDEF: x = v1, v2, v3, v4, v5, v6,6, SORT, POP, 5, REV, POP, +, +, +, 4, /" sẽ tính toán
trung bình cộng của các giá trị v1 đến v6 sau khi loại bỏ giá trị nhỏ nhất và lớn nhất.
AVG
Bật một phần tử (tính) từ ngăn xếp. Bây giờ bật lên tính các yếu tố và xây dựng mức trung bình,
bỏ qua tất cả các giá trị UNKNOWN trong quá trình này.
Ví dụ: "CDEF: x = a, b, c, d, 4, AVG"
MEDIAN
bật một phần tử (tính) từ ngăn xếp. Bây giờ bật lên tính các yếu tố và tìm giá trị trung bình,
bỏ qua tất cả các giá trị UNKNOWN trong quá trình này. Nếu có một số chẵn không UNKNOWN
giá trị trung bình của hai giá trị giữa sẽ được đẩy lên ngăn xếp.
Ví dụ: "CDEF: x = a, b, c, d, 4, MEDIAN"
XU HƯỚNG, TRENDNAN
Tạo mức trung bình "cửa sổ trượt" của một chuỗi dữ liệu khác.
Cách sử dụng: CDEF: smoothed = x, 1800, TREND
Điều này sẽ tạo ra một cửa sổ trượt trung bình nửa giờ (1800 giây) là x. Trung bình
về cơ bản được tính toán như được hiển thị ở đây:
+ ---! ---! ---! ---! ---! ---! ---! ---! --->
tại
trì hoãn t0
<--------------->
trì hoãn t1
<--------------->
trì hoãn t2
<--------------->
Giá trị tại mẫu (t0) sẽ là giá trị trung bình giữa (t0-delay) và (t0)
Giá trị tại mẫu (t1) sẽ là giá trị trung bình giữa (t1-delay) và (t1)
Giá trị tại mẫu (t2) sẽ là giá trị trung bình giữa (t2-delay) và (t2)
TRENDNAN - trái ngược với TREND - NAN an toàn. Nếu bạn sử dụng TREND và một giá trị nguồn
là NAN, cửa sổ trượt hoàn chỉnh bị ảnh hưởng. Hoạt động TRENDNAN bỏ qua tất cả
Giá trị NAN trong cửa sổ trượt và tính giá trị trung bình của các giá trị còn lại.
DỰ ĐOÁN, DỰ ĐOÁN, DỰ ĐOÁN
Tạo một "cửa sổ trượt" trung bình / sigma / phần trăm của một chuỗi dữ liệu khác, cũng
cũng thay đổi chuỗi dữ liệu theo khoảng thời gian nhất định
Cách sử dụng - thay đổi nêu rõ ràng: "CDEF: dự đoán = , ...,
1>, n, , x, PREDICT "" CDEF: sigma = , ...,
1>, n, , x, PREDICTSIGMA "" CDEF: perc = , ...,
1>, n, , , x, PREDICTPERC "
Cách sử dụng - ca được định nghĩa là ca cơ bản và áp dụng một số thời gian
"CDEF: dự đoán = ,-n, , x, PREDICT "" CDEF: sigma =
số nhân>, - n, , x, PREDICTSIGMA "" CDEF: sigma =
số nhân>, - n, , , x, PREDICTPERC "
Ví dụ: CDEF: dự đoán = 172800,86400,2,1800, x, PREDICT
Điều này sẽ tạo ra một cửa sổ trượt trung bình nửa giờ (1800 giây) / sigma của x,
trung bình về cơ bản được tính như được hiển thị ở đây:
+ ---! ---! ---! ---! ---! ---! ---! ---! ---! ---! ---! ---! - -! ---! ---! ---! ---! --->
tại
ca 1 t0
<----------------------->
cửa sổ
<--------------->
ca 2
<----------------------------------------------->
cửa sổ
<--------------->
ca 1 t1
<----------------------->
cửa sổ
<--------------->
ca 2
<----------------------------------------------->
cửa sổ
<--------------->
Giá trị tại mẫu (t0) sẽ là giá trị trung bình giữa (t0-shift1-window) và (t0-shift1)
và giữa (t0-shift2-window) và (t0-shift2)
Giá trị tại mẫu (t1) sẽ là giá trị trung bình giữa (t1-shift1-window) và (t1-shift1)
và giữa (t1-shift2-window) và (t1-shift2)
Chức năng là do thiết kế NAN an toàn. Điều này cũng cho phép ngoại suy vào
tương lai (giả sử một vài ngày) - bạn có thể cần phải xác định chuỗi dữ liệu tùy theo tùy chọn
start = tham số, để chuỗi dữ liệu nguồn có đủ dữ liệu để cung cấp dự đoán
cũng ở đầu đồ thị ...
Phân vị có thể nằm trong khoảng [-100: +100]. Các phân vị tích cực nội suy
giữa các giá trị trong khi âm sẽ lấy giá trị gần nhất.
Ví dụ: bạn chạy 7 ca với thời lượng 1800 giây. Giả sử rằng tệp rrd có
kích thước bước là 300 giây, điều này có nghĩa là chúng ta phải thực hiện phép tính phần trăm dựa trên
trên tối đa 42 giá trị khác biệt (ít hơn nếu bạn có NAN). điều đó có nghĩa là trong trường hợp tốt nhất
bạn nhận được tỷ lệ bước giữa các giá trị là 2.4 phần trăm. vì vậy nếu bạn yêu cầu thứ 99
phân vị, thì bạn sẽ cần nhìn vào giá trị thứ 41.59. Như chúng tôi chỉ có
số nguyên, giá trị thứ 41 hoặc 42.
Với phân vị dương, phép nội suy tuyến tính giữa 2 giá trị được thực hiện để
nhận được giá trị hiệu quả.
Giá trị âm trả về khoảng cách giá trị gần nhất khôn ngoan - vì vậy trong trường hợp trên là 42
giá trị này trả về hiệu quả Percentile100 hoặc giá trị tối đa của 7 trước đó
ngày trong cửa sổ.
Dưới đây là một ví dụ, sẽ tạo biểu đồ 10 ngày cũng hiển thị dự đoán 3 ngày
trong tương lai với giá trị không chắc chắn của nó (như được xác định bởi trung bình + -4 * sigma) Điều này cũng
cho biết nếu dự đoán bị vượt quá tại một điểm nhất định.
rrdtool graph image.png --imgformat = PNG
--start = -7days --end = + 3days --width = 1000 --height = 200 --alt-autoscale-max
DEF: value = value.rrd: value: AVERAGE: start = -14days
LINE1: giá trị # ff0000: giá trị
CDEF: dự đoán = 86400, -7,1800, giá trị, PREDICT
CDEF: sigma = 86400, -7,1800, giá trị, PREDICTSIGMA
CDEF: upper = dự đoán, sigma, 3, *, +
CDEF: thấp hơn = dự đoán, sigma, 3, *, -
LINE1: dự đoán # 00ff00: dự đoán
LINE1: trên # 0000ff: trên \ chắc chắn \ giới hạn
LINE1: thấp hơn # 0000ff: thấp hơn \ chắc chắn \ giới hạn
CDEF: vượt quá = giá trị, UN, 0, giá trị, thấp hơn, trên, LIMIT, UN, IF
NHẤP: vượt quá # aa000080: 1
CDEF: perc95 = 86400, -7,1800,95, giá trị, PREDICTPERC
LINE1: perc95 # ffff00: 95th_percentile
Lưu ý: Kinh nghiệm cho thấy rằng hệ số từ 3 đến 5 trong thang đo sigma là tốt
phân biệt đối xử để phát hiện hành vi bất thường. Điều này rõ ràng cũng phụ thuộc vào loại
dữ liệu và mức độ "nhiễu" của chuỗi dữ liệu.
Cũng lưu ý việc sử dụng rõ ràng start = trong CDEF - điều này là cần thiết để tải tất cả
dữ liệu cần thiết (ngay cả khi nó không được hiển thị)
Dự đoán này chỉ có thể được sử dụng cho các phép ngoại suy ngắn hạn - giả sử một vài ngày tới
tương lai.
Giá trị đặc biệt
KHÔNG BIẾT
Đẩy một giá trị không xác định trên ngăn xếp
INF, NEGINF
Đẩy một giá trị vô hạn dương hoặc âm lên ngăn xếp. Khi một giá trị như vậy là
được vẽ biểu đồ, nó xuất hiện ở đầu hoặc cuối biểu đồ, bất kể giá trị thực tế là bao nhiêu
trên trục y là.
TRANG TRƯỚC
Đẩy một không xác định giá trị nếu đây là giá trị đầu tiên của tập dữ liệu hoặc nếu không,
kết quả của điều này CDEF ở bước thời gian trước đó. Điều này cho phép bạn thực hiện các phép tính
trên toàn bộ dữ liệu. Không thể sử dụng chức năng này trong VDEF hướng dẫn.
TRƯỚC (vname)
Đẩy một không xác định giá trị nếu đây là giá trị đầu tiên của tập dữ liệu hoặc nếu không,
kết quả của biến vname ở bước thời gian trước đó. Điều này cho phép bạn làm
tính toán trên dữ liệu. Không thể sử dụng chức năng này trong VDEF hướng dẫn.
ĐẾM
Đẩy số 1 nếu đây là giá trị đầu tiên của tập dữ liệu, số 2 nếu là
thứ hai, v.v. Giá trị đặc biệt này cho phép bạn thực hiện các phép tính dựa trên
vị trí của giá trị trong tập dữ liệu. Không thể sử dụng chức năng này trong VDEF
hướng dẫn.
Thời gian
Thời gian bên trong RRDtool được tính bằng giây kể từ kỷ nguyên. Kỷ nguyên được định nghĩa là
"Thu Jan 1 00:00:00 UTC 1970".
NOW
Đẩy thời gian hiện tại lên ngăn xếp.
BƯỚC RỘNG
Với của bước hiện tại tính bằng giây. Bạn có thể sử dụng điều này để quay trở lại từ tỷ lệ dựa trên
thuyết trình về số tuyệt đối
CDEF: abs = tỷ lệ, STEPWIDTH, *, PREF, ADDNAN
NGÀY MỚI,TUẦN MỚI,THÁNG MỚI,NĂM MỚI
Ba toán tử này sẽ trả về 1.0 bất cứ khi nào một bước là bước đầu tiên trong số
nguyệt san. Khoảng thời gian được xác định theo múi giờ địa phương VÀ "LC_TIME"
cài đặt.
CDEF: mtotal = tỷ lệ, STEPWIDTH, *, NEWMONTH, PREV, 0, IF, ADDNAN
THỜI GIAN
Đẩy thời gian giá trị hiện đang xử lý được đưa vào ngăn xếp.
CUỐI THỜI GIAN
Mất thời gian như được xác định bởi THỜI GIAN, áp dụng chênh lệch múi giờ hợp lệ tại thời điểm đó
bao gồm cả thời gian tiết kiệm ánh sáng ban ngày nếu hệ điều hành của bạn hỗ trợ nó và đẩy kết quả lên
cây rơm. Có một ví dụ cụ thể trong phần ví dụ bên dưới về cách sử dụng
cái này.
Xử lý ngăn xếp trực tiếp
ĐÚNG, NHẠC POP, EXC
Nhân đôi phần tử trên cùng, loại bỏ phần tử trên cùng, trao đổi hai phần tử trên cùng.
Chiều sâu
đẩy độ sâu hiện tại của ngăn xếp lên ngăn xếp
a, b, DEPTH -> a, b, 2
n,COPY
đẩy một bản sao của n phần tử trên cùng vào ngăn xếp
a, b, c, d, 2, SAO CHÉP => a, b, c, d, c, d
n,INDEX
đẩy phần tử thứ n lên ngăn xếp.
a, b, c, d, 3, INDEX -> a, b, c, d, b
n, m,ROLL
xoay n phần tử trên cùng của ngăn xếp theo m
a, b, c, d, 3,1, ROLL => a, d, b, c
a, b, c, d, 3, -1, ROLL => a, c, d, b
BIẾN
Các toán tử này chỉ hoạt động trên VDEF các câu lệnh. Lưu ý rằng hiện tại CHỈ những công việc này hoạt động cho
VDEF.
TỐI ĐA, TỐI THIỂU, TRUNG BÌNH
Trả về giá trị tương ứng, MAXIMUM và MINIMUM cũng trả về giá trị xuất hiện đầu tiên
của giá trị đó trong thành phần thời gian.
Ví dụ: "VDEF: avg = mydata, AVERAGE"
STDEV
Trả về độ lệch chuẩn của các giá trị.
Ví dụ: "VDEF: stdev = mydata, STDEV"
SAU CÙNG LÊN TRƯỚC
Trả về giá trị không nanô cuối cùng / đầu tiên hoặc giá trị vô hạn cho luồng dữ liệu đã chọn,
bao gồm cả dấu thời gian của nó.
Ví dụ: "VDEF: first = mydata, FIRST"
TOTAL
Trả về tỷ lệ từ mỗi khoảng thời gian đã xác định nhân với kích thước bước. Điều này có thể,
ví dụ: trả về tổng số byte được chuyển khi bạn đã ghi số byte mỗi giây.
Thành phần thời gian trả về số giây.
Ví dụ: "VDEF: total = mydata, TOTAL"
PERCENT, PERCENTNAN
Điều này sẽ tuân theo một DEF or CDEF vname. Các vname được xuất hiện, một số khác được xuất hiện
là một tỷ lệ phần trăm nhất định (0..100). Sau đó, tập dữ liệu được sắp xếp và giá trị
trả lại được chọn như vậy tỷ lệ phần trăm phần trăm giá trị thấp hơn hoặc bằng
kết quả. Đối với PERCENTNAN Không biết các giá trị bị bỏ qua, nhưng đối với PERCENT Không biết giá trị
được coi là thấp hơn bất kỳ số hữu hạn nào cho mục đích này, vì vậy nếu toán tử này
trả lại một không xác định bạn có khá nhiều trong số chúng trong dữ liệu của mình. infsố hữu hạn là
ít hơn hoặc nhiều hơn số lượng hữu hạn và luôn nhiều hơn Không biết số.
(NaN <-INF <giá trị hữu hạn <INF)
Ví dụ: "VDEF: perc95 = mydata, 95, PERCENT"
"VDEF: percnan95 = mydata, 95, PERCENTNAN"
LSLSLOPE, LSLINT, LSLCORREL
Trả về các tham số cho một Lđông Svuông Line (y = mx + b) gần đúng với
cung cấp tập dữ liệu. LSLSLOPE là độ dốc (M) của dòng liên quan đến vị trí COUNT
của dữ liệu. LSLINT là chốt chặn y (B), đây cũng là dữ liệu đầu tiên
điểm trên đồ thị. LSLCORREL là Hệ số tương quan (còn được gọi là Pearson's
Hệ số tương quan thời điểm sản phẩm). Nó sẽ nằm trong khoảng từ 0 đến +/- 1 và đại diện cho
chất lượng của sự phù hợp cho sự gần đúng.
Ví dụ: "VDEF: dốc = mydata, LSLSLOPE"
Sử dụng rrdgraph_rpn trực tuyến bằng các dịch vụ onworks.net