RRDGRAPH_RPN(1) rrdtool RRDGRAPH_RPN(1)

rrdgraph_rpn - درباره محاسبات ریاضی RPN در rrdtool graph

RPN expression:=vname|operator|value[,RPN expression]

اگر تاکنون از ماشین‌حساب‌های سنتی HP استفاده کرده باشید، با RPN (نشانه‌گذاری معکوس لهستانی یا Reverse Polish Notation) آشنا هستید. ایدهٔ پشت RPN این است که شما یک پشته (stack) دارید و داده‌های خود را روی این پشته قرار می‌دهید (push می‌کنید). هر زمان که عملیاتی را اجرا کنید، به تعداد عناصر مورد نیازش از پشته برمی‌دارد (pop می‌کند). قرار دادن داده روی پشته به‌صورت ضمنی انجام می‌شود، بنابراین هر زمان که یک عدد یا متغیر را مشخص کنید، به‌طور خودکار روی پشته قرار می‌گیرد.

در پایان محاسبات باید یک و فقط یک مقدار روی پشته باقی بماند. این مقدار همان خروجی تابع است و مقداری است که در vname قرار می‌گیرد. برای دستورالعمل‌های CDEF، پشته به ازای هر نقطهٔ داده روی نمودار پردازش می‌شود. دستورالعمل‌های VDEF در یک بار اجرا روی کل یک مجموعه داده عمل می‌کنند. توجه داشته باشید که در حال حاضر دستورالعمل‌های VDEF تنها از فهرست محدودی از توابع پشتیبانی می‌کنند.

مثال: "VDEF:maximum=mydata,MAXIMUM"

این کار متغیر «maximum» را تنظیم می‌کند که اکنون می‌توانید از آن در ادامهٔ اسکریپت RRD خود استفاده کنید.

مثال: "CDEF:mydatabits=mydata,8,*"

این یعنی: متغیر mydata را در پشته قرار بده، عدد 8 را در پشته قرار بده، عملگر * را اجرا کن. این عملگر به دو عنصر نیاز دارد و با استفاده از آن‌ها یک مقدار را بازمی‌گرداند. این مقدار سپس در mydatabits ذخیره می‌شود. همان‌طور که حدس زده‌اید، این دستور چیزی بیشتر از mydatabits = mydata * 8 نیست. قدرت واقعی RPN در این واقعیت نهفته است که اولویت و ترتیب پردازش ورودی‌ها همیشه کاملاً مشخص است. برای عباراتی مانند "a = b + 3 * 5" ابتدا باید ۳ را در ۵ ضرب کنید پیش از آنکه b را با آن جمع کنید تا a به دست آید. با این حال، با پرانتز می‌توانید این ترتیب را تغییر دهید: "a = (b + 3) * 5". در RPN، این کار را با "a = b, 3, +, 5, *" بدون نیاز به پرانتز انجام می‌دهید.

عملگرهای بولی
LT, LE, GT, GE, EQ, NE

عملگرهای «کوچک‌تر»، «کوچک‌تر یا مساوی»، «بزرگ‌تر»، «بزرگ‌تر یا مساوی»، «برابر»، و «نابرابر»، همگی دو عنصر را از پشته برمی‌دارند، آن‌ها را بر اساس شرط مشخص‌شده مقایسه می‌کنند و برای درست مقدار 1 یا برای نادرست مقدار 0 بازمی‌گردانند. مقایسه یک مقدار unknown یا infinite منجر به بازگرداندن unknown می‌شود ... که در فراخوانی IF نیز به‌عنوان نادرست تلقی خواهد شد.

UN, ISINF

یک عنصر از پشته برمی‌دارند و آن را به ترتیب با unknown یا بی‌نهایت مثبت یا منفی مقایسه می‌کنند. برای درست مقدار 1 و برای نادرست مقدار 0 بازمی‌گردانند.

condition,then,else,IF

سه عنصر را از پشته برمی‌دارد. اگر عنصری که در آخر برداشته شد 0 (نادرست) باشد، مقداری که اول برداشته شده بود به پشته بازگردانده می‌شود، در غیر این صورت مقداری که در نوبت دوم برداشته شده بود بازگردانده می‌شود. این در واقع بدین معناست که هر مقداری غیر از 0 به‌عنوان درست در نظر گرفته می‌شود.

مثال: عبارت "A,B,C,IF" باید به صورت "if (A) then (B) else (C)" خوانده شود.

مقایسه مقادیر
MIN, MAX

دو عنصر از پشته برمی‌دارند و به ترتیب مقدار کوچک‌تر یا بزرگ‌تر را بازمی‌گردانند. توجه داشته باشید که infinite از هر چیز دیگری بزرگ‌تر است. اگر یکی از اعداد ورودی unknown باشد، نتیجه عملیات نیز unknown خواهد بود.

MINNAN, MAXNAN

نسخهٔ امن در برابر NAN برای MIN و MAX. اگر یکی از اعداد ورودی unknown باشد، نتیجه عملیات عدد دیگر خواهد بود. اگر هر دو unknown باشند، نتیجه عملیات unknown است.

lower-limit,upper-limit,LIMIT

دو عنصر را از پشته برمی‌دارد و از آن‌ها برای تعریف یک محدوده استفاده می‌کند. سپس عنصر دیگری را برمی‌دارد و اگر درون محدوده قرار گیرد، مجدداً به پشته بازگردانده می‌شود. در غیر این صورت، یک unknown در پشته قرار می‌گیرد.

محدودهٔ تعریف‌شده شامل دو نقطهٔ مرزی نیز می‌شود (بنابراین: عددی برابر با یکی از مرزها به پشته بازگردانده خواهد شد). اگر هر یک از این سه عدد دخیل unknown یا infinite باشد، این تابع همیشه یک unknown بازمی‌گرداند.

مثال: دستور "CDEF:a=alpha,0,100,LIMIT" اگر alpha کمتر از 0 یا بیشتر از 100 باشد، مقدار unknown را بازمی‌گرداند.

عملیات حسابی
+, -, *, /, %

جمع، تفریق، ضرب، تقسیم، باقیمانده (modulo)

ADDNAN

جمع امن در برابر NAN. اگر یکی از پارامترها NAN/UNKNOWN باشد، با آن مانند صفر رفتار خواهد شد. اگر هر دو پارامتر NAN/UNKNOWN باشند، NAN/UNKNOWN بازگردانده می‌شود.

value,power,POW

مقدار value را به توان power می‌رساند.

SIN, COS, LOG, EXP, SQRT

سینوس و کسینوس (ورودی بر حسب رادیان)، لگاریتم طبیعی (log) و تابع نمایی (exp)، ریشه دوم (جذر).

ATAN

آرک‌تانژانت (خروجی بر حسب رادیان).

ATAN2

آرک‌تانژانت مؤلفه‌های y و x (خروجی بر حسب رادیان). این عملگر یک عنصر را از پشته برمی‌دارد که مؤلفهٔ x (کسینوس) است، و سپس عنصر دومی که مؤلفهٔ y (سینوس) است. سپس آرک‌تانژانت نسبت آن‌ها را با رفع ابهام بین ربع‌های صفحه مختصات در پشته قرار می‌دهد.

مثال: دستور "CDEF:angle=Y,X,ATAN2,RAD2DEG" مؤلفه‌های "X,Y" را به یک زاویه بر حسب درجه تبدیل می‌کند.

FLOOR, CEIL

گرد کردن به پایین یا بالا به نزدیک‌ترین عدد صحیح.

ROUND

گرد کردن به نزدیک‌ترین عدد صحیح.

DEG2RAD, RAD2DEG

تبدیل زاویه از درجه به رادیان، یا از رادیان به درجه.

ABS

محاسبه مقدار قدر مطلق..IP "عملیات‌های مجموعه (Set Operations)" 4 count,SORT

یک عنصر را از پشته برمی‌دارد (pop می‌کند). این عنصر، تعداد (count) مواردی است که باید مرتب شوند. سپس count عنصر بالایی از عناصر باقی‌مانده، در جای خود روی پشته از کوچک‌ترین به بزرگ‌ترین مرتب می‌شوند.

4,3,22.1,1,4,SORT -> 1,3,4,22.1

count,REV

ترتیب عناصر را معکوس می‌کند.

مثال: عبارت "CDEF:x=v1,v2,v3,v4,v5,v6,6,SORT,POP,5,REV,POP,+,+,+,4,/" میانگین مقادیر v1 تا v6 را پس از حذف کوچک‌ترین و بزرگ‌ترین مقدار محاسبه می‌کند.

count,AVG

یک عنصر (count) را از پشته برمی‌دارد. سپس count عنصر را خارج کرده و میانگین آن‌ها را با نادیده گرفتن تمام مقادیر UNKNOWN در این فرایند، محاسبه می‌کند.

مثال: "CDEF:x=a,b,c,d,4,AVG"

count,SMIN و count,SMAX

یک عنصر (count) را از پشته برمی‌دارد. اکنون count عنصر را خارج کرده و کمینه/بیشینه را دوباره روی پشته قرار می‌دهد (push می‌کند).

مثال: "CDEF:x=a,b,c,d,4,SMIN"

count,MEDIAN

یک عنصر (count) را از پشته برمی‌دارد. اکنون count عنصر را خارج کرده و میانه را با نادیده گرفتن تمام مقادیر UNKNOWN در این فرایند پیدا می‌کند. اگر تعداد مقادیر غیر-UNKNOWN زوج باشد، میانگین دو مقدار میانی روی پشته قرار می‌گیرد.

مثال: "CDEF:x=a,b,c,d,4,MEDIAN"

count,STDEV

یک عنصر (count) را از پشته برمی‌دارد. اکنون count عنصر را خارج کرده و انحراف معیار این مقادیر را (با نادیده گرفتن مقادیر NAN) محاسبه می‌کند. نتیجه را دوباره در پشته قرار می‌دهد.

مثال: "CDEF:x=a,b,c,d,4,STDEV"

percent,count,PERCENT

دو عنصر (count,percent) را از پشته برمی‌دارد. اکنون count عنصر را خارج کرده و آن‌ها را بر اساس اندازه مرتب می‌کند (به‌طوری که کوچک‌ترین عناصر -INF، بزرگ‌ترین‌ها INF و NaN بزرگ‌تر از -INF اما کوچک‌تر از هر چیز دیگری است). عنصری را از فهرست مرتب‌شده برمی‌گزیند که percent درصد عناصر برابر با عنصر انتخاب‌شده باشند. نتیجه را روی پشته قرار می‌دهد.

مثال: "CDEF:x=a,b,c,d,95,4,PERCENT"

count,TREND, TRENDNAN

یک میانگین با «پنجرهٔ لغزان» (sliding window) از یک سری دادهٔ دیگر ایجاد می‌کند.

نحوهٔ استفاده: CDEF:smoothed=x,1800,TREND

این دستور یک میانگین پنجرهٔ لغزان نیم‌ساعته (۱۸۰۰ ثانیه‌ای) از x ایجاد می‌کند. این میانگین اساساً همان‌طور که در اینجا نشان داده شده محاسبه می‌شود:

            +---!---!---!---!---!---!---!---!--->
                                                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)

عملگر TRENDNAN برخلاف TREND در برابر مقادیر NAN ایمن است (NAN-safe). اگر از TREND استفاده کنید و یکی از مقادیر منبع NAN باشد، کل پنجرهٔ لغزان تحت تأثیر قرار می‌گیرد. عملگر TRENDNAN تمام مقادیر NAN را در پنجرهٔ لغزان نادیده گرفته و میانگین مقادیر باقی‌مانده را محاسبه می‌کند.

PREDICT, PREDICTSIGMA, PREDICTPERC

یک میانگین/سیگما/صدک «پنجرهٔ لغزان» از یک سری دادهٔ دیگر ایجاد می‌کند که هم‌زمان سری داده‌ها را به میزان زمان‌های مشخص‌شده نیز شیفت می‌دهد.

نحوهٔ استفاده - تعیین صریح شیفت‌ها: "CDEF:predict=<shift n>,...,<shift 1>,n,<window>,x,PREDICT" "CDEF:sigma=<shift n>,...,<shift 1>,n,<window>,x,PREDICTSIGMA" "CDEF:perc=<shift n>,...,<shift 1>,n,<window>,<percentil>,x,PREDICTPERC"

نحوهٔ استفاده - شیفت‌های تعریف‌شده بر اساس یک شیفت پایه و تعداد دفعات اعمال آن: "CDEF:predict=<shift multiplier>,-n,<window>,x,PREDICT" "CDEF:sigma=<shift multiplier>,-n,<window>,x,PREDICTSIGMA" "CDEF:sigma=<shift multiplier>,-n,<window>,<percentil>,x,PREDICTPERC"

مثال: CDEF:predict=172800,86400,2,1800,x,PREDICT

این دستور یک میانگین/سیگمای پنجرهٔ لغزان نیم‌ساعته (۱۸۰۰ ثانیه‌ای) از x ایجاد می‌کند؛ این میانگین اساساً مطابق آنچه در اینجا نشان داده شده محاسبه می‌شود:

+---!---!---!---!---!---!---!---!---!---!---!---!---!---!---!---!---!--->
                                                                    now
                                                 shift 1        t0
                                        <----------------------->
                              window
                        <--------------->
                                      shift 2
                <----------------------------------------------->
      window
<--------------->
                                                     shift 1        t1
                                            <----------------------->
                                  window
                            <--------------->
                                           shift 2
                    <----------------------------------------------->
          window
    <--------------->
Value at sample (t0) will be the average between (t0-shift1-window) and (t0-shift1)
                                     and between (t0-shift2-window) and (t0-shift2)
Value at sample (t1) will be the average between (t1-shift1-window) and (t1-shift1)
                                     and between (t1-shift2-window) and (t1-shift2)

این تابع بر اساس طراحی خود در برابر NAN ایمن است (NAN-safe). این قابلیت همچنین امکان برون‌یابی (extrapolation) به آینده (مثلاً چند روز) را فراهم می‌کند؛ ممکن است لازم باشد سری داده را با پارامتر اختیاری start= تعریف کنید، تا سری دادهٔ مبدأ اطلاعات کافی برای پیش‌بینی در ابتدای نمودار را نیز داشته باشد...

صدک (percentile) می‌تواند بین [-100:+100] باشد. صدک‌های مثبت بین مقادیر درون‌یابی (interpolate) انجام می‌دهند، در حالی که صدک‌های منفی نزدیک‌ترین مقدار را برمی‌گزینند.

مثال: شما ۷ شیفت با پنجرهٔ ۱۸۰۰ ثانیه‌ای اجرا می‌کنید. با فرض اینکه فایل rrd دارای اندازهٔ گام (step size) ۳۰۰ ثانیه‌ای باشد، یعنی محاسبهٔ صدک باید بر اساس حداکثر ۴۲ مقدار مجزا انجام شود (در صورت وجود NAN کمتر). این یعنی در بهترین حالت، نرخ گام بین مقادیر ۲٫۴ درصد خواهد بود. بنابراین اگر صدک ۹۹ام را بخواهید، باید به مقدار ۴۱٫۵۹ام نگاه کنید. از آنجا که تنها اعداد صحیح داریم، یا مقدار ۴۱ام یا مقدار ۴۲ام انتخاب می‌شود.

در صدک مثبت، یک درون‌یابی خطی بین این ۲ مقدار انجام می‌شود تا مقدار نهایی به دست آید.

در صدک منفی، نزدیک‌ترین مقدار از نظر فاصله بازگردانده می‌شود - بنابراین در حالت فوق مقدار ۴۲ام بازگردانده می‌شود که در عمل معادل بازگرداندن Percentile100 یا بیشینهٔ ۷ روز گذشته در آن پنجره است.

در اینجا مثالی آمده است که یک نمودار ۱۰ روزه ایجاد می‌کند و پیش‌بینی ۳ روز آینده را به همراه مقدار عدم قطعیت آن (به صورت avg+-4*sigma) نشان می‌دهد. همچنین مشخص می‌کند که آیا در نقطه‌ای خاص از پیش‌بینی فراتر رفته است یا خیر.

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:value#ff0000:value \
CDEF:predict=86400,-7,1800,value,PREDICT \
CDEF:sigma=86400,-7,1800,value,PREDICTSIGMA \
CDEF:upper=predict,sigma,3,*,+ \
CDEF:lower=predict,sigma,3,*,- \
LINE1:predict#00ff00:prediction \
LINE1:upper#0000ff:upper\ certainty\ limit \
LINE1:lower#0000ff:lower\ certainty\ limit \
CDEF:exceeds=value,UN,0,value,lower,upper,LIMIT,UN,IF \
TICK:exceeds#aa000080:1 \
CDEF:perc95=86400,-7,1800,95,value,PREDICTPERC \
LINE1:perc95#ffff00:95th_percentile

نکته: تجربه نشان داده است که ضریبی بین ۳ و ۵ برای مقیاس‌بندی سیگما، معیار مناسبی برای تشخیص رفتارهای غیرعادی است. بدیهی است که این موضوع به نوع داده‌ها و میزان «نویز» در سری داده نیز بستگی دارد.

همچنین به استفادهٔ صریح از start= در CDEF توجه کنید - این کار برای بارگذاری تمام داده‌های مورد نیاز (حتی اگر نمایش داده نشوند) ضروری است.

این پیش‌بینی فقط برای برون‌یابی‌های کوتاه‌مدت قابل استفاده است - مثلاً چند روز به آینده.

مقادیر ویژه (Special values)
UNKN

یک مقدار نامعلوم (unknown) را روی پشته قرار می‌دهد.

INF, NEGINF

یک مقدار بی‌نهایت مثبت یا منفی را روی پشته قرار می‌دهد. هنگامی که چنین مقداری رسم می‌شود، صرف‌نظر از اینکه مقدار واقعی روی محور y چه باشد، در بالاترین یا پایین‌ترین نقطهٔ نمودار نمایش داده می‌شود.

PREV

اگر این مقدار نخستین مقدار یک مجموعه داده باشد، یک مقدار نامعلوم (unknown) و در غیر این صورت، نتیجهٔ این CDEF در گام زمانی پیشین را روی پشته قرار می‌دهد. این کار امکان انجام محاسبات در طول داده‌ها را فراهم می‌کند. این تابع را نمی‌توان در دستورهای VDEF استفاده کرد.

PREV(vname)

اگر این مقدار نخستین مقدار یک مجموعه داده باشد، یک مقدار نامعلوم (unknown) و در غیر این صورت، نتیجهٔ متغیر vname در گام زمانی پیشین را روی پشته قرار می‌دهد. این کار امکان انجام محاسبات در طول داده‌ها را فراهم می‌کند. این تابع را نمی‌توان در دستورهای VDEF استفاده کرد.

COUNT

اگر این مقدار نخستین مقدار مجموعه داده باشد، عدد ۱ را روی پشته قرار می‌دهد، اگر دومین مقدار باشد عدد ۲ و به همین ترتیب. این مقدار ویژه به شما اجازه می‌دهد محاسبات را بر اساس موقعیت مقدار در مجموعه داده انجام دهید. این تابع را نمی‌توان در دستورهای VDEF استفاده کرد..IP "زمان (Time)" 4 زمان در RRDtool بر حسب ثانیه‌های سپری‌شده از مبدأ زمانی (epoch) اندازه‌گیری می‌شود. مبدأ زمانی به‌صورت "Thu Jan  1 00:00:00 UTC 1970" تعریف شده است.

NOW

زمان فعلی را روی پشته قرار می‌دهد.

STEPWIDTH

عرض گام فعلی بر حسب ثانیه است. می‌توانید از این عملگر برای بازگشت از نمایش‌های مبتنی بر نرخ به مقادیر مطلق استفاده کنید.

CDEF:abs=rate,STEPWIDTH,*,PREV,ADDNAN

NEWDAY,NEWWEEK,NEWMONTH,NEWYEAR

این عملگرها هرگاه گامی نخستین گام از دورهٔ داده‌شده باشد، مقدار 1.0 را برمی‌گردانند. دوره‌ها بر اساس منطقه زمانی محلی و تنظیمات "LC_TIME" تعیین می‌شوند.

CDEF:mtotal=rate,STEPWIDTH,*,NEWMONTH,0,PREV,IF,ADDNAN

TIME

زمانی را که مقدار در حال پردازش در آن ثبت شده است، روی پشته قرار می‌دهد.

LTIME

زمان تعریف‌شده توسط TIME را دریافت کرده، اختلاف منطقه زمانی معتبر در آن هنگام را با احتساب ساعت تابستانی (در صورت پشتیبانی سیستم‌عامل شما) اعمال می‌کند و نتیجه را روی پشته قرار می‌دهد. در بخش مثال‌های زیر، نمونه‌ای مفصل از نحوهٔ استفاده از این عملگر آورده شده است.

پردازش مستقیم پشته
DUP, POP, EXC

تکثیر عنصر بالایی، حذف عنصر بالایی، جابه‌جا کردن دو عنصر بالای پشته با یکدیگر.

DEPTH

عمق فعلی پشته را روی پشته قرار می‌دهد.

a,b,DEPTH -> a,b,2

n,COPY

نسخه‌ای از n عنصر بالای پشته را روی پشته قرار می‌دهد.

a,b,c,d,2,COPY => a,b,c,d,c,d

n,INDEX

عنصر nام را روی پشته قرار می‌دهد.

a,b,c,d,3,INDEX -> a,b,c,d,b

n,m,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

این عملگرها تنها در دستورهای VDEF کار می‌کنند. توجه داشته باشید که در حال حاضر تنها همین عملگرها برای VDEF قابل استفاده هستند.

مقدار متناظر را برمی‌گردانند؛ MAXIMUM و MINIMUM همچنین نخستین رخداد آن مقدار را در مؤلفهٔ زمان بازمی‌گردانند.

مثال: "VDEF:avg=mydata,AVERAGE"

انحراف معیار مقادیر را برمی‌گرداند.

مثال: "VDEF:stdev=mydata,STDEV"

آخرین/نخستین مقدار غیر-nan یا نامتناهی را برای جریان دادهٔ انتخاب‌شده، به همراه برچسب زمانی آن برمی‌گردانند.

مثال: "VDEF:first=mydata,FIRST"

نرخ هر بازهٔ زمانی تعریف‌شده را ضرب در اندازهٔ گام برمی‌گرداند. این می‌تواند برای مثال، هنگامی که بایت بر ثانیه را ثبت کرده‌اید، کل بایت‌های انتقال‌یافته را بازگرداند. مؤلفهٔ زمان، تعداد ثانیه‌ها را برمی‌گرداند.

مثال: "VDEF:total=mydata,TOTAL"

این باید پس از یک vname از دستورهای DEF یا CDEF بیاید. vname از پشته برداشته می‌شود (pop)، عدد دیگری نیز برداشته می‌شود که درصد مشخصی است (0..100). سپس مجموعه داده مرتب می‌شود و مقدار بازگردانده‌شده به‌گونه‌ای انتخاب می‌شود که percentage درصد از مقادیر، کمتر یا مساوی با نتیجه باشند. برای PERCENTNAN مقادیر Unknown نادیده گرفته می‌شوند، اما برای PERCENT مقادیر Unknown برای این منظور کمتر از هر عدد متناهی در نظر گرفته می‌شوند؛ بنابراین اگر این عملگر یک مقدار unknown برگرداند، به این معنی است که تعداد بسیار زیادی از آن‌ها را در داده‌های خود دارید. اعداد Infinite کمتر یا بیشتر از اعداد متناهی هستند و همیشه از مقادیر Unknown بزرگ‌ترند. (NaN < -INF < finite values < INF)

مثال: "VDEF:perc95=mydata,95,PERCENT"
"VDEF:percnan95=mydata,95,PERCENTNAN"

پارامترهای مربوط به خط کمترین مربعات (Least Squares Line - (y = mx +b)) را که مجموعه داده ارائه‌شده را تقریب می‌زند، بازمی‌گردانند. عملگر LSLSLOPE شیب (m) خط مرتبط با موقعیت COUNT داده‌ها است. عملگر LSLINT عرض از مبدأ (b) است که تصادفاً اولین نقطه داده روی نمودار نیز هست. عملگر LSLCORREL ضریب همبستگی (همچنین شناخته‌شده به عنوان ضریب همبستگی گشتاوری پیرسون یا Pearson's Product Moment Correlation Coefficient) است. دامنهٔ آن از 0 تا +/-1 بوده و کیفیت برازش را برای تقریب نشان می‌دهد.

مثال: "VDEF:slope=mydata,LSLSLOPE".SH "همچنین ببینید (SEE ALSO)" صفحه rrdgraph نمایی کلی از نحوه عملکرد rrdtool graph ارائه می‌دهد. صفحه rrdgraph_data دستورهای DEF، CDEF و VDEF را با جزئیات شرح می‌دهد. صفحه rrdgraph_rpn زبان RPN استفاده‌شده در عبارت‌های ?DEF را شرح می‌دهد. صفحه rrdgraph_graph تمام توابع graph و print را شرح می‌دهد.

برای نکات و ترفندها، حتماً rrdgraph_examples را مطالعه کنید.

برنامه توسط Tobias Oetiker <tobi@oetiker.ch>

این صفحه راهنما توسط Alex van den Bogaerdt <alex@vandenbogaerdt.nl> همراه با اصلاحات و/یا افزوده‌هایی توسط چندین نفر تهیه شده است.

2026-08-08 1.11.0