PMNS(5) File Formats Manual PMNS(5)

PMNS - فضای نام معیارهای عملکرد سیستم در ابزار PCP

$PCP_VAR_DIR/pmns

هنگام استفاده از رابط برنامه‌نویسی معیارهای عملکرد (PMAPI) در ابزار Performance Co-Pilot (PCP)، معیارهای عملکرد با یک نام خارجی در یک فضای نام سلسله‌مراتبی معیارهای عملکرد (PMNS) و یک شناسه داخلی به نام شناسه معیار عملکرد (PMID) مشخص می‌شوند.

یک PMNS ارتباط و تناظر میان نام یک معیار و PMID آن را مشخص می‌کند.

یک PMNS در یک یا چند فایل منبع ASCII تعریف می‌شود.

بارگذاری یک PMNS با فراخوانی pmLoadNameSpace(3) یا pmLoadASCIINameSpace(3) انجام می‌شود.

از نگارش 3.10.3 بسته PCP، به‌طور پیش‌فرض نام‌های تکراری برای یک PMID یکسان در PMNS مجاز است، اگرچه pmLoadASCIINameSpace(3) یک رابط جایگزین با امکان کنترل سفارشی توسط کاربر بر روی پردازش نام‌های تکراری در PMNS را فراهم می‌کند. قالب خارجی یک PMNS با نحو (سینتکس) و معناشناسی شرح داده شده در بخش‌های بعدی مطابقت دارد.

یک PMNS پیش‌فرض در فایل‌های زیرمسیر $PCP_VAR_DIR/pmns وجود دارد، اگرچه کاربران و توسعه‌دهندگان برنامه‌ها می‌توانند فضاهای نام PMNS جایگزین را ایجاد کرده و مورد استفاده قرار دهند. برای مشاهده نمونه‌ای از این مورد، آموزش PCP را در مسیر $PCP_DEMOS_DIR/Tutorial ببینید.

اگرچه یک برنامه می‌تواند pmLoadNameSpace(3) را فراخوانی کند، اما این کار معمولاً فقط به‌طور مستقیم برای گزینه خط فرمان -n انجام می‌شود که در آن یک فایل ریشه صریح برای PMNS مشخص شده باشد. از آنجا که نگارش ۲ برنامه PCP از یک PMNS توزیع‌شده استفاده می‌کند (به بخش زیر مراجعه کنید)، یک برنامه می‌تواند اطلاعات PMNS را از PMCD یک میزبان یا یک آرشیو استخراج کند. با این حال، اگر منبع PMNS یک آرشیو نگارش ۱ باشد (ببینید: PCPIntro(1))، آن‌گاه PMNS محلی با استفاده از مسیر مشخص‌شده توسط متغیر محیطی PMNS_DEFAULT بارگذاری خواهد شد.

در نگارش ۱ برنامه PCP، توابع PMNS در رابط برنامه‌نویسی همگی بر روی یک PMNS که به‌صورت محلی از یک فایل بارگذاری شده بود کار می‌کردند. اما از نگارش ۲ برنامه PCP، توابع PMNS ممکن است اطلاعات PMNS را از راه دور از یک PMCD یا مستقیماً از فراداده‌های یک آرشیو دریافت کنند.

مشخصات و تعاریف PMNS در ابتدا از pmcpp(1) عبور داده می‌شوند. این بدان معناست که امکانات زیر می‌توانند در این مشخصات به کار روند:

+
کامنت‌های سبک زبان C
+
دستورالعمل‌های #include
+
دستورالعمل‌های #define و جایگزینی ماکروها
+
پردازش‌های شرطی از طریق #ifdef ... #endif و غیره.

هنگامی که pmcpp(1) اجرا می‌شود، دایرکتوری‌های استاندارد include عبارتند از دایرکتوری جاری و $PCP_VAR_DIR/pmns.

پیش‌پردازش با pmcpp(1) ممکن است در برخی موارد که مشخص است PMNS فاقد هرگونه کامنت به سبک C، دستورالعمل‌های پیش‌پردازنده یا ماکروها است، نادیده گرفته شود. برای جزئیات بیشتر به شرح توابع pmLoadASCIINameSpace(3) و pmLoadNameSpace(3) مراجعه کنید.

سینتکس عمومی برای یک گره غیربرگ (non-leaf) در PMNS به صورت زیر است:

pathname {
        name      [pmid]
        ...
}

که در آن pathname مسیر کامل از ریشه PMNS به این گره غیربرگ است، به طوری که هر جزء در مسیر با یک «.» جدا شده است. گره ریشه برای PMNS باید نام ویژه «root» را داشته باشد، اما پیشوند مشترک «root.» باید از تمام مسیرها حذف شود. هر جزء در مسیر از مجموعه نویسه‌های ASCII(7) گرفته می‌شود که با یک نویسه الفبایی آغاز شده و پس از آن صفر یا چند نویسه از میان نویسه‌های الفبایی، ارقام و نویسه زیرخط (underscore «_») قرار می‌گیرد. برای نویسه‌های الفبایی در یک جزء از مسیر، حروف بزرگ و کوچک متمایز هستند.

گره‌های غیربرگ در PMNS ممکن است به هر ترتیبی تعریف شوند.

گره‌های فرزند با مجموعه‌ای از names، نسبت به pathname گره غیربرگ والد خود تعریف می‌شوند. برای گره‌های فرزند، گره‌های برگ دارای مشخصه pmid هستند و گره‌های غیربرگ چنین مشخصه‌ای ندارند. سینتکس مشخصه pmid به گونه‌ای انتخاب شده است که به مدیریت تخصیص PMIDها در دامنه‌های مجزا و مستقل مدیریتی و پیاده‌سازی کمک کند. هر pmid از ۳ بخش عدد صحیح تشکیل شده که با دونقطه (:) از هم جدا می‌شوند، مانند 14:27:11. این طرح شماره‌گذاری سلسله‌مراتبی با هدف بازتاب سلسله‌مراتب پیاده‌سازی دامنه معیارهای عملکرد، خوشه معیارها (مشابه ساختار داده یا تشابه عملیاتی) و معیار منفرد طراحی شده است. در عمل، دو بخش ابتدایی احتمالاً ماکروهایی در منبع مشخصات PMNS هستند و pmcpp(1) این ماکروها را به اعداد صحیح تبدیل خواهد کرد. این ماکروها برای اجزای اولیه pmid احتمالاً در یک فایل گنجانده‌شده استاندارد مانند $PCP_VAR_DIR/pmns/stdpmid یا در فایل منبع جاری تعریف می‌شوند.

برای پشتیبانی از معیارهای پویا، که در آن‌ها وجود یک معیار برای یک PMDA شناخته شده است اما در PMNS قابل مشاهده نیست، گونه دیگری از سینتکس برای pmid پشتیبانی می‌شود؛ به این صورت که یک شماره دامنه و به دنبال آن علامت‌های ستاره برای سایر اجزای pmid می‌آید، مانند 14:*:*. نام معیار متناظر، ریشه زیردرختی از نام‌های معیارهای پویا را تشکیل می‌دهد که در PMDA مربوطه بر اساس شماره دامنه مشخص شده است.

تخصیص فعلی مؤلفه مرتبه بالا (PMD یا دامنه) در شناسه PMID به شرح زیر است:

محدوده تخصیص
0 رزرو شده
1-384 بسته‌های PMDA عملیاتی از بسته‌های PCP
385-510 بسته‌های PMDA کاربران نهایی (تخصیص از بالا به پایین)
511 رزرو شده برای مدخل‌های پویای PMNS

#define KERNEL 1
#define FOO 387
root {
    network
    cpu
    dynamic     FOO:*:*
}
#define NETWORK 26
network {
    intrate     KERNEL:NETWORK:1
    packetrate
}
network.packetrate {
    in          KERNEL:NETWORK:35
    out         KERNEL:NETWORK:36
}
#define CPU 10
cpu {
    syscallrate KERNEL:CPU:10
    util
}
#define USER 20
#define SYSTEM 21
#define IDLE 22
cpu.util {
    user        KERNEL:CPU:USER
    sys         KERNEL:CPU:SYSTEM
    idle        KERNEL:CPU:IDLE
}

PCPIntro(1), pmcd(1), pmcpp(1), PCPIntro(3), PMAPI(3), pmErrStr(3), pmGetConfig(3), pmLoadASCIINameSpace(3), pmLoadNameSpace(3), pcp.conf(5) و pcp.env(5).

PCP Performance Co-Pilot