انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => راهنماها، نکات و ترفندها => نویسنده: فاراب در 12 امرداد 1388، 05:55 ب‌ظ

عنوان: چگونگی تغییر اولویت پروسه‌ها در لینوکس
ارسال شده توسط: فاراب در 12 امرداد 1388، 05:55 ب‌ظ
بصورت پیشفرض لینوکس بسیاری از پروسه‌ها را در هنگام اجرا با اولویت «0» در نظر میگیرد که به معنای بالاترین اولویت اجرا میباشد. به عنوان یک قانون، همواره عدد کوچکتر بیانگر اولویت بالاتر است. اگر در حال اجرای برنامه‌ای هستید که در به اختیار گرفتن منبع دچار گرسنگی است، آنگاه این مکانیزم اولویت بندی، معنا پیدا میکند. در بسیاری از موارد شما مجبورید به توزیع لینوکس خود بفهمانید که چه پروسه‌ای با چه اولویتی اجرا شود تا تخصیص منابع با نیاز آن برنامه هماهنگ شود.
در اوبونتو برای این منظور دو راه گرافیکی و خط‌فرمانی در نظر گرفته شده است:

۱- استفاده از System Monitor

(http://i25.tinypic.com/ay8xkw.jpg)

به مسیر System > Administration > System Monitor بروید و در زبانه‌ی "Processes" بر روی هر پروسه‌ای که قصد تعویض اولویت آنرا دارید، راست کلیک کرده و اولویت مورد نظرتمان را با انتخاب "Change priority" اعمال کنید. دقت داشته باشید که اولویت‌ها در ستون "Nice" به نمایش در‌می‌آیند.

روش فوق در دسکتاپ Gnome مصداق دارد اما در مورد KDE هم روش بسیار شبیه به همین است.


۲- استفاده از Terminal
بسادگی کد زیر را در ترمینال وارد کنید:

sudo nice <process_name> <priority> &
برای مثال ما قصد داریم به Firefox اولویت 5 را بدهیم:

sudo nice firefox 5 &




ترجمه: فاراب
منبع: http://webupd8.blogspot.com/2009/07/how-to-change-process-priority-in-linux.html
عنوان: پاسخ به: چگونگی تغییر اولویت پروسه‌ها در لینوکس
ارسال شده توسط: ناربه در 12 امرداد 1388، 07:32 ب‌ظ
ممنون. این کار معمولا زمانی مورد استفاده قرار میگیره که پروسه های زیادی باشن. درسته؟ در غیر اینصورت زیاد فرقی نمیکنه در حالت معمولی priority چه پروسه ای بالا باشه.
عنوان: پاسخ به: چگونگی تغییر اولویت پروسه‌ها در لینوکس
ارسال شده توسط: فاراب در 13 امرداد 1388، 02:26 ق‌ظ
ممنون. این کار معمولا زمانی مورد استفاده قرار میگیره که پروسه های زیادی باشن. درسته؟ در غیر اینصورت زیاد فرقی نمیکنه در حالت معمولی priority چه پروسه ای بالا باشه.

دقیقا. البته مقاصد خاص رُ هم میشه براش در نظر گرفت که من در مقدمه ذکر نکردم. مثلا تصور کنید قصد دارید مثلا در کار‌های شبیه سازی، یک پروسه‌ی خاص، زمانی که پروسه‌های دیگه بطور ناگهانی وارد سیستم میشوند، هیچ وقت دچار گرسنگی نشه تا در کار کل سیستم اخلال ایجاد نشه. یا زمانی که یک منبع به مقدار بسیار محدود در سیستم موجود هست. یا مثال‌هایی از این دست. در اینصورت با تنظیم اولویت پروسه‌ها بصورت دستی، میتونید مقصود خودتون رُ مرتفع کنید.
البته سیستم عامل وظیفه داره این کار رُ به بهترین نحو و با الگریتم‌هایی که با اونا آشنایی دارید مثل Round Robin (http://en.wikipedia.org/wiki/Round-robin) زمانبندی تخصیص منابع به پروسه‌ها رُ انجام بده تا هیچ موقع گرسنگی پیش نیاد اما برای برنامه نویس حرفه‌ای سیستم گاهی پیش میاد که یک پروسه‌ی حیاتی اتفاق میافته که هیچ موقع نباید در صف‌های پردازش قرار بگیره.
شبیه سازی یک دیگ‌بخار رُ در نظر بگیرید که وظیفه‌ی پردازش اطلاعات اون رُ برنامه‌ی ما بر عهده داره. اطلاعاتی که سنسور حرارتی به ما میده، از اونجا که اگه دیر بهش پاسخ داده نشه ممکنه به انفجار دیگ منجر بشه، باید بلافاصله و با بالاترین اولویت پردازش بشه.
عنوان: پاسخ به: چگونگی تغییر اولویت پروسه‌ها در لینوکس
ارسال شده توسط: جادی در 13 امرداد 1388، 10:22 ق‌ظ
کاربردهای مرسوم تری که همیشه هم باید استفاده بشه بک آپ گرفتن از سرورها و اینجور کارها است. شما می خواهید کلی فایل رو تار کنید و بعد فشرده. این پروسه رو به خوبی می شه با اولویت کم (عدد بالا) اجرا کرد تا توی کارهای مرسوم سرور مشکلی پیش نیاره.
عنوان: پاسخ به: چگونگی تغییر اولویت پروسه‌ها در لینوکس
ارسال شده توسط: فاراب در 13 امرداد 1388، 09:12 ب‌ظ
کاربردهای مرسوم تری که همیشه هم باید استفاده بشه بک آپ گرفتن از سرورها و اینجور کارها است. شما می خواهید کلی فایل رو تار کنید و بعد فشرده. این پروسه رو به خوبی می شه با اولویت کم (عدد بالا) اجرا کرد تا توی کارهای مرسوم سرور مشکلی پیش نیاره.

دقیقا. این هم میتونه یکی از کاربرد‌های تغییر اولویت باشه. یعنی شما با هر روشی که میخواهید، به سرور راه دور Remote Login میکنید. سپس اینبار بجای بالابردن اولویت پروسه‌ی مورد نظر که قصد دارید در سمت سرور اجرا بشه و به جهت کاستن از فشار بر روی سرور، اولویت کمتری (عدد بالاتری) رُ برای اونا در نظر میگیرید تا سرور بتونه به وظایفی که از سمت کلاینت‌ها میرسه جواب بده و در صورتی که بیکار بود به انجام پروسه‌ی ما برسه!
ممنونم جادی جان.
عنوان: پاسخ به: چگونگی تغییر اولویت پروسه‌ها در لینوکس
ارسال شده توسط: ناربه در 13 امرداد 1388، 09:49 ب‌ظ
حالا یه چیزه دیگه. اگه کلا بخوایم Priority یک پروسه رو همیشه بصورت Default بگذاریم میشه؟
عنوان: پاسخ به: چگونگی تغییر اولویت پروسه‌ها در لینوکس
ارسال شده توسط: فاراب در 13 امرداد 1388، 10:59 ب‌ظ
حالا یه چیزه دیگه. اگه کلا بخوایم Priority یک پروسه رو همیشه بصورت Default بگذاریم میشه؟

یعنی قبل از تولید یه پروسه توسط پدر یا سیستم، اولویت اونو تنظیم کرده باشیم درسته؟
در حالت معمولی که فکر نکنم بشه چون هنوز پروسه اجرا نشده که اولویتش تنظیم بشه. اما فکر میکنم بشه یه اسکریپت سیستمی برای این منظور نوشت که مثلا اگر پروسه‌ی مورد نظر ما با این اسم یا با این ID وارد حافظه شد، بلافاصله اولویتش تغییر کنه.
عنوان: پاسخ به: چگونگی تغییر اولویت پروسه‌ها در لینوکس
ارسال شده توسط: Farshid در 14 امرداد 1388، 12:13 ب‌ظ
درود

منم ی سوال دارم: بالاترین اولویت برای پردازه چه عددی رو داره؟ (فاراب گفت 0 اما تو اون سیستم مانیتور 5- هم هست از طرفی به ی پردازه 5 هم داده شده!!)

بازه‌ی این اعداد مشخصه؟



پ.ن:: فاراب خیلی ممنون عالی بود ;)
عنوان: پاسخ به: چگونگی تغییر اولویت پروسه‌ها در لینوکس
ارسال شده توسط: جادی در 14 امرداد 1388، 02:58 ب‌ظ
عدد در سطح کرنل، بین منفی بیست تا نوزده است.