LOGARCHIVE(5) File Formats Manual LOGARCHIVE(5)

LOGARCHIVE - قالب‌های آرشیو Performance Co-Pilot

آرشیوهای Performance Co-Pilot (PCP) مقادیر تاریخی معیارهای دلخواه ثبت‌شده از یک میزبان منفرد را ذخیره می‌کنند. آرشیوها مستقل از ماشین و خودکفا هستند - تمام داده‌های معیار و فراداده‌های مورد نیاز برای تحلیل برون‌خط (off-line) یا خارج از محل (off-site) درون یک آرشیو نگهداری می‌شوند.

قالب پایدار است تا امکان ذخیره‌سازی تاریخی بلندمدت و پردازش توسط ابزارهای کلاینت PMAPI(3) را فراهم سازد. با این حال، برخی انواع قالب در طول زمان پشتیبانی می‌شوند و در حال حاضر نگارش‌های ۲ و ۳ پشتیبانی می‌شوند. الزامی که وجود دارد این است که PCP سازگاری عقبروی بلندمدت فراهم کند، به طوری که یک آرشیو ایجاد شده در هر نگارش PCP بتواند در همان نگارش PCP و تمام نگارش‌های بعدی PCP خوانده شود. استثنا نگارش ۱ است که در انتشار نگارش ۲.۰ PCP در مه ۱۹۹۸ کنار گذاشته شد.

آرشیوها ممکن است توسط بیشتر ابزارهای کلاینت PCP با استفاده از گزینه -a/--archive NAME خوانده شوند، یا به صورت خام توسط pmlogdump(1) تخلیه (dump) گردند. آرشیوها در درجه اول توسط pmlogger(1) ایجاد می‌شوند، اما می‌توان آن‌ها را با استفاده از رابط برنامه‌نویسی LOGIMPORT(3) نیز ایجاد کرد.

آرشیوها را می‌توان با استفاده از pmlogreduce(1)، pmlogsummary(1)، pmlogrewrite(1) و pmlogextract(1) ادغام، تحلیل، اصلاح و زیرنمونه‌گیری کرد. علاوه بر این، آرشیوهای PCP را می‌توان در مجموعه‌ها بررسی کرد یا در «برگه‌های آرشیو» (archive folios) گروه‌بندی نمود که توسط ابزارهای mkaf(1) و pmafm(1) ایجاد و مدیریت می‌شوند.

یک آرشیو از چندین فایل فیزیکی تشکیل شده است که در یک پیشوند دلخواه مشترک سهیم هستند، برای نمونه myarchive.

myarchive.0, myarchive.1, ...
یک یا چند حجم داده (data volume) حاوی مقادیر معیار و هرگونه کد خطای رخ‌داده در حین نمونه‌برداری معیار. این فایل‌ها معمولاً بزرگ‌ترین فایل‌ها هستند و ممکن است بسته به انتخاب معیارهای ثبت‌شونده توسط pmlogger(1) و فواصل نمونه‌برداری استفاده‌شده، بسیار سریع رشد کنند.
اطلاعات برای توابع PMAPI مانند pmLookupName(3)، pmLookupDesc(3)، pmLookupLabels(3) و pmLookupInDom(3). فایل فراداده ممکن است با تغییر معیارهای ثبت‌شده، دامنه‌های نمونه و برچسب‌ها در طول زمان، به طور پراکنده رشد کند.
یک نمایه زمانی (temporal index)، که برچسب‌های زمانی را به آفست‌های بایتی در سایر فایل‌ها نگاشت می‌کند.

تمام این سه نوع فایل دارای ساختاری مشابه مبتنی بر رکورد، قرارداد کدگذاری به ترتیب بایتی شبکه (big-endian) و فیلدهای ۳۲ بیتی برای برچسب‌گذاری/فاصله‌گذاری (padding) این رکوردها هستند. رشته‌ها به صورت نویسه‌های ۸ بیتی بدون فرض یک کدگذاری خاص ذخیره می‌شوند، بنابراین معمولاً ASCII هستند. همچنین انواع __pmLog* را در src/include/pcp/libpcp.h ببینید.

فایل‌های حجم و .meta به رکوردهای خود-شناسا تقسیم می‌شوند.

Offset Length Name
0 4 N، طول رکورد، به بایت، شامل همین فیلد
4 N-8 بار داده (payload) رکورد، معمولاً با یک تگ ۳۲ بیتی نوع رکورد آغاز می‌شود
N-4 4 N، طول رکورد (مجدداً)

هر سه نوع فایل با یک سرآیند «برچسب آرشیو» (archive label) آغاز می‌شوند که نام میزبان، برچسب زمانی شروع و اطلاعات منطقه زمانی را مشخص می‌کند؛ همگی به میزبانی اشاره دارند که منبع داده‌های کارایی بوده است (که ممکن است با میزبانی که pmlogger(1) روی آن در حال اجرا بود، متفاوت باشد).

قالب «برچسب آرشیو» بین نگارش ۲ و نگارش ۳ متفاوت است؛ نگارش ۳ برچسب‌های زمانی بهبودیافته (کدگذاری ۶۴ بیتی بخش ثانیه‌ها و دقت در حد نانوثانیه) و برخی فیلدهای اضافی را ارائه می‌دهد.

Version 2
Offset Length Name
0 4 تگ، PM_LOG_MAGIC | PM_LOG_VERS02=0x50052602
4 4 شناسه فرآیند (PID) فرآیند pmlogger که فایل را نوشته است
8 4 زمان شروع آرشیو، بخش ثانیه‌ها (از مبدأ یونیکس)
12 4 زمان شروع آرشیو، بخش میکروثانیه‌ها
16 4 شماره حجم فعلی آرشیو (یا ‎-1=.meta، ‎-2=.index)
20 64 نام میزبان جمع‌آوری‌کننده
80 40 رشته منطقه زمانی برای میزبان جمع‌آوری‌کننده (متغیر محیطی $TZ)
Version 3
Offset Length Name
0 4 تگ، PM_LOG_MAGIC | PM_LOG_VERS03=0x50052603
4 4 PID فرآیند pmlogger که فایل را نوشته است
8 8 زمان شروع آرشیو، بخش ثانیه‌ها (از مبدأ یونیکس)
16 4 زمان شروع آرشیو، بخش نانوثانیه‌ها
20 4 شماره حجم فعلی آرشیو (یا ‎-1=.meta، ‎-2=.index)
24 4 بیت‌های ویژگی آرشیو
28 4 رزرو شده برای استفاده در آینده
32 256 نام میزبان جمع‌آوری‌کننده
288 256 رشته منطقه زمانی برای میزبان جمع‌آوری‌کننده (متغیر محیطی $TZ)، مثلاً AEDT-11
544 256 رشته zoneinfo منطقه زمانی برای میزبان جمع‌آوری‌کننده، مثلاً :Australia/Melbourne

«بیت‌های ویژگی آرشیو» به منظور کدگذاری گسترش‌های احتمالی آینده یا تفاوت‌ها در ساختار روی دیسک یا معناشناسی آرشیو در نظر گرفته شده‌اند. در این مرحله چنین ویژگی‌هایی وجود ندارند، اما اگر در نقطه‌ای در آینده معرفی شوند، ماکروهای مربوطه با نام PM_LOG_FEATURE_XXX به فایل سرآیند <pcp/pmapi.h> افزوده خواهند شد.

تمام فیلدها، به جز «شماره حجم فعلی آرشیو»، برای تمامی فایل‌ها در یک آرشیو PCP منفرد یکسان هستند.

پس از رکورد برچسب آرشیو، یک فایل حجم آرشیو شامل یک یا چند رکورد است که هر کدام مقادیر معیار متناظر با pmResult از یک عملیات pmFetch(3) را ارائه می‌دهند. اندازه رکورد ممکن است بسته به تعداد معیارهای واکشی‌شده و تعداد نمونه‌ها در دامنه‌های نمونه متناظر، متغیر باشد.

برای نگارش ۲، اندازه فایل به دلیل ذخیره‌سازی آفست‌های بایتی ۳۲ بیتی درون نمایه زمانی، به ۲ گیبی‌بایت (2GiB) محدود است. برای نگارش ۳، اندازه فایل به دلیل ذخیره‌سازی آفست‌های بایتی ۶۲ بیتی درون نمایه زمانی، به ۸۱۹۱ پبی‌بایت (8191PiB) محدود است.

قالب pmResult بین نگارش ۲ و نگارش ۳ تفاوت دارد؛ نگارش ۳ برچسب‌های زمانی بهبودیافته‌ای را ارائه می‌دهد (کدگذاری ۶۴ بیتی بخش ثانیه‌ها و دقت در حد نانوثانیه).

Version 2
Offset Length Name
0 4 برچسب زمانی، بخش ثانیه‌ها (از مبدأ یونیکس)
4 4 برچسب زمانی، بخش میکروثانیه‌ها
8 4 تعداد معیارهایی که داده‌هایشان در ادامه می‌آید
12 M pmValueSet #0
12+M N pmValueSet #1
12+M+N ... ...
NOP X pmValueBlock #0
NOP+X Y pmValueBlock #1
NOP+X+Y ... ...
Version 3
Offset Length Name
0 8 برچسب زمانی، بخش ثانیه‌ها (از مبدأ یونیکس)
8 4 برچسب زمانی، بخش نانوثانیه‌ها
12 4 تعداد معیارهایی که داده‌هایشان در ادامه می‌آید
16 M pmValueSet #0
16+M N pmValueSet #1
16+M+N ... ...
NOP X pmValueBlock #0
NOP+X Y pmValueBlock #1
NOP+X+Y ... ...

رکوردهایی که «تعداد معیارهای» آن‌ها برابر صفر است، «رکوردهای نشانه‌گذاری» (mark records) هستند و نشان‌دهنده وقفه، داده‌های ناموجود، یا ناپیوستگی‌های زمانی در ثبت گزارش هستند.

این زیررکورد مقادیر یک معیار را در یک نقطه زمانی نشان می‌دهد.

Offset Length Name
0 4 شناسه معیارهای کارایی (PMID)
4 4 تعداد مقادیر
8 4 قالب مقدار، PM_VAL_INSITU=0 یا PM_VAL_DPTR=1
12 M pmValue #0
12+M N pmValue #1
12+M+N ... ...

فراداده توصیف‌کننده معیارها در فایل .meta یافت می‌شود؛ جایی که ورودی‌ها برچسب زمانی ندارند، زیرا فرض بر این است که فراداده در سرتاسر یک آرشیو بدون تغییر باقی می‌ماند.

این زیررکورد بیانگر یک مقدار برای یک نمونه از یک معیار در یک نقطه زمانی است. این فیلد یک نوع متغیر (variant) است که به فیلد قالب مقدار در pmValueSet والد بستگی دارد. این امر اجازه می‌دهد تا اعداد کوچک به صورت فشرده کدگذاری شوند، اما انعطاف‌پذیری برای ذخیره داده‌های بزرگ‌تر یا با طول متغیر در ادامه رکورد pmResult درون یک زیررکورد pmValueBlock حفظ شود.

Offset Length Name
0 4 شناسه داخلی نمونه (یا ‎PM_IN_NULL=-1 برای معیارهای مفرد)
4 4 مقدار (INSITU) یا
آفست در pmResult به pmValueBlock مربوطه (DPTR)

فراداده توصیف‌کننده دامنه نمونه برای معیارها در فایل .meta قرار دارد. از آنجا که نگاشت‌های عددی ممکن است در طول چرخه حیات نشست ثبت تغییر کنند، تطبیق دادن برچسب زمانی رکورد اندازه‌گیری با رکورد دامنه نمونه متناظر حائز اهمیت است. بدین معنی که دامنه نمونه متناظر با یک اندازه‌گیری در زمان T، همان مشاهده دامنه نمونه برای دامنه نمونه آن معیار با بزرگ‌ترین برچسب زمانی T' <= T است.

نمونه‌های این زیررکورد در انتهای pmValueSet، پس از تمام زیررکوردهای pmValue قرار می‌گیرند. اگر (و تنها اگر) نیاز باشد، در انتها تا مرز ۳۲ بیتی بعدی فاصله‌گذاری (pad) می‌شوند.

Offset Length Name
0 1 نوع مقدار (مشابه pmDesc.type)
1 3 ۴ + N، طول زیررکورد
4 N بایت‌هایی که مقدار خام را تشکیل می‌دهند
4+N 0-3 فاصله‌گذاری (در فیلد طول ۴ + N گنجانده نشده است)

توجه داشته باشید که برای PM_TYPE_STRING، طول شامل یک بایت پایانی صریح NULL است. برای PM_TYPE_EVENT، رشته بایتی مقدار ساختاریافته‌تر است. برای اطلاعات بیشتر در مورد نحوه بسته‌بندی آرایه‌هایی از رکوردهای رویداد درون یک نگه‌دارنده pmResult، به PMDAEVENTARRAY(3) مراجعه کنید.

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

برای نگارش ۲، اندازه فایل به دلیل ذخیره‌سازی آفست‌های بایتی ۳۲ بیتی درون نمایه زمانی، به ۲ گیبی‌بایت (2GiB) محدود است. برای نگارش ۳، اندازه فایل به دلیل ذخیره‌سازی آفست‌های بایتی ۶۲ بیتی درون نمایه زمانی، به ۸۱۹۱ پبی‌بایت (8191PiB) محدود است.

همچنین libpcp/src/logmeta.c را ببینید.

نمونه‌های این رکورد (pmDesc) توصیف یا فراداده را برای هر معیاری که در آرشیو PCP ظاهر می‌شود فراهم می‌کنند. این فراداده شامل شناسه معیار (PMID)، نوع داده، معناشناسی داده، شناسه دامنه نمونه (یا PM_INDOM_NULL برای معیارهای مفرد با تنها یک مقدار) و مجموعه‌ای از نام‌ها (۱ یا بیشتر) است.

Offset Length Name
0 4 تگ، TYPE_DESC=1
4 4 PMID
8 4 نوع داده (PM_TYPE_*)
12 4 شناسه دامنه نمونه
16 4 معناشناسی معیار (PM_SEM_*)
20 4 واحدها: pmUnits بیت‌بندی‌شده
4 4 تعداد نام‌های جایگزین برای این PMID
28 4 N: تعداد بایت‌ها در این نام
32 N بایت‌های نام، بدون نویسه پایانی NULL یا فاصله‌گذاری
32+N 4 N2: تعداد بایت‌ها در نام بعدی
36+N N2 بایت‌های نام، بدون نویسه پایانی NULL یا فاصله‌گذاری
... ... ...

یک معیار چندمقداری (مجموعه‌ای) بر روی یک دامنه نمونه تعریف می‌شود که شامل یک شناسه دامنه نمونه (که قبلاً در یک رکورد پیشین pmDesc ذکر شده است)، شمارش تعداد نمونه‌ها و نگاشتی است که ارتباط میان شناسه‌های داخلی نمونه (اعداد صحیح) و نام‌های خارجی نمونه (رشته‌ها) را تعریف می‌کند.

از آنجا که دامنه‌های نمونه می‌توانند در طول زمان تغییر کنند، دامنه نمونه به برچسب زمانی نیز نیاز دارد و همان دامنه نمونه می‌تواند چندین بار در فایل .meta تکرار شود. این برچسب‌های زمانی برای جستجوی دامنه نمونه‌ای که از نظر زمانی در هنگام رمزگشایی رکوردهای pmResult از حجم‌های داده آرشیو، یا پاسخ به پرس‌وجوهای فراداده درباره دامنه نمونه صحیح است، استفاده می‌شوند.

قالب دامنه نمونه میان نگارش ۲ و نگارش ۳ تفاوت چشمگیری دارد. نگارش ۳ برچسب‌های زمانی بهبودیافته (کدگذاری ۶۴ بیتی بخش ثانیه‌ها و دقت در حد نانوثانیه) را ارائه می‌دهد و قالب جدیدی برای دامنه نمونه موسوم به «دلتا» (delta) معرفی می‌کند که تفاوت‌های میان مشاهده قبلی دامنه نمونه و وضعیت فعلی دامنه نمونه را کدگذاری می‌کند.

Full Instance Domain - Version 2
Offset Length Name
0 4 تگ، TYPE_INDOM_V2=2
4 4 برچسب زمانی، بخش ثانیه‌ها (از مبدأ یونیکس)
8 4 برچسب زمانی، بخش میکروثانیه‌ها
12 4 شماره دامنه نمونه
16 4 N: تعداد نمونه‌ها در دامنه، معمولاً >0
20 4 شماره نخستین نمونه
24 4 شماره دومین نمونه (در صورت وجود)
... ... ...
20+4*N 4 نخستین آفست در جدول رشته‌ها (به زیر نگاه کنید)
20+4*N+4 4 دومین آفست در جدول رشته‌ها (و غیره)
... ... ...
20+8*N M پایه جدول رشته‌ها، حاوی
نام‌های فشرده و پایان‌یافته با NULL نمونه‌ها
Full Instance Domain - Version 3
Offset Length Name
0 4 تگ، TYPE_INDOM=5
4 8 برچسب زمانی، بخش ثانیه‌ها (از مبدأ یونیکس)
12 4 برچسب زمانی، بخش نانوثانیه‌ها
16 4 شماره دامنه نمونه
20 4 N: تعداد نمونه‌ها در دامنه، معمولاً >0
24 4 شماره نخستین نمونه
28 4 شماره دومین نمونه (در صورت وجود)
... ... ...
24+4*N 4 نخستین آفست در جدول رشته‌ها (به زیر نگاه کنید)
24+4*N+4 4 دومین آفست در جدول رشته‌ها (و غیره)
... ... ...
24+8*N M پایه جدول رشته‌ها، حاوی
نام‌های فشرده و پایان‌یافته با NULL نمونه‌ها

رکورد دامنه نمونه «دلتا» در نگارش ۳ از همان ساختار فیزیکی دامنه نمونه «کامل» بالا با تفاوت‌های زیر استفاده می‌کند:

  • تگ آن TYPE_INDOM_DELTA=6 است.
  • فیلد «تعداد نمونه‌ها در دامنه» به مجموع تعداد نمونه‌های اضافه‌شده و تعداد نمونه‌های حذف‌شده تبدیل می‌شود.
  • نمونه‌های حذف‌شده با قرار دادن آفست رشته روی -1 کدگذاری می‌شوند و هیچ ورودی متناظری در جدول رشته‌ها ندارند.
  • نمونه‌های اضافه‌شده دقیقاً به همان روش کدگذاری می‌شوند.

قالب دامنه نمونه «دلتا» برای ارائه یک کدگذاری فشرده‌تر روی دیسک برای دامنه‌های نمونه‌ای به کار می‌رود که تعداد زیادی نمونه دارند و دستخوش تغییرات کوچک و مکرر می‌شوند، مانند دامنه نمونه شناسه‌های فرآیند، آن‌گونه که توسط pmdaproc(1) صادر می‌شود.

برای رکوردهای دامنه نمونه «کامل»، دامنه نمونه جایگزین دامنه نمونه قبلی می‌شود: پس از این برچسب زمانی، رکوردهای قبلی برای پرس‌وجوهای فراداده دامنه نمونه جستجو نمی‌شوند.

هر دامنه نمونه در یک آرشیو نگارش ۳ باید یک رکورد دامنه نمونه «کامل» اولیه داشته باشد. رکوردهای بعدی برای همان دامنه نمونه می‌توانند گونه «کامل» یا «دلتا» باشند. فرض می‌شود هر نمونه‌ای که در مشاهده قبلی یک دامنه نمونه ذکر شده و در رکورد دامنه نمونه «دلتا» ذکر نشده است، برای مشاهده فعلی دامنه نمونه همچنان به حیات خود ادامه می‌دهد.

نمونه‌های این رکورد (pmLogLabelSet) مجموعه‌هایی از جفت‌های نام-برچسب:مقدار-برچسب مرتبط با برچسب‌های سیاق، دامنه‌های نمونه و معیارهای کارایی منفرد را فراهم می‌سازند - برای جزئیات بیشتر به pmLookupLabels(3) مراجعه کنید.

هر شناسه دامنه نمونه قبلاً در یک رکورد پیشین pmDesc ذکر شده است.

از آنجا که ممکن است برچسب‌های جدیدی در طول یک نشست آرشیو کردن ظاهر شوند، این رکوردها دارای برچسب زمانی هستند و باید هنگام رمزگشایی رکوردهای pmResult از حجم‌های داده آرشیو جستجو شوند. قالب pmLogLabelSet بین نگارش ۲ و نگارش ۳ تفاوت دارد؛ نگارش ۳ برچسب‌های زمانی بهبودیافته (کدگذاری ۶۴ بیتی بخش ثانیه‌ها و دقت در حد نانوثانیه) را ارائه می‌دهد.

Version 2
Offset Length Name
0 4 تگ، TYPE_LABEL_V2=3
4 4 برچسب زمانی، بخش ثانیه‌ها (از مبدأ یونیکس)
8 4 برچسب زمانی، بخش میکروثانیه‌ها
12 4 نوع برچسب (ماکروهای نوع PM_LABEL_*)
16 4 شناسه عددی - دامنه، PMID و غیره یا PM_IN_NULL=-1 برای برچسب‌های سیاق
20 4 N: تعداد مجموعه‌های برچسب در این رکورد، معمولاً ۱ مگر در مورد نمونه‌ها
24 4 آفست تا شروع رشته برچسب‌های JSONB
28 L1 نخستین ورودی آرایه labelset (به زیر نگاه کنید)
... ... ...
28+L1 LN N-اُمین ورودی آرایه labelset (به زیر نگاه کنید)
... ... ...
28+L1+...LN M رشته‌های متصل‌شده JSONB برای تمام مجموعه‌های برچسب
Version 3
Offset Length Name
0 4 تگ، TYPE_LABEL=7
4 8 برچسب زمانی، بخش ثانیه‌ها (از مبدأ یونیکس)
12 4 برچسب زمانی، بخش نانوثانیه‌ها
16 4 نوع برچسب (ماکروهای نوع PM_LABEL_*)
20 4 شناسه عددی - دامنه، PMID و غیره یا PM_IN_NULL=-1 برای برچسب‌های سیاق
24 4 N: تعداد مجموعه‌های برچسب در این رکورد، معمولاً ۱ مگر در مورد نمونه‌ها
28 4 آفست تا شروع رشته برچسب‌های JSONB
32 L1 نخستین ورودی آرایه labelset (به زیر نگاه کنید)
... ... ...
32+L1 LN N-اُمین ورودی آرایه labelset (به زیر نگاه کنید)
... ... ...
32+L1+...LN M رشته‌های متصل‌شده JSONB برای تمام مجموعه‌های برچسب

رکوردهای این فرم جایگزین برچسب‌های موجود برای یک نوع برچسب معین می‌شوند: پس از این برچسب زمانی، رکوردهای قبلی برای برطرف کردن آن دسته از برچسب‌ها در اندازه‌گیری‌ها جستجو نمی‌شوند.

ورودی‌های منفرد آرایه labelset بسته به تعداد برچسب‌های موجود در آن مجموعه، طول متغیری دارند. این ورودی‌ها حاوی شناسه‌های نمونه (در مورد برچسب‌های نوع PM_LABEL_INSTANCES)، طول‌ها و آفست‌های هر نام برچسب و مقدار آن، و همچنین هرگونه پرچم تنظیم‌شده برای هر برچسب هستند.

Offset Length Name
0 4 شناسه نمونه (یا ‎PM_IN_NULL=-1)
4 4 طول رشته برچسب JSONB
8 4 N: تعداد برچسب‌ها در این labelset
12 2 آفست نام نخستین برچسب
14 1 طول نام نخستین برچسب
15 1 پرچم‌های نخستین برچسب (مثلاً اختیاری بودن)
16 2 آفست مقدار نخستین برچسب
18 2 طول مقدار نخستین برچسب
20 2 آفست نام دومین برچسب (در صورت وجود)
... ... ...

این رکورد (pmLogText) متن راهنمای مرتبط با یک معیار یا یک دامنه نمونه را - به طوری که توسط pmLookupText(3) و pmLookupInDomText(3) ارائه می‌شود - ذخیره می‌کند.

شناسه معیار و شناسه دامنه نمونه قبلاً در یک رکورد پیشین pmDesc ذکر شده‌اند.

Offset Length Name
0 4 تگ، TYPE_TEXT=4
4 4 نوع متن و شناسه (ماکروهای PM_TEXT_*)
8 4 شناسه عددی - PMID یا دامنه نمونه
12 M رشته متن راهنما، متن دلخواه

پس از رکورد برچسب آرشیو، فایل نمایه زمانی حاوی گروهی از چندتایی‌ها (tuples) است که به سادگی به هم متصل شده و بدون قاب هستند؛ این چندتایی‌ها برچسب‌های زمانی را به آفست‌های بایتی در فایل‌های حجم و .meta مرتبط می‌کنند. این رکوردها دارای اندازه ثابت و قالب ثابت هستند و درون بسته‌بندی استاندارد «طول/بارداده/طول» محصور نشده‌اند: آن‌ها کل باقی‌مانده فایل .index را پس از رکورد برچسب آرشیو اشغال می‌کنند.

فایل نمایه زمانی راهکاری سریع برای پرش به یک نقطه زمانی خاص درون آرشیو، هم برای مقادیر معیارهای کارایی و هم فراداده‌های مربوطه، فراهم می‌کند.

همچنین libpcp/src/logutil.c را ببینید.

قالب نمایه میان نگارش ۲ و نگارش ۳ تفاوت دارد؛ نگارش ۳ برچسب‌های زمانی بهبودیافته (کدگذاری ۶۴ بیتی بخش ثانیه‌ها و دقت در حد نانوثانیه) و آفست‌های بایتی ۶۴ بیتی را ارائه می‌دهد.

Version 2
Offset Length Name
0 4 برچسب زمانی، بخش ثانیه‌ها (از مبدأ یونیکس)
4 4 برچسب زمانی، بخش میکروثانیه‌ها
8 4 شماره حجم آرشیو (0...N)
12 4 آفست بایتی در فایل .meta
16 4 آفست بایتی در فایل حجم آرشیو
Version 3
Offset Length Name
0 8 برچسب زمانی، بخش ثانیه‌ها (از مبدأ یونیکس)
8 4 برچسب زمانی، بخش نانوثانیه‌ها
12 4 شماره حجم آرشیو (0...N)
16 8 آفست بایتی در فایل .meta
24 8 آفست بایتی در فایل حجم آرشیو

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

چندین ابزار PCP آرشیوها را در مکان‌های استاندارد ایجاد می‌کنند:

$HOME/.pcp/pmlogger
مکان پیش‌فرض برای حالت ضبط نمودار تعاملی در pmchart(1)
$PCP_LOG_DIR/pmlogger
مکان پیش‌فرض برای اسکریپت‌های pmlogger_daily(1) و pmlogger_check(1)

mkaf(1)، PCPIntro(1)، pmafm(1)، pmchart(1)، pmdaproc(1)، pmlogdump(1)، pmlogger(1)، pmlogger_check(1)، pmlogger_daily(1)، pmlogreduce(1)، pmlogrewrite(1)، pmlogsummary(1)، LOGIMPORT(3)، PMAPI(3)، pmLookupDesc(3)، pmLookupInDom(3)، pmLookupInDomText(3)، pmLookupLabels(3)، pmLookupName(3)، pmLookupText(3)، pcp.conf(5) و pcp.env(5).

Performance Co-Pilot