IRQBALANCE(1) irqbalance IRQBALANCE(1)

irqbalance - توزیع و موازنه‌سازی وقفه‌های سخت‌افزاری میان پردازنده‌ها در سیستم‌های چندپردازنده‌ای

irqbalance

هدف از irqbalance توزیع و متعادل‌سازی وقفه‌های سخت‌افزاری میان پردازنده‌ها در یک سیستم چندپردازنده‌ای به‌منظور افزایش کارایی است.

باعث می‌شود irqbalance تنها یک‌بار اجرا شده و سپس دیمن خارج شود.
باعث چاپ اطلاعات اشکال‌زدایی بیشتر توسط irqbalance می‌شود. متضمن --foreground است.
باعث اجرای irqbalance در پیش‌زمینه می‌شود (بدون --debug).
خروجی گزارش‌ها (لاگ) را بهینه‌سازی‌شده برای systemd-journal فعال می‌کند.
تعیین آستانه‌ای که در آن تلاش می‌شود یک پردازنده (CPU) به حالت ذخیره انرژی (powersave) منتقل شود. اگر بیشتر از <آستانه> پردازنده بیش از ۱ انحراف معیار پایین‌تر از میانگین بار کاری softirq پردازنده‌ها باشند، و هیچ پردازنده‌ای بیش از ۱ انحراف معیار بالاتر نباشد (و بیش از ۱ وقفه به آن‌ها اختصاص داده شده باشد)، تلاش می‌شود ۱ پردازنده در حالت ذخیره انرژی قرار گیرد. در حالت ذخیره انرژی، هیچ وقفه‌ای به آن پردازنده هدایت نمی‌شود تا از بیدار شدن غیرضروری آن پردازنده جلوگیری شود.
افزودن وقفه (IRQ) مشخص‌شده به مجموعه وقفه‌های ممنوعه. irqbalance بر وابستگی (affinity) وقفه‌های موجود در فهرست ممنوعه تاثیری نخواهد گذاشت و امکان تنظیم دستی آن‌ها را فراهم می‌کند. این گزینه افزایشی است و می‌تواند چندین بار مشخص شود. برای نمونه جهت جلوگیری از موازنه‌سازی وقفه‌های ۴۳ و ۴۴، از دستور زیر استفاده کنید:

irqbalance --banirq=43 --banirq=44

افزودن ماژول مشخص‌شده به مجموعه ماژول‌های ممنوعه، مشابه --banirq. برنامه irqbalance بر وابستگی هیچ‌یک از وقفه‌های ماژول‌های داده‌شده تاثیری نخواهد گذاشت و امکان تنظیم دستی آن‌ها را فراهم می‌کند. این گزینه افزایشی است و می‌تواند چندین بار تکرار شود. برای نمونه جهت منع موازنه‌سازی تمامی وقفه‌های ماژول foo و ماژول bar، از دستور زیر استفاده کنید:

irqbalance --banmod=foo --banmod=bar

به کاربر اجازه می‌دهد سطح کَشی (cache level) را که irqbalance دامنه‌های کَش را در آن تفکیک می‌کند مشخص سازد. تعیین کَش عمیق‌تر ممکن است انعطاف‌پذیری بیشتری به irqbalance برای تخصیص وابستگی IRQ جهت دستیابی به افزایش کارایی بدهد، اما تنظیم عمق کَش بیش از حد بزرگ در برخی سیستم‌ها (به‌ویژه جایی که تمام پردازنده‌ها عمیق‌ترین سطح کَش را به اشتراک می‌گذارند)، باعث می‌شود irqbalance موازنه‌سازی را غیرضروری بداند.

irqbalance --deepestcache=2

مقدار پیش‌فرض برای deepestcache عدد ۲ است.

در صورت مشخص شدن، اسکریپت یا دایرکتوری ارجاع‌داده‌شده برای هر وقفه شناسایی‌شده یک بار اجرا می‌شود و مسیر دستگاه در sysfs و شماره وقفه به عنوان آرگومان به آن ارسال می‌گردد. توجه داشته باشید که آرگومان مسیر دستگاه به دایرکتوری والد اشاره خواهد کرد که دایرکتوری ویژگی‌های IRQ را می‌توان مستقیماً از آن باز کرد. اسکریپت‌های خط‌مشی مشخص‌شده باید متعلق به کاربر فرایند irqbalance بوده و قابل اجرا باشند؛ در صورت مشخص کردن یک دایرکتوری، فایل‌های غیرقابل اجرا نادیده گرفته می‌شوند. اسکریپت ممکن است صفر یا چند جفت کلید=مقدار (key=value) مشخص کند که irqbalance را در مدیریت آن وقفه راهنمایی می‌کند. جفت‌های کلید=مقدار توسط اسکریپت روی خروجی استاندارد (stdout) چاپ می‌شوند و توسط irqbalance دریافت و تفسیر خواهند شد. برنامه irqbalance انتظار کد خروج صفر را از ابزار ارائه‌شده دارد. جفت‌های کلید=مقدار شناخته‌شده عبارتند از:
به irqbalance دستور می‌دهد تا وقفه ارسال‌شده را از موازنه‌سازی مستثنی کند.
به کاربر اجازه می‌دهد سطح موازنه‌سازی یک وقفه معین را بازنویسی کند. به‌طور پیش‌فرض، سطح موازنه به‌صورت خودکار بر اساس کلاس دستگاه pci مالک وقفه تعیین می‌شود.
به کاربر اجازه می‌دهد گره NUMA را که sysfs نشان می‌دهد وقفه دستگاه معین به آن محلی است، بازنویسی کند. اغلب سیستم‌ها این اطلاعات را در ACPI مشخص نمی‌کنند و در نتیجه دستگاه‌ها از تمامی گره‌های NUMA در یک سیستم با فاصله یکسان در نظر گرفته می‌شوند. این گزینه امکان بازنویسی اطلاعات ارائه‌شده توسط سخت‌افزار را فراهم می‌کند تا irqbalance بتواند وابستگی وقفه را برای این دستگاه‌ها به سمت نزدیک‌ترین گره محلی متمایل کند. توجه داشته باشید که مشخص کردن مقدار -1 در اینجا irqbalance را وادار می‌کند وقفه دستگاه را دارای فاصله یکسان از تمامی گره‌ها در نظر بگیرد.

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

0
نشان می‌دهد که اسکریپت دارای خط‌مشی برای وقفه ارجاع‌شده است و پردازش اسکریپت‌های بعدی باید متوقف شود.
1
نشان می‌دهد که اسکریپت هیچ خط‌مشی‌ای برای وقفه ارجاع‌شده ندارد و پردازش اسکریپت‌ها باید ادامه یابد.
2
نشان می‌دهد که خطایی در اسکریپت رخ داده است و باید نادیده گرفته شود (پردازش سایر اسکریپت‌ها ادامه یابد).
تعیین حداقل نسبت مهاجرت برای تحریک و آغاز موازنه‌سازی مجدد. به‌طور معمول هرگونه بهبود در توزیع بار، مهاجرت یک وقفه را تحریک می‌کند، به شرطی که انجام مهاجرت صرفاً بار را به یک پردازنده جدید منتقل نکند. با مشخص کردن مقدار مهاجرت، بهبود تعادل بار مشمول پسماند (hysteresis) تعریف‌شده توسط این مقدار می‌شود که با آن نسبت معکوس دارد. برای نمونه، مقدار ۲ در این گزینه به irqbalance می‌گوید که بهبود در توزیع بار باید حداقل ۵۰٪ باشد؛ مقدار ۴ نشان می‌دهد که بهبود توزیع بار باید حداقل ۲۵٪ باشد، و به همین ترتیب.
تنظیم irqbalance برای نوشتن شناسه فرایند (PID) خود در فایل مشخص‌شده. به‌طور پیش‌فرض هیچ فایل شناسه فرایندی (pidfile) نوشته نمی‌شود. فایل نوشته‌شده هنگام خروج irqbalance به‌طور خودکار حذف می‌شود. این گزینه در صورت استفاده همزمان با --debug یا --foreground نادیده گرفته می‌شود.
تنظیم زمان اندازه‌گیری برای irqbalance. برنامه irqbalance به مدت <زمان> ثانیه میان نمونه‌برداری از بار وقفه‌ها روی پردازنده‌های سیستم به خواب می‌رود. مقدار پیش‌فرض ۱۰ ثانیه است.

مشابه --oneshot.
مشابه --debug.
یک ماسک بیتی از پردازنده‌هایی که irqbalance باید نادیده بگیرد و هرگز وقفه‌ای به آن‌ها اختصاص ندهد فراهم می‌کند. در صورت عدم تعیین، irqbalance به‌طور پیش‌فرض از ماسک پردازنده‌های ایزوله‌شده (isolated) و تیک تطبیقی (adaptive-ticks) روی سیستم استفاده می‌کند. پارامتر بوت "isolcpus=" پردازنده‌های ایزوله را مشخص می‌کند. پارامتر بوت "nohz_full=" پردازنده‌های با تیک تطبیقی را مشخص می‌نماید. به‌طور پیش‌فرض، هیچ پردازنده‌ای ایزوله یا دارای تیک تطبیقی نیست. این مقدار یک ماسک هگزادسیمال بدون پیشوند '0x' است. در سیستم‌هایی با تعداد پردازنده‌های بالا، هر گروه از هشت رقم هگزادسیمال با یک کاما ',' جدا می‌شود. برای نمونه export IRQBALANCE_BANNED_CPUS=fc0 از تخصیص وقفه‌ها توسط irqbalance به پردازنده‌های هفتم تا دوازدهم (cpu6-cpu11) جلوگیری می‌کند، یا export IRQBALANCE_BANNED_CPUS=ff000000,00000001 از تخصیص وقفه‌ها به پردازنده اول (cpu0) و پردازنده‌های ۵۷ تا ۶۴ (cpu56-cpu63) جلوگیری خواهد کرد. نکته: این متغیر محیطی در آینده کنار گذاشته خواهد شد؛ لطفاً به جای آن از IRQBALANCE_BANNED_CPULIST استفاده کنید. پیش از حذف این متغیر محیطی، یک دوره منسوخ‌سازی به منظور حفظ سازگاری در نظر گرفته شده است.
فهرستی از پردازنده‌ها (cpulist) را ارائه می‌دهد که irqbalance باید نادیده بگیرد و هرگز وقفه‌ای به آن‌ها اختصاص ندهد. در صورت عدم تعیین، irqbalance به‌طور پیش‌فرض از ماسک پردازنده‌های ایزوله و دارای تیک تطبیقی در سیستم استفاده می‌کند.

اسکن مجدد اجباری وقفه‌های موجود و توپولوژی سیستم را اعمال می‌کند.

برنامه irqbalance قادر است از طریق سوکت ارتباط برقرار کرده و درخت تخصیص فعلی و تنظیمات خود را برگرداند، و همچنین تنظیمات جدیدی را بر اساس مقادیر ارسالی اعمال کند. این سوکت انتزاعی (abstract) است و نامی به فرمت irqbalance<PID>.sock دارد که در آن <PID> شناسه فرایند نمونه در حال اجرای irqbalance برای برقراری ارتباط است. مقادیر قابل ارسال عبارتند از:

دریافت بازگشتی درخت تخصیص وقفه‌ها به پردازنده‌ها. برای هر گره پردازنده در درخت، نوع، شماره، بار کاری و فعال بودن یا نبودن حالت ذخیره انرژی ارسال می‌شود. برای هر نوع وقفه تخصیص‌یافته، شماره، بار، تعداد وقفه‌ها از زمان آخرین موازنه‌سازی مجدد و کلاس آن ارسال می‌گردد. برای توضیحات تعاریف به فایل types.h مراجعه کنید.
دریافت مقدار فعلی بازه خواب، ماسک پردازنده‌های ممنوعه و فهرست وقفه‌های ممنوعه.
تنظیم مقدار جدید برای بازه خواب، با شرط <s> >= 1.
منع پردازنده‌های فهرست‌شده از رسیدگی به وقفه‌ها؛ تمامی مقادیر قبلی پردازنده‌های ممنوعه فراموش می‌شوند.
منع وقفه‌های فهرست‌شده از موازنه‌سازی؛ تمامی مقادیر قبلی وقفه‌های ممنوعه فراموش می‌شوند.

برنامه irqbalance اعتبارنامه SCM_CREDENTIALS فرستنده را بررسی می‌کند (تنها کاربر ریشه/root مجاز به تعامل است). بسته به ابزارهای انتخابی، پیام کمکی همراه با اعتبارنامه باید همراه با درخواست ارسال شود.

https://github.com/Irqbalance/irqbalance

Dec 2006 Linux