SYSTEMD-BOOTCHART(1) systemd-bootchart SYSTEMD-BOOTCHART(1)

systemd-bootchart - ابزار رسم نمودار کارایی راه‌اندازی سیستم

systemd-bootchart ابزاری است که معمولاً هنگام راه‌اندازی سیستم اجرا می‌شود و بار پردازنده (CPU)، بار دیسک، مصرف حافظه و همچنین اطلاعات مربوط به هر فرآیند را از یک سیستم در حال اجرا جمع‌آوری می‌کند. نتایج جمع‌آوری‌شده به‌صورت یک نمودار SVG خروجی داده می‌شوند. به‌طور معمول، systemd-bootchart توسط هسته با ارسال init=/usr/lib/systemd/systemd-bootchart در خط فرمان هسته فراخوانی می‌شود و افزودن initcall_debug برای جمع‌آوری داده‌ها روی ریسه‌های init هسته صورت می‌گیرد. سپس systemd-bootchart فرآیند واقعی init را فورک کرده تا راه‌اندازی عادی سیستم ادامه یابد، در حالی که در پس‌زمینه اطلاعات راه‌اندازی را پایش و ثبت می‌کند.

پس از جمع‌آوری مقدار مشخصی از داده‌ها (معمولاً ۱۵-۳۰ ثانیه، پیش‌فرض ۲۰ ثانیه)، فرآیند ثبت متوقف شده و نموداری از اطلاعات ثبت‌شده تولید می‌شود. این نمودار حاوی سرنخ‌های حیاتی درباره این است که کدام منابع، با چه ترتیبی در حال استفاده هستند و مشکلات احتمالی در توالی راه‌اندازی سیستم در کجا قرار دارند. این در اصل نسخه‌ای با جزئیات بیشتر از تابع systemd-analyze plot است.

البته، bootchart می‌تواند در هر لحظه‌ای برای جمع‌آوری و رسم داده‌ها برای مدت‌زمانی مشخص استفاده شود. توصیه می‌شود در این حالت از گزینه --rel استفاده شود.

ابزار bootchart نیازی به مجوزهای ریشه (root) ندارد و به‌راحتی به عنوان یک کاربر عادی اجرا می‌شود.

نمودارهای bootchart به‌طور پیش‌فرض با برچسب زمانی در مسیر /run/log نوشته شده و در ژورنال با شناسه MESSAGE_ID=9f26aa562cf440c2b16c773d0479b518 ذخیره می‌شوند. فیلد ژورنال BOOTCHART= شامل نمودار bootchart در قالب SVG است.

systemd-bootchart می‌تواند به چند روش مختلف فراخوانی شود:

فراخوانی توسط هسته (Kernel invocation)

هسته می‌تواند systemd-bootchart را به جای فرآیند init فراخوانی کند. در مقابل، systemd-bootchart فایل /usr/lib/systemd/systemd را فراخوانی خواهد کرد. داده‌ها روی ریسه‌های init هسته و همچنین فرآیندها، از جمله سرویس‌های آغازشده توسط systemd جمع‌آوری خواهند شد.

واحد systemd (واحد خدماتی)

یک فایل واحد ارائه شده است: systemd-bootchart.service. در صورت فعال بودن هنگام شروع سیستم، داده‌های مربوط به فرآیندها از جمله سرویس‌های آغازشده توسط systemd جمع‌آوری خواهد شد.

اجرا به‌صورت برنامه‌ای مستقل (Standalone)

می‌توان systemd-bootchart را به عنوان یک برنامه عادی از خط فرمان اجرا کرد. در این حالت اکیداً توصیه می‌شود گزینه -r ارسال شود تا زمان سپری‌شده از راه‌اندازی و پیش از شروع systemd-bootchart در نمودار رسم نشود، زیرا ممکن است به تولید نمودارهای بسیار بزرگ منجر شود. زمان سپری‌شده از راه‌اندازی ممکن است شامل هر زمانی که سیستم معلق (suspended) بوده نیز باشد.

این گزینه‌ها را می‌توان در فایل /etc/systemd/bootchart.conf نیز تنظیم کرد. ببینید: bootchart.conf(5).

-h, --help

نمایش یک متن راهنمای کوتاه و خروج.

-n, --sample N

تعیین تعداد نمونه‌ها، N، برای ثبت. نمونه‌ها در فواصل زمانی مشخص‌شده با --freq ثبت خواهند شد.

-f, --freq f

تعیین بسامد (فرکانس) ثبت نمونه، یک عدد حقیقی مثبت f، بر حسب هرتز (Hz). بیشتر سیستم‌ها می‌توانند مقادیری تا ۲۵-۵۰ را بدون ایجاد سربار بیش از حد مدیریت کنند.

-r, --rel

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

-F, --no-filter

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

-C, --cmdline

نمایش خط فرمان کامل همراه با آرگومان‌های فرآیندها، به جای نمایش صرف نام فرآیند.

-g, --control-group

نمایش گروه کنترل (cgroup) فرآیند.

-o, --output path

مشخص کردن دایرکتوری خروجی برای نمودارها. به‌طور پیش‌فرض، bootchart نمودارها را در /run/log می‌نویسد.

-i, --init path

استفاده از این باینری init. پیش‌فرض: /usr/lib/systemd/systemd.

-p, --pss

فعال‌سازی ثبت و رسم نمودار میزان مصرف حافظه PSS (اندازه مجموع متناسب) فرآیندها. برای توضیحات این فیلد، به filesystems/proc.txt در مستندات هسته مراجعه کنید.

-e, --entropy

فعال‌سازی ثبت و رسم اندازه مخزن آنتروپی تصادفی هسته.

-x, --scale-x N

ضریب مقیاس‌بندی افقی برای تمام اجزای متغیر نمودار.

-y, --scale-y N

ضریب مقیاس‌بندی عمودی برای تمام اجزای متغیر نمودار.

systemd-bootchart نمودارهای SVG تولید می‌کند. برای نمایش آن‌ها در یک صفحه گرافیکی، می‌توان از هر نمایش‌دهنده با قابلیت پشتیبانی از SVG استفاده کرد. شایان ذکر است که موتورهای رندر SVG در بیشتر مرورگرها (از جمله کروم و فایرفاکس) چندین برابر سریع‌تر از برنامه‌های اختصاصی گرافیکی مانند Gimp و Inkscape هستند. کافی است مرورگر خود را به نشانی زیر هدایت کنید: file:///run/log/!

این نسخه از bootchart از پایه پیاده‌سازی شده است، اما از نگارش‌های قبلی bootchart الهام گرفته شده است:

نسخه اصلی بش (Original bash)

کد اصلی bash/shell که bootchart را پیاده‌سازی می‌کرد. این نسخه یک تاربال فشرده برای پردازش توسط برنامه‌های خارجی ایجاد می‌کرد. این نسخه هیچ نموداری رسم نمی‌کرد و تنها داده تولید می‌کرد.

پیاده‌سازی C در اوبونتو (Ubuntu C Implementation)

این نسخه جایگزین نسخه شل شد و یک ثبت‌کننده داده سریع و کارآمد بود، اما آن هم داده‌ها را رسم نمی‌کرد.

بوت‌چارت جاوا (Java bootchart)

این برنامه رسم نمودار اصلی برای ترسیم داده‌ها بود که به زبان جاوا نوشته شده بود.

pybootchartgui.py

برنامه pybootchart از داده‌های جمع‌آوری‌شده توسط هر دو نسخه bash یا C نمودار ایجاد می‌کرد.

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

bootchart.conf(5)

برنامه systemd-bootchart اطلاعات مدل دیسک سخت را دریافت نمی‌کند مگر اینکه دستگاه ریشه با root=/dev/sdxY مشخص شده باشد. استفاده از UUID یا PARTUUID سیستم را به‌درستی بوت می‌کند، اما مدل دیسک سخت به نمودار اضافه نخواهد شد.

برای گزارش اشکالات، لطفاً با نویسنده و نگه‌دارنده فعلی تماس بگیرید:

Auke Kok <auke-jan.h.kok@intel.com>
systemd 235