HWLATDETECT(8) System Manager's Manual HWLATDETECT(8)
# SPDX-License-Identifier: GPL-2.0-only

hwlatdetect - برنامه‌ای برای کنترل بخش تشخیص تأخیر سخت‌افزاری در ftrace هسته

hwlatdetect [ --duration=<time> ] [--threshold=<usecs> ] [--window=<time interval>; ] [--width=<time interval>; ] [--hardlimit=<microsecond value>; ] [--report=<path> ] [--debug ] [--quiet ] [--watch]

برنامه hwlatdetect آشکارساز تأخیر سخت‌افزاری هسته در ftrace (hwlatdetector) را کنترل می‌کند. hwlatdetector برای تشخیص تأخیرهای بزرگ سیستمی ناشی از رفتار سخت‌افزار یا سفت‌افزار (فریم‌ور) زیرین، مستقل از خود لینوکس، استفاده می‌شود. این کد در ابتدا برای تشخیص وقفه‌های مدیریت سیستم (SMI یا System Management Interrupts) روی سیستم‌های x86 توسعه یافته بود، هرچند هیچ ویژگی خاص و منحصر به x86 در آن وجود ندارد. این ابزار در ابتدا برای استفاده در مجموعه وصله‌های «RT» نوشته شد زیرا هسته بی‌درنگ (Real Time) به تأخیر حساسیت بالایی دارد.

وقفه‌های SMI معمولاً توسط هسته لینوکس مدیریت نمی‌شوند و لینوکس معمولاً حتی از وقوع آن‌ها آگاه نمی‌شود. وقفه‌های SMI در عوض توسط کد BIOS تنظیم و اجرا می‌شوند، که معمولاً برای رویدادهای «بحرانی» نظیر مدیریت حسگرهای حرارتی و فن‌ها به کار می‌روند. با این حال گاهی اوقات وقفه‌های SMI برای وظایف دیگر استفاده می‌شوند و این وظایف می‌توانند زمان بسیار زیادی را در روتین وقفه سپری کنند (گاهی در مقیاس میلی‌ثانیه). بدیهی است اگر در تلاش برای پایین نگه‌داشتن تأخیر پاسخ‌دهی رویدادها در محدوده میکروثانیه باشید، این موضوع یک مشکل اساسی است.

آشکارساز تأخیر سخت‌افزاری ftrace از طریق در اختیار گرفتن کامل تمام پردازنده‌ها (CPUها) برای مدت‌زمان‌های قابل‌پیکربندی (با فراخوانی ()stop_machine)، پایش شمارنده برچسب زمانی پردازنده (TSC یا Time Stamp Counter) برای یک بازه زمانی مشخص، و سپس جستجوی شکاف‌ها در داده‌های TSC عمل می‌کند. هرگونه شکاف نشان‌دهنده زمانی است که فرآیند پایش متوقف شده است، و از آنجا که پردازنده‌ها متوقف شده و وقفه‌ها غیرفعال هستند، تنها عاملی که می‌تواند باعث چنین وقفه‌ای شود یک SMI است.

اسکریپت hwlatdetector عملیات مانت و آن‌مانت کردن debugfs و همچنین تعامل با hwlatdetector در ftrace را مدیریت می‌کند. اگر debugfs از پیش مانت شده باشد، hwlatdetector پس از اجرا آن را آن‌مانت نخواهد کرد.

اجرای منطق آشکارساز برای مدت‌زمان مشخص‌شده. مدت‌زمان یک عدد صحیح در مبنای ۱۰ است که به‌طور پیش‌فرض بر حسب ثانیه در نظر گرفته می‌شود. پسوندهای اختیاری می‌توانند برای تعیین دقیقه، ساعت یا روز مشخص شوند.
تعیین شکاف TSC مورد استفاده برای تشخیص SMI. هر مقدار شکاف بزرگ‌تر از <threshold> به‌عنوان نتیجه وقوع یک SMI تلقی می‌شود.
در صورت رخ دادن مقداری بیش از hardlimit، آزمون ناموفق در نظر گرفته می‌شود. این موضوع بر کد وضعیت خروجی hwlatdetect تأثیر می‌گذارد.
تعیین اندازه پنجره نمونه‌برداری. این مقدار هنگام ارسال به هسته به میکروثانیه تبدیل می‌شود.
میزان زمان در پنجره نمونه‌برداری که در آن آشکارساز عملاً نمونه‌برداری می‌کند. این مقدار باید کمتر از مقدار --window باشد.
تعیین نام فایل خروجی برای گزارش آشکارساز. رفتار پیش‌فرض چاپ در خروجی استاندارد است.
تعیین پردازنده‌هایی که رشته برنامه hwlat باید در میان آن‌ها جابه‌جا شود.
فعال کردن پیام‌های اشکال‌زدایی.
غیرفعال کردن تمام پیام‌های اطلاع‌رسانی.
چاپ داده‌های نمونه در خروجی استاندارد هم‌زمان با دریافت آن‌ها.

hwlatdetect توسط Clark Williams <williams@redhat.com> نوشته شده است.
hwlat_detector.ko توسط Jon Masters <jcm@redhat.com> نوشته شده است.

May 12, 2009