| RRDGRAPH_RPN(1) | rrdtool | RRDGRAPH_RPN(1) |
نام (NAME)
rrdgraph_rpn - درباره محاسبات ریاضی RPN در rrdtool graph
خلاصه دستور (SYNOPSIS)
RPN expression:=vname|operator|value[,RPN expression]
توضیحات (DESCRIPTION)
اگر تاکنون از ماشینحسابهای سنتی 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, *" بدون نیاز به پرانتز انجام میدهید.
عملگرها (OPERATORS)
- عملگرهای بولی
- 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
متغیرها (VARIABLES)
این عملگرها تنها در دستورهای VDEF کار میکنند. توجه داشته باشید که در حال حاضر تنها همین عملگرها برای VDEF قابل استفاده هستند.
- MAXIMUM, MINIMUM, AVERAGE
- مقدار
متناظر را
برمیگردانند؛
MAXIMUM و MINIMUM همچنین
نخستین
رخداد آن
مقدار را در
مؤلفهٔ
زمان
بازمیگردانند.
مثال: "VDEF:avg=mydata,AVERAGE"
- STDEV
- انحراف
معیار
مقادیر را
برمیگرداند.
مثال: "VDEF:stdev=mydata,STDEV"
- LAST, FIRST
- آخرین/نخستین
مقدار غیر-nan
یا
نامتناهی
را برای
جریان
دادهٔ
انتخابشده،
به همراه
برچسب
زمانی آن
برمیگردانند.
مثال: "VDEF:first=mydata,FIRST"
- TOTAL
- نرخ هر
بازهٔ
زمانی
تعریفشده
را ضرب در
اندازهٔ
گام
برمیگرداند.
این
میتواند
برای مثال،
هنگامی که
بایت بر
ثانیه را
ثبت
کردهاید،
کل
بایتهای
انتقالیافته
را
بازگرداند.
مؤلفهٔ
زمان،
تعداد
ثانیهها
را
برمیگرداند.
مثال: "VDEF:total=mydata,TOTAL"
- PERCENT, PERCENTNAN
- این باید پس
از یک 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" - LSLSLOPE, LSLINT, LSLCORREL
- پارامترهای
مربوط به خط
کمترین
مربعات (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 را مطالعه کنید.
نویسنده (AUTHOR)
برنامه توسط Tobias Oetiker <tobi@oetiker.ch>
این صفحه راهنما توسط Alex van den Bogaerdt <alex@vandenbogaerdt.nl> همراه با اصلاحات و/یا افزودههایی توسط چندین نفر تهیه شده است.
| 2026-08-08 | 1.11.0 |