| PMIE(1) | General Commands Manual | PMIE(1) |
نام (NAME)
pmie - موتور استنتاج برای معیارهای کارایی
خلاصه دستور (SYNOPSIS)
pmie [-bCdeFfPqvVWxXz?] [-a archive] [-A align] [-c config] [-D debug] [-h host] [-l logfile] [-m note] [-j stompfile] [-n pmnsfile] [-o format] [-O offset] [-S starttime] [-t interval] [-T endtime] [-U username] [-Z timezone] [filename ...]
توضیحات (DESCRIPTION)
دستور pmie مجموعهای از عبارتهای حسابی، منطقی و قواعد را جهت ارزیابی در بسامدهای مشخص میپذیرد. دادههای پایه برای این عبارتها شامل مقادیر معیارهای کارایی هستند که به صورت بلادرنگ از هر میزبانی که دیمن جمعآوری معیارهای کارایی (PMCD) را اجرا میکند، دریافت میشوند، یا از دادههای پیشین بایگانیهای Performance Co-Pilot (PCP) به دست میآیند.
علاوه بر محاسبهٔ مقادیر حسابی و منطقی، pmie میتواند در پاسخ به شرایط مشخصشده، اقداماتی (مانند هشدارهای بالانشین، نوشتن پیام در گزارشهای سیستم و اجرای برنامهها) را اجرا کند. چنین اقداماتی در شناسایی، پایش و اصلاح مشکلات مرتبط با کارایی بسیار سودمند هستند.
عبارتهای مورد ارزیابی از فایلهای پیکربندی که توسط یک یا چند آرگومان filename مشخص شدهاند، خوانده میشوند. در صورت عدم وجود هرگونه filename، عبارتها از ورودی استاندارد خوانده خواهند شد.
خروجی pmie به صورت زیر به خروجی استاندارد و خطای استاندارد هدایت میشود:
گزینهها (OPTIONS)
گزینههای خط فرمان موجود عبارتند از:
- -a archive, --archive=archive
- آرگومان archive، که فهرستی از نامهای جداشده با کاما است و هر یک از آنها میتواند نام پایهٔ یک بایگانی یا نام دایرکتوری شامل یک یا چند بایگانی ایجاد شده توسط pmlogger(1) باشد. تکرار چندبارهٔ پرچم -a در خط فرمان برای تعیین فهرستی از مجموعههای بایگانی مجاز است. در این حالت، لازم است که برای هر میزبان تنها یک مجموعه از بایگانیها وجود داشته باشد. همچنین، هر نام میزبان صریحی که در یک عبارت pmie آمده است باید با نام میزبان ثبتشده در یکی از برچسبهای بایگانی مطابقت داشته باشد. در صورت وجود چندین مجموعه بایگانی، برچسبهای زمانی ثبتشده در بایگانیها برای تضمین سازگاری زمانی به کار میروند.
- -A align, --align=align
- بازهٔ زمانی اولیه را مجبور میکند تا بر مرز یک واحد زمانی طبیعی align تراز شود. برای شرح کامل نحو align به PCPIntro(1) مراجعه کنید.
- -b, --buffer
- خروجی به صورت سطری بافر خواهد شد و خروجی استاندارد به خطای استاندارد متصل میشود. این گزینه بیشترین کاربرد را برای اجرای پسزمینه در ترکیب با گزینهٔ -l دارد. گزینهٔ -b همواره برای نمونههای pmie که از طریق pmie_check(1) راهاندازی میشوند، استفاده میشود.
- -c config, --config=config
- یک جایگزین برای مشخص کردن filename در انتهای خط فرمان.
- -C, --check
- فایل(های) پیکربندی را تجزیه کرده و پیش از انجام هرگونه ارزیابی خارج میشود. هرگونه خطا در فایل پیکربندی گزارش خواهد شد.
- -d, --interact
- به طور معمول pmie به عنوان یک فرایند غیرتعاملی برای پایش و مدیریت کارایی یک یا چند میزبان اجرا میشود. با این حال، با مشخص کردن پرچم -d، اجرا به صورت تعاملی درآمده و منویی از گزینهها به کاربر ارائه میشود. حالت تعاملی عمدتاً برای اشکالزدایی عبارتهای جدید سودمند است.
- -e, --timestamp
- هنگامی که
به همراه
-V، -v یا -W
استفاده
شود، این
گزینه
برچسبهای
زمانی را
وادار
میکند تا
همراه با هر
عبارت
گزارش شوند.
برچسبهای
زمانی در
قالب ctime(3)
بوده، درون
پرانتز
قرار دارند
و پس از نام
عبارت و پیش
از مقدار
عبارت ظاهر
میشوند؛
مانند:
expr_1 (Tue Feb 6 19:55:10 2001): 12
- -f, --foreground
- اگر گزینهٔ -l مشخص شده باشد و گزینهٔ -a وجود نداشته باشد (یعنی پایش بلادرنگ)، pmie به عنوان یک دیمن در پسزمینه اجرا میشود (در سایر موارد، پیشفرض اجرای پیشزمینه است). گزینههای -f (و -F، پایین را ببینید) pmie را وادار میکنند تا بدون وابستگی به هر گزینهٔ دیگری، در پیشزمینه اجرا شود.
- -F, --systemd
- همانند -f، گزینهٔ -F نیز pmie را در پیشزمینه اجرا میکند، اما برخی کارهای مدیریتی داخلی را نیز انجام میدهد (مانند ایجاد یک فایل pid، تغییر شناسهٔ کاربر و اطلاعرسانی به systemd(1) هنگامی که pmie راهاندازی شده یا در حال خاموش شدن است). این گزینه برای مواردی در نظر گرفته شده که pmie توسط systemd(1) راهاندازی میشود و تبدیل به دیمن شدن از قبل انجام گرفته است. گزینههای -f و -F مانعةالجمع هستند.
- -h host, --host=host
- به طور پیشفرض دادههای کارایی از میزبان محلی (در حالت بلادرنگ) یا از میزبان نخستین مجموعه بایگانیِ نامبرده در خط فرمان (در حالت بایگانی) دریافت میشوند. آرگومان host این پیشفرض را لغو میکند. این گزینه میزبانهایی را که به طور صریح در عبارتهای مورد ارزیابی نام برده شدهاند، لغو نمیکند. آرگومان host به عنوان مشخصات اتصال برای pmNewContext تفسیر میشود، و بعداً به منظور گزارشدهی به نام میزبان اعلامشده توسط pmcd دوردست نگاشت میگردد. همچنین مقایسهٔ جایگزینیهای %h در برابر %c را در رشتههای اقدام قواعد در ادامه ببینید..TP -j file پیکربندی جایگزین پروتکل STOMP از stompfile بارگیری میشود. اگر از این گزینه استفاده نشود، و کنش stomp در هر قاعدهای به کار رفته باشد، از مکان پیشفرض $PCP_SYSCONF_DIR/pmie/config/stomp استفاده خواهد شد.
- -l logfile, --logfile=logfile
- خطای استاندارد به logfile ارسال میشود.
- -m note, --note=note
- برای نشان دادن اینکه pmie از کجا اجرا شده است به کار میرود؛ برای مثال pmie_check(1) و pmie_daily(1) از -m pmie_check استفاده میکنند و این مورد توسط pmie برای تشخیص اینکه در صورت تغییر نام میزبان PMCD به راهاندازی مجدد نیاز است یا خیر، استفاده میشود، همانطور که در بخش HOSTNAME CHANGES در زیر توضیح داده شده است.
- -n pmnsfile, --namespace=pmnsfile
- یک فضای نام معیارهای کارایی (PMNS) جایگزین از فایل pmnsfile بارگیری میشود.
- -o format, --format=format
- هنگام پردازش دادههای کارایی از یک بایگانی، گزینه -o میتواند برای تعیین یک format (قالب) خروجی جایگزین در زمان اجرای کنش یک قاعده استفاده شود. برای شرح چگونگی ساخت format خروجی، بخش DIFFERENCES IN HOST AND ARCHIVE MODES را ببینید.
- -O origin, --origin=origin
- مبدأ (origin) پنجره زمانی را مشخص میکند. برای شرح کامل این گزینه، PCPIntro(1) را ببینید.
- -P, --primary
- این نمونه را به عنوان نمونه اصلی pmie برای یک میزبان مشخص میکند. برای جزئیات بیشتر بخش «AUTOMATIC RESTART» را در زیر ببینید.
- -q, --quiet
- پیامهای تشخیصی را که بهطور پیشفرض در خروجی استاندارد چاپ میشوند سرکوب میکند؛ بهویژه پیام "evaluator exiting" زیرا میتواند اسکریپتها را سردرگم کند.
- -S starttime, --start=starttime
- زمان شروع (starttime) پنجره زمانی را مشخص میکند. برای شرح کامل این گزینه، PCPIntro(1) را ببینید.
- -t interval, --interval=interval
- آرگومان interval از نحو توصیفشده در PCPIntro(1) پیروی میکند و در سادهترین شکل میتواند یک عدد صحیح بدون علامت باشد (واحد ضمنی در این حالت ثانیه است). این مقدار برای تعیین فاصله نمونهبرداری عباراتی به کار میرود که فاصله نمونهبرداری خود را صراحتاً با استفاده از متغیر pmie با نام delta (توضیحدادهشده در زیر) تعیین نکردهاند. مقدار پیشفرض 10.0 ثانیه است.
- -T endtime, --finish=endtime
- زمان پایان (endtime) پنجره زمانی را مشخص میکند. برای شرح کامل این گزینه، PCPIntro(1) را ببینید.
- -U username, --username=username
- حساب کاربری که pmie تحت آن اجرا میشود. برای استفاده تعاملی، پیشفرض حساب کاربری فعلی است. هنگام اجرا به عنوان یک دیمن، در نسخههای فعلی PCP از حساب کاربری بدون امتیاز "pcp" استفاده میشود، اما در نسخههای قدیمیتر، حساب مدیر سیستم ("root") بهطور پیشفرض استفاده میشد.
- -v
- مگر اینکه یکی از گزینههای پرگویی -V، -v یا -W در خط فرمان مشخص شود، عبارات در سکوت ارزیابی میشوند و تنها خروجی، حاصل از اجرای کنشها خواهد بود. در حالت پرگو که با پرچم -v مشخص میشود، مقدار هر عبارت هنگام ارزیابی چاپ میشود. مقادیر در واحدهای استاندارد (canonical) هستند؛ بایت در بُعد «فضا»، ثانیه در بُعد «زمان» و رخدادها در بُعد «شمارش». برای جزئیات بُعدهای پشتیبانیشده و سازوکارهای مقیاسبندی معیارهای کارایی، pmLookupDesc(3) را ببینید. حالت پرگو برای نظارت بر مقدار عبارات مشخص، ارزیابی معیارهای کارایی مشتقشده، انتقال این مقادیر به ابزارهای دیگر برای پردازش بیشتر و اشکالزدایی عبارات جدید مفید است.
- -V, --verbose
- این گزینه اثری مشابه گزینه -v دارد، با این تفاوت که علاوه بر مقادیر عبارت، نام میزبان و نمونه (در صورت وجود) نیز چاپ میشوند.
- -W
- این گزینه اثری مشابه گزینه -V توضیحدادهشده در بالا دارد، با این تفاوت که برای عبارات بولی، تنها آن دسته از نامها و مقادیری که عبارت را درست (true) میکنند چاپ میشوند. اینها همان نامها و مقادیری هستند که مانند مقیدسازیهای %h، %i، %c و %v در دسترس کنشهای قاعده قرار دارند، همانطور که در زیر شرح داده شده است.
- -x, --secret-agent
- اجرا در حالت عامل دامنه (domain agent). این حالت در محصول Performance Co-Pilot برای بهدست آوردن مقادیر معیارهای خلاصهشده به کار میرود؛ ببینید: pmdasummary(1). در این حالت تنها قابلیتهای محدودی در دسترس است (از عبارتهای دارای کنش نمیتوان استفاده کرد).
- -X, --secret-applet
- اجرا در حالت اپلت مخفی (کلاینت سبک).
- -z, --hostzone
- تغییر منطقه زمانی گزارشدهی به منطقه زمانی میزبانی که منبع معیارهای کارایی است، همانطور که از طریق گزینه -h یا اولین مجموعه مشخصشده از بایگانیها (همانطور که در بالا برای گزینه -a توضیح داده شد) مشخص شده است.
- -Z timezone, --timezone=timezone
- تغییر منطقه زمانی گزارشدهی به timezone در قالب متغیر محیطی TZ همانطور که در environ(7) توضیح داده شده است.
- -?, --help
- نمایش پیام راهنمای استفاده و خروج..SH "مثالها (EXAMPLES)" عبارتهای نمونهی زیر برخی از قابلیتهای موتور استنتاج را نشان میدهند.
دایرکتوری $PCP_DEMOS_DIR/pmie شامل چندین نمونهی حاشیهنویسیشدهی دیگر از عبارتهای pmie است.
متغیر delta بسامد ارزیابی عبارت را کنترل میکند. مشخص کنید که عبارتهای بعدی تا اطلاع ثانوی، هر یک ثانیه ارزیابی شوند:
delta = 1 sec;
اگر نرخ کل تعویض زمینه (context switch) به ازای هر پردازنده از ۱۰۰۰۰ در ثانیه فراتر رود، یک اعلان هشدار نمایش بده:
kernel.all.pswitch / hinv.ncpu > 10000 count/sec -> alarm "high context switch rate %v";
اگر نرخ بالای تعویض زمینه برای ۱۰ نمونهی متوالی پایدار بماند، برنامهٔ top(1) را در یک پنجرهی xterm(1) برای پایش فرایندها اجرا کن، اما این کار را حداکثر هر ۵ دقیقه یک بار انجام بده:
all_sample (
kernel.all.pswitch @0..9 > 10 Kcount/sec * hinv.ncpu
) -> shell 5 min "xterm -e 'top'";
قاعدههای زیر هر ۲۰ ثانیه یک بار ارزیابی میشوند:
delta = 20 sec;
اگر هر دیسکی بیش از ۶۰ عملیات I/O در ثانیه انجام میدهد، پیامی مبنی بر شناسایی دیسک مشغول در خروجی استاندارد چاپ کن و dkvis(1) را اجرا کن:
some_inst (
disk.dev.total > 60 count/sec
) -> print "busy disks:" " %i" &
shell 5 min "dkvis";
قاعدهٔ قبلی را طوری اصلاح کنید که تنها بین ساعتهای ۹ صبح تا ۵ بعدازظهر اعمال شود و نیاز باشد ۳ نمونه از ۴ نمونهی متوالی پیش از اجرای عمل، از آستانه فراتر رفته باشند:
$hour >= 9 && $hour <= 17 &&
some_inst (
75 %_sample (
disk.dev.total @0..3 > 60 count/sec
)
) -> print "disks busy for 20 sec:" " [%h]%i";
دو قاعدهٔ زیر هر ۱۰ دقیقه یک بار ارزیابی میشوند:
delta = 10 min;
اگر سیستمفایل / یا /usr بیش از ۹۵٪ پر شده باشد، یک اعلان هشدار بازشو نمایش بده، اما در صورتی که طی ۴ ساعت گذشته نمایش داده شده باشد، از نمایش مجدد خودداری کن:
filesys.free #'/dev/root' /
filesys.capacity #'/dev/root' < 0.05
-> alarm 4 hour "root filesystem (almost) full";
filesys.free #'/dev/usr' /
filesys.capacity #'/dev/usr' < 0.05
-> alarm 4 hour "/usr filesystem (almost) full";
قاعدهٔ زیر به سیستمی نیاز دارد که از معیارهای lmsensors پشتیبانی کند. اگر دمای محیط دستگاه در یک بازه زمانی ۱۰ دقیقهای بیش از ۲ درجه افزایش یابد، یک ورودی در گزارش سیستم ثبت کن:
lmsensors.coretemp_isa.temp1 @0 - lmsensors.coretemp_isa.temp1 @1 > 2 -> alarm "temperature rising fast" & syslog "machine room temperature rise alarm";
و یک مورد جالب اگر با پایگاه دادهٔ Oracle خود مشکلات کارایی دارید:
// back to 30sec evaluations
delta = 30 sec;
sid = "ptg1"; # $ORACLE_SID setting
lid = "223"; # latch ID from v$latch
lru = "#'$sid/$lid cache buffers lru chain'";
host = ":moomba.melbourne.sgi.com";
gets = "oracle.latch.gets $host $lru";
total = "oracle.latch.gets $host $lru +
oracle.latch.misses $host $lru +
oracle.latch.immisses $host $lru";
$total > 100 && $gets / $total < 0.2
-> alarm "high lru latch contention in database $sid";
مجموعه قواعد ruleset زیر بسته به در دسترس بودن و مقدار میانگین بار (load average) ۱ دقیقهای، دقیقاً یک پیام صادر خواهد کرد.
delta = 1 minute;
ruleset
kernel.all.load #'1 minute' > 10 * hinv.ncpu ->
print "extreme load average %v"
else kernel.all.load #'1 minute' > 2 * hinv.ncpu ->
print "moderate load average %v"
unknown ->
print "load average unavailable"
otherwise ->
print "load average OK"
;
قاعدهٔ زیر زمانی که یک سیستمفایل بیش از ۷۵٪ پر شده باشد و با سرعتی پر شود که در صورت تداوم، در کمتر از ۳۰ دقیقه بهطور ۱۰۰٪ پر خواهد شد، پیامی صادر میکند.
some_inst (
100 * filesys.used / filesys.capacity > 75 &&
filesys.used + 30min * (rate filesys.used) > filesys.capacity
) -> print "filesystem will be full within 30 mins:" " %i";
اگر معیار
mypmda.errors خطاها
را بشمارد،
آنگاه
قانون زیر
در صورتی که
نرخ خطاها
از ۱ در
ثانیه
فراتر رود،
به شرطی که
تعداد
خطاها کمتر
از ۱۰۰ باشد
پیامی صادر
خواهد کرد.
mypmda.errors > 1 && instant mypmda.errors < 100 -> print "high error rate: %v";
شروع سریع (QUICK START)
زبان مشخصات pmie قدرتمند و گسترده است.
برای سرعت بخشیدن به توسعهٔ سریع قوانین pmie، ابزار pmieconf(1) امکانی را برای ایجاد یک فایل پیکربندی pmie از مجموعهای از قوانین تعمیمیافتهٔ pmie فراهم میکند. مجموعه قوانین ارائهشده طیف گستردهای از سناریوهای کارایی را پوشش میدهد.
کتاب Performance Co-Pilot User's and Administrator's Guide فصلی تفصیلی به سبک آموزشی ارائه میدهد که pmie را پوشش میدهد.
نحو عبارات (EXPRESSION SYNTAX)
این توصیف مختصر و غیررسمی است. برای توضیحات جامعتر به Performance Co-Pilot User's and Administrator's Guide مراجعه کنید.
یک مشخصهٔ pmie دنبالهای از عبارات است که با نقطهویرگول خاتمه مییابند.
توالی «//» یک توضیح (comment) را آغاز میکند و تمام متن از آن نقطه تا انتهای خط ورودی جاری نادیده گرفته خواهد شد.
عملگرهای پایه بر اساس عملگرهای حسابی، رابطهای و بولیِ زبان برنامهنویسی C مدلسازی شدهاند. قوانین اولویت همانطور که انتظار میرود عمل میکنند، اگرچه استفاده از پرانتزها برای افزایش خوانایی و رفع ابهام توصیه میشود.
عملوندها نامهای معیارهای کارایی (ببینید PMNS(5)) و ثابتهای لفظی معمولی هستند.
عملوندهای شامل معیارهای کارایی ممکن است در نتیجهٔ شمارش در ابعاد hosts، instances و time، مجموعهای از مقادیر را تولید کنند. توصیفکنندههای خاصی ممکن است پس از نام معیار کارایی بیایند تا شمارش را در هر بعد تعریف کنند. برای مثال،
kernel.percpu.cpu.user :foo :bar #cpu0 @0..2
۶ مقدار متناظر با زمان سپریشده در اجرای حالت کاربر (user mode) روی CPU 0 در میزبانهای «foo» و «bar» در طول ۳ نمونهٔ متوالی آخر را تعریف میکند. تفسیر پیشفرض در نبود توصیفکنندههای : (میزبان)، # (نمونه) و @ (زمان)، تمامی نمونهها در تازهترین زمان نمونهگیری برای منبع پیشفرض معیارهای کارایی PCP است.
نامهای میزبان و نمونه که از قواعد متغیرها در زبانهای برنامهنویسی پیروی نمیکنند (یعنی حروف الفبا که اختیاری با نویسههای حرفی-عددی دنبال میشوند)، باید در علامتهای نقلقول تکی قرار گیرند.
ارزیابی عبارات از اصل «کمترین شگفتی» پیروی میکند. در مواردی که معیارهای کارایی معنای شمارنده (counter) دارند، pmie بهطور خودکار آنها را بر اساس نمونههای متوالی و بازهٔ زمانی میان این نمونهها به یک نرخ (rate) تبدیل میکند. تمام عبارات عددی با دقت مضاعف (double precision) ارزیابی میشوند و در صورت لزوم، بهطور خودکار به واحدهای استاندارد «bytes»، «seconds» و «counts» مقیاسبندی میشوند. توجه داشته باشید معیارهایی که بر روی واحدهای اضافهای مانند «temperature» یا «voltage» تعریف شدهاند، به واحدهای استاندارد مقیاسبندی نمیشوند.
یک rule (قانون) شکل خاصی از عبارت است که یک شرط یا عبارت منطقی، یک عملگر ویژه (->) و اقداماتی را مشخص میکند که در صورت برقرار بودن شرط، باید انجام شوند.
جدول زیر عملگرهای پایهٔ pmie را خلاصه میکند:
| عملگرها | توضیحات |
| + - * / | حسابی |
| < <= == >= > != | رابطهای (مقایسهٔ مقدار) |
| ! && || | بولی |
| -> | قانون (Rule) |
| rising | بولی، گذار از نادرست به درست |
| falling | بولی، گذار از درست به نادرست |
| rate | تبدیل صریح نرخ (بهندرت لازم است) |
| instant | بدون تبدیل خودکار نرخ (بهندرت لازم است) |
تمام عملگرها برای عملوندها و عبارات دارای مقدار عددی پشتیبانی میشوند. برای عملوندهای دارای مقدار رشتهای، یعنی ثابتهای لفظی رشتهای محصور در علامت نقلقول دوتایی یا معیارهایی با نوع دادهٔ رشته (PM_TYPE_STRING)، فقط عملگرهای == و != پشتیبانی میشوند.
عملگرهای rate و instant معکوس منطقی یکدیگر هستند، بنابراین عبارت حسابی expr برابر با rate instant expr است. موارد مفیدتر شامل استفاده از rate به همراه معیاری است که شمارنده نیست تا نرخ تغییر در طول زمان تعیین شود، یا استفاده از instant با معیاری که یک شمارنده است تا بررسی شود آیا مقدار فعلی بالاتر یا پایینتر از آستانهای مشخص قرار دارد یا خیر.
عملگرهای تجمیعی (aggregate) ممکن است برای تجمیع یا خلاصهسازی در امتداد یک بعد از یک عبارت دارای مقادیر مجموعهای به کار روند. عملگرهای تجمیعی زیر از یک عبارت منطقی به یک عبارت منطقی با بعد پایینتر نگاشت انجام میدهند.
| عملگرها | نوع | توضیحات |
| some_inst some_host some_sample | وجودی | اگر دستکم یکی از اعضای مجموعه در بعد مرتبط درست باشد، نتیجه «درست» است |
| all_inst all_host all_sample | عمومی | اگر تمام اعضای مجموعه در بعد مرتبط درست باشند، نتیجه «درست» است |
| N%_inst N%_host N%_sample | درصدی | اگر دستکم N درصد از اعضای مجموعه در بعد مرتبط درست باشند، نتیجه «درست» است |
عملگرهای نمونهای (instantial) زیر را میتوان برای فیلتر کردن یا محدود ساختن یک عبارت منطقی با مقادیر مجموعهای، بر اساس تطابق عبارات باقاعده با نامهای نمونه استفاده کرد. عبارت منطقی باید مجموعهای شامل بُعد نمونهها باشد، و عبارت باقاعده از قالبی است که توسط egrep(1) یا عبارات باقاعدهٔ گسترشیافتهٔ regcomp(3) استفاده میشود.
| عملگرها | توضیحات |
| match_inst | به ازای هر مقدار از عبارت منطقی که «درست» است، در صورتی که نام نمونهٔ مرتبط با عبارت باقاعده تطابق داشته باشد، نتیجه «درست» است؛ در غیر این صورت نتیجه «نادرست» خواهد بود. |
| nomatch_inst | به ازای هر مقدار از عبارت منطقی که «درست» است، در صورتی که نام نمونهٔ مرتبط با عبارت باقاعده تطابق نداشته باشد، نتیجه «درست» است؛ در غیر این صورت نتیجه «نادرست» خواهد بود. |
| برای نمونه، عبارت زیر برای دیسکهای متصل به کنترلکنندههای ۲ یا ۳ که بیش از ۲۰ عملیات در ثانیه انجام میدهند، “درست” (true) خواهد بود: |
| +0.5i |
| match_inst "^dks[23]d" disk.dev.total > 20; |
| عملگرهای تجمیعی (aggregate) زیر، یک عبارت محاسباتی را به یک عبارت محاسباتی با بُعد پایینتر نگاشت میکنند. | |
| box,center; | |
| cw(2.4i) | c | cw(2.4i) | |
| lf(CB) | l | l. | |
| عملگرها | نوع |
| min_inst min_host min_sample | اکسترمم |
| حداقل مقدار در میان تمام اعضای مجموعه در بُعد مربوطه | |
| T} | |
| max_inst max_host max_sample | اکسترمم |
| حداکثر مقدار در میان تمام اعضای مجموعه در بُعد مربوطه | |
| T} | |
| sum_inst sum_host sum_sample | تجمیعی |
| مجموع مقادیر در میان تمام اعضای مجموعه در بُعد مربوطه | |
| T} | |
| avg_inst avg_host avg_sample | تجمیعی |
| میانگین مقادیر در میان تمام اعضای مجموعه در بُعد مربوطه | |
| T} |
عملگرهای تجمیعی count_inst، count_host و count_sample با شمارش تعداد اعضای مجموعهای که عبارت برای آنها در بُعد مربوطه درست (true) است، یک عبارت منطقی را به یک عبارت محاسباتی با بُعد پایینتر نگاشت میکنند.
برای قواعد کنش (action rules)، کنشهای زیر تعریف شدهاند:
| عملگرها | توضیحات |
| alarm | ایجاد یک هشدار تصویری با xconfirm(1) |
| نمایش در خروجی استاندارد | |
| shell | اجرا با sh(1) |
| stomp | ارسال یک پیام STOMP به یک سرور JMS |
| syslog | افزودن یک پیام به فایل لاگ سیستم |
کنشهای چندگانه را میتوان با عملگرهای & و | از یکدیگر جدا کرد تا به ترتیب اجرای متوالی (هر دو کنش اجرا میشوند) و اجرای جایگزین (کنش دوم تنها در صورتی اجرا میشود که اجرای کنش اول وضعیت خطای غیرصفر بازگرداند) مشخص شوند.
آرگومانهای کنشها عبارتند از یک زمان سرکوب (suppression time) اختیاری، و سپس یک یا چند عبارت (یک رشته در این زمینه، یک عبارت محسوب میشود). رشتههایی که به عنوان آرگومان برای یک کنش ظاهر میشوند، میتوانند شامل گزینشگرهای خاص زیر باشند که در زمان اجرای کنش جایگزین خواهند شد:
- %h
- نام میزبان(هایی) که چپترین عبارت سطح بالا را در شرط درست (true) میکنند.
- %c
- رشته(های) مشخصات اتصال یا فایلهایی برای یک ابزار PCP جهت دستیابی به میزبانها یا بایگانیهایی که چپترین عبارت سطح بالا را در شرط درست (true) میکنند.
- %i
- نمونه(هایی) که چپترین عبارت سطح بالا را در شرط درست (true) میکنند.
- %v
- یک مقدار از چپترین عبارت سطح بالا در شرط، به ازای هر جفت میزبان و نمونهای که شرط را درست (true) میکند.
توجه داشته باشید که بسط گزینشگرهای خاص با تکرار کل آرگومان برای هر اتصال یکتا به هر یک از گزینشگرهای خاص واجد شرایط انجام میشود. برای نمونه، اگر قاعدهای برای میزبان mumble با نمونههای grunt و snort، و برای میزبان fumble با نمونهٔ puff درست باشد، آنگاه کنش
... -> shell myscript "Warning: %h:%i busy ";دستور myscript را با رشته آرگومان "Warning: mumble:grunt busy Warning: mumble:snort busy Warning: fumble:puff busy" اجرا خواهد کرد.
در مقایسه، اگر کنش
... -> shell myscript "Warning! busy:" " %h:%i";تحت همان شرایط اجرا میشد، آنگاه myscript با رشته آرگومان "Warning! busy: mumble:grunt mumble:snort fumble:puff" اجرا میشد.
معناشناسی بسط گزینشگرهای خاص منجر به یک الگوی استفاده رایج در یک کنش میشود، که در آن یک آرگومان ثابت است (شامل هیچ گزینشگر خاصی نیست)، آرگومان دوم شامل گزینشگرهای خاص مورد نظر با حداقل نویسههای جداکننده است، و یک آرگومان اختیاری سوم پسبندی ثابت را ارائه میدهد (مثلاً برای بستن نقلقولهای آرگومان اول). در صورت لزوم، پسپردازش (به عنوان مثال در myscript) میتواند پیمایش لازم روی هر بسط یکتا از رشتهای که فقط شامل گزینشگرهای خاص است را فراهم کند.
برای شرطهای پیچیده، اتصالها به این گزینشگرها بدیهی نیست. اکیداً توصیه میشود که هنگام توسعه قواعد، pmie در حالت اشکالزدایی (به ویژه با مشخص کردن گزینه خط فرمان -W) استفاده شود..SH "عبارتهای بولی (BOOLEAN EXPRESSIONS)" عبارتهای pmie که دارای معناشناسی بولی هستند، برای نمونه foo.bar > 10 یا some_inst ( my.table < 0 ) مقادیر true یا false یا unknown را میگیرند. یک مقدار در صورتی unknown خواهد بود که یک یا چند مورد از مقادیر متریکهای زیربنایی در دسترس نباشند، برای نمونه نتوان با pmcd(1) روی میزبان ارتباط برقرار کرد، متریک در بایگانی PCP موجود نباشد، در حال حاضر هیچ مقداری در دسترس نباشد، مقادیر دریافتشده برای محاسبه مقداری با نرخ تبدیلشده ناکافی باشند، یا مقادیر دریافتشده برای نمونهبرداری به تعداد مورد نیاز در دامنه زمانی کافی نباشند.
عملگرهای بولی هنگام ترکیب مقادیری که شامل unknown هستند، از قواعد متداول منطق کلینی (شناختهشده به عنوان منطق سهارزشی) پیروی میکنند:
| A and B | B | |||
| true | false | unknown | ||
| A | true | true | false | unknown |
| false | false | false | false | |
| unknown | unknown | false | unknown | |
| A or B | B | |||
| true | false | unknown | ||
| A | true | true | true | true |
| false | true | false | unknown | |
| unknown | true | unknown | unknown | |
| A | not A |
| true | false |
| false | true |
| unknown | unknown |
مجموعهقوانین (RULESETS)
بند ruleset
برای تعریف
مجموعهای
از قوانین و
کنشها به
کار میرود
که به ترتیب
ارزیابی
میشوند تا
زمانی که
کنشی اجرا
شود؛ در این
مرحله،
قوانین و
کنشهای
باقیمانده
نادیده
گرفته
میشوند تا
زمانی که
ruleset
دوباره
برای
ارزیابی
زمانبندی
گردد.
کلیدواژه
else برای
جداسازی
قوانین
استفاده
میشود. پس
از یک یا چند
قانون عادی
(شامل یک
گزاره و یک
کنش)، یک
ruleset
میتواند
شامل بند
اختیاری
unknown -> action
باشد، که به
صورت
اختیاری با
بند
otherwise -> action
دنبال
میشود.
اگر همه گزارهها در قوانین به unknown ارزیابی شوند و یک بند unknown مشخص شده باشد، کنش مرتبط با بند unknown اجرا خواهد شد.
اگر هیچ گزاره قانونی true نباشد و کنش unknown نیز یا مشخص نشده یا اجرا نشده باشد و یک بند otherwise مشخص شده باشد، کنش مرتبط با بند otherwise اجرا خواهد شد.
ضریبهای مقیاس (SCALE FACTORS)
ضریبهای مقیاس را میتوان به عبارتهای حسابی افزود تا مقدار را به صورت خطی به واحدهای متعارف مقیاسبندی کنند. ضریبهای مقیاس ساده از این کلیدواژهها ساخته میشوند: nanosecond، nanosec، nsec، microsecond، microsec، usec، millisecond، millisec، msec، second، sec، minute، min، hour، byte، Kbyte، Mbyte، Gbyte، Tbyte، count، Kcount و Mcount، و عملگر /، برای نمونه “Kbytes / hour”.
متریکهای
تعریفشده
روی
واحدهای
فرعی مانند
“temperature” (دما) یا
“voltage” (ولتاژ)
ممکن است
تنوع بسیار
زیادی از
مقیاسهای
ممکن داشته
باشند، اما
در pmie
پشتیبانی
از
کلیدواژهها
برای اعمال
مقیاس وجود
ندارد؛
بنابراین
عبارتها
باید از
مقیاسبندی
صریح
استفاده
کنند، برای
نمونه:
this.temp.celsius >=
(other.temp.fahrenheit - 32) * 5 / 9
ماکروها (MACROS)
ماکروها با استفاده از عبارتهایی به این شکل تعریف میشوند:
name = constexpr;
به طوری که name از قواعد معمول متغیرها در زبانهای برنامهنویسی پیروی میکند، یعنی حروف الفبا که میتواند به صورت اختیاری با نویسههای الفبایی-عددی دنبال شود. constexpr باید یک عبارت ثابت باشد، چه یک رشته (درون دو نقلقول) یا یک عبارت حسابی که به صورت اختیاری با یک ضریب مقیاس دنبال میشود.
ماکروها زمانی بسط مییابند که نام آنها همراه با پیشوند دلار ($) در یک عبارت ظاهر شود، و ماکروها ممکن است درون یک رشته constexpr به صورت تو در تو قرار گیرند.
نامهای ماکروی رزروشده زیر پشتیبانی میشوند:
- minute
- دقیقه کنونی از ساعت.
- hour
- ساعت کنونی از شبانهروز، در بازه 0 تا 23.
- day
- روز کنونی از ماه، در بازه 1 تا 31.
- month
- ماه کنونی از سال، در بازه 0 (ژانویه) تا 11 (دسامبر).
- year
- سال کنونی.
- day_of_week
- روز کنونی از هفته، در بازه 0 (یکشنبه) تا 6 (شنبه).
- delta
- بازه نمونهبرداری اعمالشده برای این عبارت.
تاریخها و زمانها در منطقه زمانی گزارشدهی ارائه میشوند (توضیحات گزینههای خط فرمان -Z و -z در بالا را ببینید)..SH "راهاندازی مجدد خودکار (AUTOMATIC RESTART)" اغلب مفید است که فرایندهای pmie هنگام راهاندازی (بوت) یا خاموش شدن میزبان محلی، یا زمانی که تشخیص داده میشود دیگر در حال اجرا نیستند (زمانی که بنا به دلایلی بهطور غیرمنتظره خارج شدهاند)، شروع و متوقف شوند. برای جزئیات بیشتر در مورد خودکارسازی این فرایند به pmie_check(1) مراجعه کنید.
بهطور اختیاری، هر سامانهای که pmcd(1) را اجرا میکند میتواند برای اجرای یک نمونه «اصلی» (primary) از pmie نیز پیکربندی شود. این نمونه از pmie توسط $PCP_RC_DIR/pmie راهاندازی میشود و تحت تأثیر فایلهای $PCP_SYSCONF_DIR/pmie/control، $PCP_SYSCONF_DIR/pmie/control.d (برای فعال یا غیرفعال کردن نمونه اصلی pmie از chkconfig(8)، systemctl(1) یا دستورهای مشابه مختص پلتفرم استفاده کنید) و $PCP_VAR_DIR/config/pmie/config.default (فایل پیکربندی اولیه پیشفرض برای pmie اصلی) قرار میگیرد.
نمونه اصلی pmie با گزینه -P مشخص میشود. در هر سامانه حداکثر میتواند یک نمونه «اصلی» pmie وجود داشته باشد. نمونه اصلی pmie (در صورت وجود) باید روی همان میزبانی اجرا شود که pmcd(1) متصل به آن در حال اجراست (در صورت وجود)، بنابراین گزینههای -h و -P مانعةالجمع هستند.
پایش رویدادها (EVENT MONITORING)
پایش سامانههای عملیاتی در یک مکان مرکزی امری رایج است. بهطور سنتی در سیستمهای UNIX این کار توسط امکانات لاگ سیستم انجام میشده است - نگاه کنید به logger(1) و syslogd(1). در Windows، ارتباط با گزارش وقایع سیستم (event log) توسط pcp-eventlog(1) مدیریت میشود.
زمانی که قوانین از کنش syslog استفاده میکنند، pmie با این مدل سازگار میشود. توجه داشته باشید که اگر رشته کنش با -p (اولویت) و/یا -t (برچسب) آغاز شود، این موارد از رشته استخراج شده و به همان شیوهای که در logger(1) و pcp-eventlog(1) آمده، پردازش میشوند.
با این حال، وجود دیگر چارچوبهای پایش رویداد نیز متداول است که ممکن است بخواهید رویدادهای کارایی حاصل از pmie را در آنها ادغام کنید. اغلب میتوانید از کنش shell برای ارسال رویدادها به این چارچوبها استفاده کنید، زیرا معمولاً برنامهای برای تزریق رویدادها از منابع خارجی به درون چارچوب خود ارائه میدهند.
گزینه پایانی، استفاده از کنش stomp (پروتکل Streaming Text Oriented Messaging Protocol) است که به pmie امکان میدهد به یک سرور مرکزی JMS (سیستم پیامرسانی جاوا) متصل شده و رویدادها را به تاپیک PMIE ارسال کند. میتوان ابزارهایی برای استخراج این پیامهای متنی و نمایش آنها به عوامل عملیات (از طریق پنجرههای بازشو دسکتاپ و غیره) توسعه داد. استفاده از کنش stomp نیازمند تنظیم یک فایل پیکربندی stomp است که مکان میزبان سرور JMS، شماره درگاه و نام کاربری/گذرواژه را مشخص میکند.
قالب این فایل به صورت زیر است:
host=messages.sgi.com # this is the JMS server (required) port=61616 # and its listening here (required) timeout=2 # seconds to wait for server (optional) username=joe # (required) password=j03ST0MP # (required) topic=PMIE # JMS topic for pmie messages (optional)
مقدار timeout مدت زمانی (به ثانیه) را مشخص میکند که pmie باید پس از ارسال پیام، منتظر تأیید دریافت از سوی سرور JMS بماند (همانطور که توسط پروتکل STOMP الزامی شده است). توجه داشته باشید که هنگام راهاندازی، pmie بهمدت نامحدود منتظر برقراری اتصال خواهد ماند و تا زمانی که آن اتصال اولیه برقرار نشود، ارزیابی قوانین را آغاز نخواهد کرد. اگر در حین اجرای pmie اتصال به سرور JMS در هر زمانی قطع شود، pmie در هر ارزیابی درست بعدی از یک قاعده دارای کنش stomp، برای اتصال مجدد تلاش خواهد کرد، اما نه بیشتر از یک بار در هر دقیقه. این سازوکار برای جلوگیری از تشدید ازدحام در شبکه طراحی شده است. در این وضعیت، که اتصال STOMP به سرور JMS قطع شده است، کنش stomp یک مقدار خطای غیرصفر را برمیگرداند..SH "تفاوتها در حالتهای میزبان و بایگانی (DIFFERENCES IN HOST AND ARCHIVE MODES)" هنگام اجرا در حالت میزبان، بازه زمانی delta برای هر قاعده، یک تأخیر بیدرنگ (real-time) بین ارزیابی قواعد را تعیین میکند؛ بنابراین pmie بیشتر وقت خود را در خواب و در انتظار برای ارزیابی زمانبندیشده بعدی قواعد میگذراند.
هنگام اجرا در حالت بایگانی، pmie از بازه زمانی delta برای هر قاعده استفاده میکند تا مشخص کند قواعد با چه تناوبی در برابر دادههای بایگانی ارزیابی شوند؛ اما بر خلاف حالت میزبان، هیچ تأخیر بیدرنگی وجود ندارد زیرا بایگانی با حداکثر سرعت ممکن “بازپخش” میشود.
در حالت بایگانی، زمانی که گزاره یک قاعده true ارزیابی شود، اقدام (action) تغییر مییابد؛ به طوری که به جای ارسال به syslog یا فعالسازی یک alarm دیداری یا اجرای یک دستور shell یا ارسال پیام stomp، ابزار pmie نام اقدام، برچسب زمانی برگرفته از بایگانی در هنگام true بودن گزاره راهانداز اقدام و تمام آرگومانهایی را که در حالت میزبان به اقدام واقعی ارسال میشدند، چاپ میکند.
برای
مثال، با در
نظر گرفتن
قاعده:
delta = 10 sec;
kernel.all.nprocs > 10 * hinv.ncpu -> print "lotsaprocs:"
" %v";
هنگام اجرا
در برابر یک
بایگانی،
خروجی به
صورت زیر
نمایش داده
میشود:
print Mon Sep 4 00:10:21 2017: lotsaprocs: 1292 print Mon Sep 4 00:10:31 2017: lotsaprocs: 1294 print Mon Sep 4 00:10:41 2017: lotsaprocs: 1291 ...
دلیل این امر آن است که بستری که اقدام قرار بود در آن اجرا شود (در حالت میزبان)، مربوط به زمانی در گذشته و احتمالاً روی میزبانی متفاوت بوده است (اگر بایگانی از یک میزبان جمعآوری شده باشد، اما pmie روی میزبان دیگری اجرا شود). بنابراین، سرریز کردن syslog با پیامهای گمراهکننده، یا ایجاد بهمنی از هشدارهای دیداری، یا انبوهی از پیامهای STOMP، یا اجرای دستور پوستهای که ممکن است حتی روی میزبانی که pmie روی آن اجرا میشود کار نکند، همگی نمونههایی از «رفتارهای نامطلوب» هستند که باید از آنها دوری کرد. در عوض، خروجی به شکل متنی با قالبی منظم و مناسب برای پسپردازش به همراه مجموعهای از فیلترها و ابزارهای تحلیل کارایی است.
قالب خروجی را میتوان با استفاده از گزینه -o تغییر داد؛ این گزینه شامل نویسههای عینی به همراه نشانههای تعبیهشده «فرامیدان» (meta-field) زیر است:
- %a
- نام اقدام، مانند print، syslog و غیره.
- %d
- تاریخ و زمان در قالب ctime(3) در زمانی که اقدام اجرا میشد.
- %f
- نام فایل پیکربندی شامل اقدامی که در حال اجرا است، و در غیر این صورت <stdin> چنانچه قواعد از ورودی استاندارد خوانده شده باشند.
- %l
- شماره خط (تقریبی) در فایل پیکربندی برای اقدامی که در حال اجرا است.
- %m
- بخش پیامِ اقدام.
- %u
- تاریخ و زمانی که اقدام در آن اجرا میشد، در قالب گسترشیافته ctime(3) همراه با دقت میکروثانیهای برای زمان.
- %%
- یک نویسه درصد واقعی (%).
قالب پیشفرض خروجی معادل یک format به صورت %a %d: %m است.
سیگنالها (SIGNALS)
اگر سیگنال SIGHUP به pmie ارسال شود، فایل logfile بسته، پیوندزدایی (unlink) و مجدداً باز خواهد شد. این سازوکار توسط pmie_daily(1) برای انجام چرخش شبانه گزارشها به کار میرود.
بیشتر اوقات pmie در حالت خواب است و منتظر میماند تا زمان ارزیابی مجموعه بعدی قواعد فرا برسد. ارسال یک سیگنال SIGUSR1 به pmie باعث میشود جزئیات مربوط به ارزیابی مجموعه بعدی قواعد روی logfile تخلیه شود؛ از جمله اینکه مدت خواب فعلی چقدر است و چه مقدار زمان باقی مانده است. زمانبندی قواعد با این عمل تغییری نمیکند..SH "تغییرات نام میزبان (HOSTNAME CHANGES)" نام میزبان PMCD که معیارها را به pmie ارائه میدهد، به چند روش استفاده میشود.
نام میزبان PMCD بهطور داخلی برای مقداردهی به جایگزینیهای %h در رشتههای عملیات قوانین به کار میرود.
برای نمونههای pmie که از یک PMCD محلی استفاده میکنند و توسط pmie_check(1) و pmie_daily(1) (یا سرویسهای systemd(1) یا cron(8) که از این اسکریپتها استفاده میکنند) راهاندازی و مدیریت میشوند، نام میزبان محلی ممکن است برای ساخت نام دایرکتوریای که لاگهای pmie یک میزبان در آن ذخیره میشوند نیز استفاده شود، مانند $PCP_LOG_DIR/pmie/<hostname>.
نام میزبان PMCD ممکن است هنگام راهاندازی سیستم در زمان گذار از یک نام میزبان موقت به یک نام میزبان دائمی، یا با اقدام صریح مدیر سیستم در هر زمانی پس از راهاندازی سیستم، تغییر کند. هنگامی که این اتفاق میافتد، ممکن است pmie نیاز به اقدام خاصی داشته باشد؛ بهویژه اگر نمونهٔ pmie از pmie_check(1) یا pmie_daily(1) راهاندازی شده باشد، pmie باید خارج شود. در شرایط عادی، systemd(1) یا cron(8) اندکی پس از آن یک pmie جدید را راهاندازی خواهند کرد و این نمونهٔ جدید pmie در بستر نام میزبان جدید میزبانی که PMCD روی آن در حال اجراست، عمل خواهد کرد.
گزارش باگها (BUGS)
اسکنر واژگانی و تجزیهکننده تلاش خواهند کرد پس از بروز خطا در عبارتهای ورودی، وضعیت را بازیابی کنند. تجزیه پس از نادیده گرفتن ورودی تا نقطه-ویرگول (;) بعدی از سر گرفته میشود؛ با این حال، در طول این فرآیند پرش، اسکنر نسبت به کامنتها و رشتهها بیاعتنا است، بنابراین یک نقطه-ویرگولِ تعبیهشده ممکن است باعث شود تجزیه از مکانی غیرمنتظره از سر گرفته شود. این رفتار تا حد زیادی بیخطر است، زیرا تا زمانی که خطای نحوی اولیه برطرف نشود، pmie هیچ تلاشی برای ارزیابی عبارتها انجام نخواهد داد.
فایلها (FILES)
- $PCP_DEMOS_DIR/pmie/*
- قوانین نمونهٔ حاشیهنویسیشده
- $PCP_VAR_DIR/pmns/*
- فایلهای پیشفرض مشخصات PMNS
- $PCP_TMP_DIR/pmie
- pmie فایلهایی را در این دایرکتوری نگهداری میکند تا نمونههای در حال اجرای pmie را شناسایی کرده و اطلاعات زمان اجرای هر نمونه را صادر کند - این دادهها اساس معیارهای کارایی pmcd.pmie را تشکیل میدهند
- $PCP_PMIECONTROL_PATH
- مجموعهٔ پیشفرض نمونههای pmie برای راهاندازی در زمان بوت - برای جزئیات به pmie_check(1) مراجعه کنید
محیط PCP (PCP ENVIRONMENT)
متغیرهای محیطی با پیشوند PCP_ برای پارامتریکسازی نام فایلها و دایرکتوریهای مورداستفاده توسط PCP به کار میروند. در هر نصب، فایل /etc/pcp.conf حاوی مقادیر محلی برای این متغیرها است. متغیر $PCP_CONF میتواند برای تعیین یک فایل پیکربندی جایگزین استفاده شود، همانطور که در pcp.conf(5) شرح داده شده است.
هنگام اجرای عملیات پوسته، pmie دو متغیر IFS و PATH را در محیط فرآیند فرزند بازنویسی میکند. مقدار IFS روی "\t\n" تنظیم میشود. مقدار PATH روی ترکیبی از یک مسیر پیشفرض برای تمامی پلتفرمها ("/usr/sbin:/sbin:/usr/bin:/bin") و چندین مؤلفهٔ قابلپیکربندی تنظیم میشود. این مؤلفهها (به این ترتیب) عبارتند از: $PCP_BIN_DIR، $PCP_BINADM_DIR و $PCP_PLATFORM_PATHS.
هنگام اجرای عملیات هشدارهای بازشو، pmie از مقدار $PCP_XCONFIRM_PROG به عنوان برنامهٔ اعلان بصری برای اجرا استفاده خواهد کرد. این متغیر معمولاً روی pmconfirm(1)، یک کادر گفتگوی چندپلتفرمی، تنظیم شده است.
همچنین در یونیکس ببینید (UNIX SEE ALSO)
همچنین در ویندوز ببینید (WINDOWS SEE ALSO)
گزینههای اشکالزدایی (DEBUGGING OPTIONS)
گزینهٔ -D یا --debug خروجی عیبیابیهای بیشتری را در stderr فعال میکند تا به تفکیک و اولویتبندی مشکلات کمک کند، اگرچه اطلاعات گاهی مبهم است و در درجهٔ اول برای راهنمایی توسعهدهندگان در نظر گرفته شده است تا کاربران نهایی. debug فهرستی از گزینههای اشکالزدایی است که با کاما از هم جدا شدهاند؛ از pmdbg(1) همراه با گزینهٔ -l برای دریافت فهرستی از گزینههای اشکالزدایی موجود و معانی آنها استفاده کنید.
گزینههای اشکالزدایی اختصاصی pmie به شرح زیر هستند:
| گزینه | توضیحات |
| appl0 | اسکن واژگانی حین تجزیهٔ فایل پیکربندی |
| appl1 | تجزیهٔ فایل پیکربندی و ساخت درخت عبارت |
| appl2 | ارزیابی عبارت |
| appl3 | عملیاتهای فایل وضعیت |
| "همچنین ببینید (SEE ALSO)" | |
| PCPIntro (1), | |
| pmcd (1), | |
| pmconfirm (1), | |
| pmie_check (1), | |
| pmieconf (1), | |
| pmie_daily (1), | |
| pminfo (1), | |
| pmlogdump (1), | |
| pmlogger (1), | |
| pmval (1), | |
| systemd (1), | |
| ctime (3), | |
| PMAPI (3), | |
| pcp.conf (5), | |
| pcp.env (5) | |
| و | |
| PMNS (5). | |
| "راهنمای کاربر (USER GUIDE)" | |
| برای توضیحات کاملتر دربارهی زبان | |
| pmie | |
| به | |
| "Performance Co-Pilot Users and Administrators Guide" | |
| مراجعه کنید. این راهنما بهصورت آنلاین در نشانی زیر در دسترس است: | |
| +4n |
| https://pcp.readthedocs.io/en/latest/UAG/PerformanceMetricsInferenceEngine.html |
| -4n |
| PCP | Performance Co-Pilot |