محدود کردن برنامه‌ها در لینوکس

آیا تا به‌‌حال برایتان پیش آمده که یک برنامه خاص (مانند فایرفاکس) را باز کنید و بعد تمام سیستم‌تان بسته شود؟ این موضوع زمانی جدی می‌شود که به‌جای یک کامپیوتر معمولی خانگی، عملکرد اشتباه یک برنامه، تمام منابع پردازنده یک سرور را در اختیار بگیرد و سرور از کار بیفتد؛ در این صورت تمام وب‌سایت‌ها و سرویس‌هایی که در این سرور وجود دارند از کار خواهند افتاد.

برای حل این مشکل، گروهی از برنامه‌نویسان آزاد، برنامه‌ای به‌نام Cpulimit نوشته‌اند که می‌تواند استفاده یک ‌پردازه از پردازنده را محدود کند. مثلا اگر یک برنامه را که از سنگینی آن آگاه نیستید، اجرا کنید یا زمانی که یک برنامه با استفاده محدود، حجم زیادی از پردازنده شما را می‌گیرد، می‌توانید آن را به‌سادگی محدود کنید. از این‌رو اجرای چند برنامه پردازنده‌محور ‌(CPU-Bound) به‌طور همزمان در سیستم به‌سادگی انجام می‌پذیرد.

نکته‌ای که باید به آن توجه کرد این است که این برنامه برای تمام توزیع‌های لینوکس قابل استفاده است، اما در این مقاله، تنها به نصب آن در توزیع محبوب اوبونتو می‌پردازیم.

نصب

در اوبونتو می‌توان cpulimit را از طریق Ubuntu Software Center نصب کرد. کافی است نام آن‌را جستجو کنید. از طریق apt نیز می‌توان با دستور زیر آن را نصب کرد:

sudo apt-get install cpulimit

استفاده

برای این که یک پردازنده را محدود کنیم، از دستور زیر استفاده می‌کنیم:

sudo cpulimit -p PID -l CPU%

که در این دستور، PID شناسه برنامه در حال اجراست و %

Administration\System Monitor

CPU عددی است بین صفر تا 100 که همان منبع مجاز برای برنامه خواهد بود. می‌توان PID را با رفتن به مسیر زیر به‌دست آورد:

برای نمونه، اگر برنامه فایرفاکس شما 68 درصد از پردازنده را پیش از اجرای دستور می‌گیرد، می‌توان آن‌را به‌میزان 20درصد تغییر داد.

خودکارسازی روند

استفاده از این برنامه زمانی خود را نشان می‌دهد‌ که برنامه‌ای را که اجرا می‌کنید نیاز به منابع زیادی از سوی پردازنده داشته باشد یا وقتی که باید یک کار دسته‌ای (Batch) انجام دهید. همچنین می‌توان این برنامه را طوری طراحی کرد که برای هر برنامه‌ای که از رفتار عادی خود تجاوز می‌کند، فعال شود. روند خودکار کردن، برای نصب سرور بسیار سودمند است.

نظارت بر روند محدودسازی هر پردازنده‌ای که از حد مجاز تجاوز کند، از طریق یک اسکریپت انجام می‌شود. برای این ‌کار مطمئن شوید که دستور زیر را اجرا کرده‌اید، یا gawk و cpulimit در سیستم‌‌تان از پیش نصب شده است.

sudo apt-get install cpulimit gawk

حالا به نشانی زیر بروید و این اسکریپت را دریافت کنید:

http://dl.dropbox.com/u/6864546/cpulimit.tar.gz

فایل tar را به دایرکتوری Home خود منتقل کرده و آن را از حالت فشرده خارج کنید. باید در فولدر ایجاد شده، دو فایل با نام‌های cpulimit و cpulimit_daemon.sh وجود داشته باشد.

حال فایل cpulimit_daemon.sh را در یک ویرایشگر باز کنید (مثلا gEdit) و سپس مقادیر زیر را تغییر دهید:‌CPU_LIMIT: بالاترین میزانی که از منابع پردازنده در اختیار هر نرم‌افزار قرار می‌گیرد. مقدار پیش‌فرض 20 درصد است.DAEMON_INTERVAL:‌ میزان بازه زمانی که این اسکریپت قرار است سیستم را چک کند. مقدار پیش‌فرض 3 ثانیه تنظیم شده است.BLACK_PROCESS_LIST: این مقدار فهرست آیتم‌هایی را مشخص می‌کند که می‌خواهید روی آنها نظارت انجام دهید. برای جداسازی ‌پردازه‌های مختلف از کاراکتر (|) استفاده کنید. برای مثال:

mysql|firefox|gedit

WHITE_PROCESS_LIST: این آیتم شامل فهرست آیتم‌هایی است که نمی‌خواهید تحت نظارت قرار بگیرند. در این مقدار نیز همانند مقدار قبلی، با کاراکتر (|) می‌توان برنامه‌ها را از هم جدا کرد.باید توجه داشته باشید که یکی از دو مقدار فهرست سیاه یا فهرست سفید باید خالی باشند، نمی‌توان به‌صورت همزمان هم فهرست سیاه داشت و هم فهرست سفید.

راه‌اندازی

فایل cpulimit_daemon.sh را به مسیر /usr/bin/ بفرستید. برای این کار می‌توانید از دستور زیر در ترمینال استفاده کنید:‌

sudo cp ~/cpulimit/cpulimit_daemon.sh /usr/bin

sudo chmod 700 /usr/bin/cpulimit_daemon.sh

سپس فایل cpulimit را به فولدر /etc/init.d/ فرستاده و سطوح دسترسی صحیح را ایجاد ‌کنید. حال کاری می‌کنیم که با بالا آمدن سیستم اجرا شود. برای سادگی بیشتر، از دستورات زیر استفاده کنید:‌

sudo cp ~/cpulimit/cpulimit /etc/init.d/

sudo chown root:root /etc/init.d/cpulimit

sudo chmod +x /etc/init.d/cpulimit

sudo update-rc.d cpulimit defaults

حالا اگر یک بار سیستم خود را از نو راه‌اندازی کنید، cpulimit به‌صورت خودکار فعال خواهد شد.می‌توانید برای بررسی وضعیت این برنامه، از دستور زیر استفاده کنید:‌

sudo service cpulimit status

و برای این ‌که مطمئن شوید، cpulimit را اجرا کنید (در صورتی که اجرا نشده)، دستور زیر را بنویسید تا برنامه را اجرا کند:‌

sudo service cpulimit start

همچنین برای متوقف کردن آن از دستور زیر استفاده کنید:‌

sudo service cpulimit stop

پاک کردن

برای پاک کردن این اسکریپت، باید مراحل زیر را انجام دهید:‌

1- متوقف کردن برنامه

sudo service cpulimit stop

2- حذف اسکریپت برای اجرا نشدن هنگام بالا آمدن سیستم

sudo update-rc.d -f cpulimit remove

3- حذف برنامه

sudo rm /etc/init.d/cpulimit

4- حذف اسکریپت به‌طور کامل از سیستم

sudo rm /usr/bin/cpulimit_daemon.sh

5- حذف برنامه cpulimit

sudo apt-get remove cpulimit

6- همچنین اگر استفاده دیگری از برنامه gawk ندارید، آن را نیز می‌توانید حذف کنید:

sudo apt-get remove gawk

محمدرضا قربانی

/ 0 نظر / 11 بازدید