TRACE-CMD.DAT.V(5) راهنمای libtracefs TRACE-CMD.DAT.V(5)

trace-cmd.dat.v6 - قالب فایل نسخه ۶ ابزار trace-cmd

trace-cmd.dat ignore

ابزار trace-cmd(1) یک فایل «trace.dat» تولید می‌کند. این فایل بسته به اینکه کاربر نام خروجی متفاوتی را مشخص کند می‌تواند هر نام دیگری نیز داشته باشد، اما باید دارای قالب باینری مشخصی باشد. این فایل توسط trace-cmd برای ذخیره ردگیری‌های هسته در آن و امکان استخراج ردگیری در زمانی دیگر مورد استفاده قرار می‌گیرد (نگاه کنید به trace-cmd-report(1)).

سه بایت نخست شامل مقدار جادویی زیر هستند:
0x17 0x08  0x44
۷ بایت بعدی شامل نویسه‌های زیر هستند:
"tracing"
مجموعه بعدی نویسه‌ها شامل یک رشته پایان‌یافته با تهی ('\0')
است که نسخه فایل را در بر دارد:
"6\0"
۱ بایت بعدی شامل پرچم‌های ترتیب بایت (endianness) فایل است:
0 = little endian
1 = big endian
بایت بعدی شامل تعداد بایت‌ها برای هر مقدار "long" است:
4 - 32-bit long values
8 - 64-bit long values
نکته: این اندازه نوع long در فضای کاربری سیستم هدف است، نه
اندازه در فضای هسته.
[ اکنون تمام اعداد بر اساس ترتیب بایت تعریف‌شده در فایل نوشته می‌شوند. ]
۴ بایت بعدی یک کلمه ۳۲ بیتی هستند که اندازه صفحه حافظه
ماشین هدف ردیابی‌شده را تعیین می‌کنند.

بلافاصله پس از قالب اولیه، اطلاعات مربوط به سرآیندهای ردگیری
ثبت‌شده از سیستم هدف قرار می‌گیرد.
۱۲ بایت بعدی شامل رشته زیر است:
"header_page\0"
۸ بایت بعدی یک کلمه ۶۴ بیتی شامل اندازه اطلاعات سرآیند
صفحه است که در ادامه ذخیره شده است.
مجموعه داده بعدی به اندازه خوانده‌شده از ۸ بایت قبلی است
و شامل داده‌های بازیابی‌شده از debugfs/tracing/events/header_page می‌باشد.
نکته: اندازه فیلد دوم \fBcommit\fR شامل اندازه نوع long در هسته
هدف است. به عنوان مثال:
field: local_t commit;        offset:8;       \fBsize:8;\fR   signed:1;
نشان می‌دهد که هسته دارای مقادیر ۶۴ بیتی برای long است.
۱۳ بایت بعدی شامل رشته زیر است:
"header_event\0"
۸ بایت بعدی یک کلمه ۶۴ بیتی شامل اندازه اطلاعات سرآیند
رویداد است که در ادامه ذخیره شده است.
مجموعه داده بعدی به اندازه خوانده‌شده از ۸ بایت قبلی است
و شامل داده‌های بازیابی‌شده از debugfs/tracing/events/header_event می‌باشد.
این داده‌ها به ابزار trace-cmd امکان می‌دهند تشخیص دهد آیا
قالب بافر حلقه‌ای (ring buffer) هسته تغییری کرده است یا خیر.

بلافاصله پس از اطلاعات سرآیند، اطلاعات مربوط به رویدادهای
خاص Ftrace قرار می‌گیرد. این‌ها رویدادهایی هستند که توسط پلاگین‌های
Ftrace استفاده می‌شوند و از طریق ردیابی رویداد فعال نمی‌گردند.
۴ بایت بعدی شامل یک کلمه ۳۲ بیتی از تعداد فایل‌های قالب رویداد
Ftrace است که در فایل ذخیره شده‌اند.
به تعداد دفعاتی که توسط ۴ بایت قبلی تعیین شده، موارد زیر
تکرار می‌شود:
۸ بایت برای اندازه فایل قالب رویداد Ftrace.
فایل قالب رویداد Ftrace کپی‌شده از ماشین هدف:
debugfs/tracing/events/ftrace/<event>/format

بلافاصله پس از قالب‌های Ftrace، اطلاعات مربوط به چیدمان
رویداد قرار می‌گیرد.
۴ بایت بعدی یک کلمه ۳۲ بیتی شامل تعداد سیستم‌های رویدادی (event systems)
است که در فایل ذخیره شده‌اند. این‌ها دایرکتوری‌های موجود در
debugfs/tracing/events به استثنای دایرکتوری \fBftrace\fR هستند.
به تعداد دفعاتی که توسط ۴ بایت قبلی مشخص شده است، موارد
زیر وجود دارد:
یک رشته پایان‌یافته با null شامل نام سیستم.
۴ بایت شامل یک کلمه ۳۲ بیتی که تعداد رویدادهای موجود
درون آن سیستم را مشخص می‌کند.
به تعداد دفعاتی که در ۴ بایت قبلی تعیین شده است، موارد
زیر وجود دارد:
۸ بایت برای اندازه فایل قالب رویداد.
فایل قالب رویداد کپی‌شده از ماشین هدف:
debugfs/tracing/events/<system>/<event>/format

بلافاصله پس از قالب‌های رویداد، اطلاعات نگاشت آدرس‌های
توابع به نام توابع قرار می‌گیرد.
۴ بایت بعدی یک کلمه ۳۲ بیتی شامل اندازه داده‌های حاوی
نگاشت توابع است.
مجموعه داده بعدی به اندازه مشخص‌شده توسط ۴ بایت قبلی است
و شامل اطلاعات حاصل از فایل زیر در ماشین هدف می‌باشد:
/proc/kallsyms

اگر توسعه‌دهنده‌ای از ()trace_printk در هسته استفاده کرده باشد،
ممکن است رشته قالب در خارج از بافر حلقه‌ای ذخیره شود.
این اطلاعات را می‌توان در این مسیر یافت:
debugfs/tracing/printk_formats
۴ بایت بعدی یک کلمه ۳۲ بیتی شامل اندازه داده‌های حاوی
قالب‌های printk است.
مجموعه داده بعدی به اندازه مشخص‌شده توسط ۴ بایت قبلی است
و شامل اطلاعات استخراج‌شده از debugfs/tracing/printk_formats می‌باشد.

بلافاصله پس از قالب‌های trace_printk، اطلاعات نگاشت
شناسه فرآیند (PID) به نام فرآیند قرار می‌گیرد.
۸ بایت بعدی شامل یک کلمه ۶۴ بیتی است که اندازه داده‌های
نگاشت PID به نام فرآیند را در خود نگه می‌دارد.
مجموعه داده بعدی به اندازه مشخص‌شده توسط ۸ بایت قبلی است
و شامل اطلاعات استخراج‌شده از debugfs/tracing/saved_cmdlines می‌باشد.

بلافاصله پس از اطلاعات فرآیند، بخش پایانی سرآیند فایل
trace.dat قرار می‌گیرد.
۴ بایت بعدی یک کلمه ۳۲ بیتی است که تعداد پردازنده‌های (CPU)
شناسایی‌شده روی ماشین هدف را مشخص می‌کند (و دارای داده‌های ردگیری
منطبق برای آن است).
۱۰ بایت بعدی یکی از موارد زیر است:
"options  \0"
"latency  \0"
"flyrecord\0"
اگر مقدار آن "options  \0" باشد، آنگاه:
۲ بایت بعدی یک کلمه ۱۶ بیتی است که گزینه فعلی را تعیین می‌کند.
اگر این مقدار صفر باشد، دیگر گزینه‌ای وجود ندارد.
در غیر این صورت، ۴ بایت بعدی شامل یک کلمه ۳۲ بیتی است که
اندازه گزینه را مشخص می‌کند. اگر برنامه خواننده نداند چگونه با این
گزینه کار کند، می‌تواند به سادگی از آن رد شود. در حال حاضر هیچ گزینه‌ای
تعریف نشده است، اما این بخش برای گسترش داده‌ها در اینجا قرار دارد.
گزینه بعدی بلافاصله پس از گزینه قبلی خواهد بود، و
گزینه‌ها با مقدار صفر در فیلد نوع گزینه به پایان می‌رسند.
۱۰ بایت بعدی پس از گزینه‌ها، یکی از موارد زیر است:
"latency  \0"
"flyrecord\0"
که دقیقاً مانند وضعیتی ادامه می‌یابد که انگار گزینه‌ای وجود نداشته است.
اگر مقدار "latency  \0" باشد، آنگاه بقیه فایل صرفاً متنی اسکی (ASCII)
است که از این مسیر ماشین هدف گرفته شده است:
debugfs/tracing/trace
اگر مقدار "flyrecord\0" باشد، موارد زیر وجود دارند:
به تعداد پردازنده‌هایی که پیش‌تر خوانده شده‌اند، موارد زیر وجود دارد:
۸ بایت که یک کلمه ۶۴ بیتی هستند و آفست (offset) درون فایل را
که داده‌های مربوط به آن CPU را نگه می‌دارد، مشخص می‌کنند.
۸ بایت که یک کلمه ۶۴ بیتی هستند و اندازه داده‌های CPU را
در آن آفست مشخص می‌کنند.

داده‌های پردازنده (CPU) در بخشی از فایل قرار دارند که در انتهای
سرآیند مشخص شده است. لایه فاصله‌گذاری (padding) بین سرآیند و
داده‌های CPU قرار داده می‌شود تا داده‌های CPU در موقعیتی هم‌تراز با صفحه (صفحه هدف)
در فایل قرار گیرند.
این داده‌ها مستقیماً از بافر حلقه‌ای Ftrace کپی می‌شوند و دارای همان
قالبی هستند که توسط فایل‌های سرآیند رویداد بارگذاری‌شده در فایل قالب
سرآیند تعیین شده است.
ابزار trace-cmd در صورت امکان تلاش خواهد کرد داده‌ها را صفحه به صفحه با
اندازه صفحه هدف \fBmmap(2)\fR کند. در صورت عدم موفقیت در نگاشت حافظه (mmap)، به جای آن
داده‌ها را به صورت معمولی خواهد خواند.

trace-cmd(1), trace-cmd-record(1), trace-cmd-report(1), trace-cmd-start(1), trace-cmd-stop(1), trace-cmd-extract(1), trace-cmd-reset(1), trace-cmd-split(1), trace-cmd-list(1), trace-cmd-listen(1), trace-cmd.dat(5)

نوشته‌شده توسط Steven Rostedt، <rostedt@goodmis.org[1]>

https://git.kernel.org/pub/scm/utils/trace-cmd/trace-cmd.git

حق نشر (C) 2010 شرکت Red Hat, Inc. استفاده آزاد از این نرم‌افزار تحت شرایط پروانه عمومی همگانی گنو (GPL) مجاز است.

1.
rostedt@goodmis.org
mailto:rostedt@goodmis.org
03/09/2026 libtracefs