منبع اصلی نوشتار زیر در این لینک قرار دارد

اولویت فرایند ها

در لینوکس (و البته تمامی سیستم های عامل) تعداد بسیاری (هزاران) فرایند در حال اجرا شدن هستند. هر فرایند برای اجرا شدن ابتدا باید وارد حافظه شود، در حافظه اصلی بر اساس معیار ها و اولویت هایی زمانبندی می شود تا برای شروع اجرا شدن، پردازنده را بدست بیاورد. یک فرایند تا زمانی که پردازنده را بدست نیاورد اجرا نخواهد شد. از این رو یک اولویت Priority میان پردازش ها وجود دارد برای استفاده از پردازنده. در خروجی دستور ps ستون NI مشخص کننده اولویت یک پردازش در حال اجرا است. در لینوکس از دستور های nice و renice برای تغییر اولویت ها استفاده می شود. هنگامی که یک فرایند اجرا می شود، مقدار اولویت پیشفرض 0 را دارد اما محدوده مقادیر اولویت (که به آن مقادیر nice) گویند از عدد 20- تا 19 است بطوریکه عدد 20- بالاترین اولویت و 19 کمترین اولویت را دارند.دستور nice یک فرایند را با مقدار داده شده اجرا می کند و دستور renice اولویت یک فرایند در حال اجرا را تغییر می دهد. برای مشاهده اولویت فرایند های در حال از دستور زیر استفاده کنید. دستور زیر خروجی ps را با استفاده از سوئیچ o- سفارشی می کند و به ترتیب شناسه فرایند، شناسه والد فرایند، نام مالک فرایند، اولویت فرایند و نام دستور (فرایند) را نشان می دهد.

ps ex -o pid,ppid,user,ni,fname

همانطور که در شکل بالا می بینید، پردازشی با شناسه 27 دارای اولویت 5 است که نسبت به پردازشی با شناسه 428 و اولویت 4-، دارای اولویت کمتری است. پردازنده ها با الویت بیشتر، توسط کرنل، زمان بیشتری از پردازنده به آنها داده می شود. (همانطور که گفته شد، اولویت پیشفرض در هنگام ایجاد یک فرایند 0 است که می توانیم با دستور nice، فرایند را با یک اولویت دلخواه اجرا کنیم.) همچنین می توانید از دستور زیر اولویت هر فرایند را مشاهده کنید. (ستون NI)

ps al

OR

ps alx

دستور nice

همانطور گه گفته شد از این دستور برای اجرای یک فرایند با اولویتی دلخواه استفاده می شود. اعداد منفی بیشترین اولویت (عدد 20- بالاترین اولویت) و اعداد مثبت کمترین اولویت (عدد 19 کمترین اولویت) را دارند. استفاده کلی از دستور بصورت زیر است:

nice -PRIORITY_NUMBER PROCESS_NAME_OR_COMMAND_NAME

OR

nice -n PRIORITY_NUMBER PROCESS_NAME_OR_COMMAND_NAME

بطور مثال برای اجرای یک bash با اولویت 10 از دستور های زیر استفاده کنید.

nice -10 /bin/bash

OR

nice -n 10 /bin/bash

در دستور اول، علامت – قبل از عدد 10 نشان دهنده عدد “منفی ده” نیست بلکه نشان دهنده سوئیج بودن آن است. دستور اول کمی گمراه کننده است، پس از سوئیچ n- استفاده می کنیم تا دستور خوانا تر شود. سدتور های زیر همان bash را با اولویت 5- اجرا می کند.

nice –5 /bin/bash

OR

nice -n -5 /bin/bash

در دستور اول دوتا – وجود دارد که یکی برای سوئیج بودن و یکی هم نشان دهنده “منفی پنج” است. دستور دوم بسیار خواناتر است.

وقتی خطای زیر بعد استفاده از دستور nice نشان داده می شود یعنی اینکه مجاز به تغییر اولویت نیستید و دستور (فرایند) با همان اولویت 0 (اولویت پیشفرض) اجرا خواهد شد.

nice: cannot set niceness: Permission denied

دستور renice

برای تغییر اولویت یک فرایند در حال اجرا استفاده می شود. با استفاده از سوئیج p- شناسه فرایند مشخص خواهد شد. شکل کلی استفاده از آن بصورت زیر می باشد.

renice -n PRIORITY_NAME -p PID

بطور مثال برای فرایندی با شناسه 1800 و تغییر اولویت آن به -5 از دستور زیر استفاده کنید.

renice -n -5 -p 1800

برای تغییر یک مجموعه از فرایند ها متعلق به کاربری خاص (مانند تمام متغیر های کاربر amirnami) از سوئیچ u- استفاده کیند.( ممکن است کاربری بی جهت پردازنده را اشغال کرده باشد، پس اولویت فرایند های آنرا کاهش می دهیم بطوری که عدد اولویت به سمت اعداد مثبت میل می کند)

renice -n PRIORITY_NUMBER -u USERNAMR

renice -n 1 -u amirnami



برچسب ها : , , , , , ,