mjabbasi
21st October 2010, 01:11 AM
آيا تا بهحال برايتان پيش آمده که يک برنامه خاص (مانند فايرفاکس) را باز کنيد و بعد تمام سيستمتان بسته شود؟ اين موضوع زماني جدي ميشود که بهجاي يک کامپيوتر معمولي خانگي، عملکرد اشتباه يک برنامه، تمام منابع پردازنده يک سرور را در اختيار بگيرد و سرور از کار بيفتد؛ در اين صورت تمام وبسايتها و سرويسهايي که در اين سرور وجود دارند از کار خواهند افتاد.
براي حل اين مشکل، گروهي از برنامهنويسان آزاد، برنامهاي بهنام Cpulimit نوشتهاند که ميتواند استفاده يک پردازه از پردازنده را محدود کند. مثلا اگر يک برنامه را که از سنگيني آن آگاه نيستيد، اجرا کنيد يا زماني که يک برنامه با استفاده محدود، حجم زيادي از پردازنده شما را ميگيرد، ميتوانيد آن را بهسادگي محدود کنيد. از اينرو اجراي چند برنامه پردازندهمحور (CPU-Bound) بهطور همزمان در سيستم بهسادگي انجام ميپذيرد.
نکتهاي که بايد به آن توجه کرد اين است که اين برنامه براي تمام توزيعهاي لينوکس قابل استفاده است، اما در اين مقاله، تنها به نصب آن در توزيع محبوب اوبونتو ميپردازيم.
نصب
در اوبونتو ميتوان cpulimit را از طريق Ubuntu Software Center نصب کرد. کافي است نام آنرا جستجو کنيد. از طريق apt نيز ميتوان با دستور زير آن را نصب کرد:
sudo apt-get install cpulimit
استفاده
براي اين که يک پردازنده را محدود کنيم، از دستور زير استفاده ميکنيم:
sudo cpulimit -p PID -l CPU%
که در اين دستور، PID شناسه برنامه در حال اجراست و
%CPU عددي است بين صفر تا 100 که همان منبع مجاز براي برنامه خواهد بود. ميتوان PID را با رفتن به مسير زير بهدست آورد:
Administration\System Monitor
براي نمونه، اگر برنامه فايرفاکس شما 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
محمدرضا قرباني
براي حل اين مشکل، گروهي از برنامهنويسان آزاد، برنامهاي بهنام Cpulimit نوشتهاند که ميتواند استفاده يک پردازه از پردازنده را محدود کند. مثلا اگر يک برنامه را که از سنگيني آن آگاه نيستيد، اجرا کنيد يا زماني که يک برنامه با استفاده محدود، حجم زيادي از پردازنده شما را ميگيرد، ميتوانيد آن را بهسادگي محدود کنيد. از اينرو اجراي چند برنامه پردازندهمحور (CPU-Bound) بهطور همزمان در سيستم بهسادگي انجام ميپذيرد.
نکتهاي که بايد به آن توجه کرد اين است که اين برنامه براي تمام توزيعهاي لينوکس قابل استفاده است، اما در اين مقاله، تنها به نصب آن در توزيع محبوب اوبونتو ميپردازيم.
نصب
در اوبونتو ميتوان cpulimit را از طريق Ubuntu Software Center نصب کرد. کافي است نام آنرا جستجو کنيد. از طريق apt نيز ميتوان با دستور زير آن را نصب کرد:
sudo apt-get install cpulimit
استفاده
براي اين که يک پردازنده را محدود کنيم، از دستور زير استفاده ميکنيم:
sudo cpulimit -p PID -l CPU%
که در اين دستور، PID شناسه برنامه در حال اجراست و
%CPU عددي است بين صفر تا 100 که همان منبع مجاز براي برنامه خواهد بود. ميتوان PID را با رفتن به مسير زير بهدست آورد:
Administration\System Monitor
براي نمونه، اگر برنامه فايرفاکس شما 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
محمدرضا قرباني