آموزشاوبونتواوبونتو دسکتاپاوبونتو سرورپروژه های لینوکسیدبیاندبیان دسکتاپدبیان سروردسکتاپردهتردهت دسکتاپردهت سرورسرورسنت او اسسنت او اس دسکتاپسنت او اس سرورلینوکس

محدود کردن میزان مصرف CPU برای هر پروسس

بسم الله الرحمن الرحیم

یا راهی خواهم یافت , یا راهی خواهم ساخت

خییلی وقتا شده که تو سرورامون یه پروسس اون پشت پشتای سرور شروع به مصرف بیش از حد CPU می کنه و حتی گاهی اوقات اون رو می چسبونه و سرورمون رو DOWN می کنه و راهی هم برای مقابله باهاش پیدا نمی کنیم چون اون پروسس رو به دلیل اینکه نیازش داریم نمی تونیم killش کنیم.

خب ما در این ورک شاپ قصد داریم تا راه حلی رو در این زمینه خدمت شما عزییزان ارائه بدیم.

جهت این کار ما می خوایم از اپلیکیشن cpulimit استفاده کنیم، این اپلیکیشن تلاش می کنه تا میزان مصرف CPU یک پروسس رو محدود کنه. و محدودیتی که ایجاد می کنه در میزان درصد مصرف CPU است نه در زمان مصرف CPU. و جهت محدود سازی هم تغییر بر مقادیر nice پروسس ها  و یا  تغییری در دیگر پروسس هایی که اولویت بندی شده اند نیمی گذاره بلکه میزان مصرف حقیقی CPU رو توسط اون پروسس محدود می کنه.

همچنین به صورت خییلی سریع و پویا می تونه خودش رو با system load سازگاری بده.

 

خب بریم برای نصب cpulimit

کامند های زیر رو در ترمینال خودتون تایپ کنید تا آخرین نسخه stable این اپلیکیشن نصب بشه:

# cd /tmp
# wget ‘http://downloads.sourceforge.net/cpulimit/cpulimit-1.1.tar.gz’
# tar -zxvf cpulimit-1.1.tar.gz
# cd cpulimit-1.1
# make
# cp cpulimit /usr/local/sbin/
# rm -rf cpulimit*

 

یه نکته برای کاربران Debian / Ubuntu

خب عزییزان اوبونتویی کامندهای زیر رو جهت نصب cpulimit در ترمینال خودشون تایپ کنند:

$ sudo apt-get update
$ sudo apt-get install cpulimit

خب حالا چگونه از CPULIMIT استفاده کنیم؟

ببینید دوستان الان می خوایم که میزان مصرف CPU مرورگر firefox رو به ۳۰% محدود کنیم( یعنی از ۱۰۰% CPU سیستم یا سرور ما  تنها مجاز به استفاده کردن۳۰% آن است):

# cpulimit -e firefox -l 30

خب حالا اگر بخواهیم که میزان مصرف یه پروسس رو بر اساس PID اون پرورسس به ۳۰% محدود کنیم از کامند زیر استفاده می کنیم:

# cpulimit -p 1313 -l 30

اگر می خواین که PID پروسس هاتون رو پیدا کنید من به شما کامند های زیر رو معرفی می کنم:

# ps aux | less
# ps aux | grep firefox
# pgrep -u vivek php-cgi
# pgrep lighttpd

راستی همچنین می تونیم بر اساس آدرس دهی مطلق مسیر فایل های اجرایی اپلیکیشنمون اون ها رو با اپلیکیشن CPULIMIT محدود کنیم، پس اگر این گزینه رو انتخاب کردین برای محدود کردن پروسستون، کامند زیر رو وارد کنید:

# cpulimit -P /opt/firefox/firebox -l 30

آپشن های معروف این اپلیکیشن:

-p : Process PID.
-e : Process name.
-l : percentage of CPU allowed from 0 to 100.
-P: absolute path name of the executable program file.

 

برای استفاده از این اپلیکیشن از حساب کاربری ریشه(Root) استفاده کنیم یا حساب کاربری عادی؟

به نقل از صفحه رسمی پروژه این نرم افزار:

با cpulimit اگر خواستین که یه پروسسی رو محدود کنید حداقل باید با همان یوزری که آن پروسس رو اجرا کرده این کار انجام شود. اما خییلی بهتره که با حساب کاربری ریشه یا همون root این کار انجام بشه. در کل وقتی که با حساب کاربری root این کار انجام بشه Cpu Limit در اولویت بالاتری اجرا میشه و نظارت دقیق تری بر روی آن میشه.

 

یه نکته در مورد  سیستم های SMP یا همون (Multicore / MultiCpu)

یه نقل دیگه از صفحه رسمی پروژه Cpu Limit :

اگر ماشین شما داری یک پردازنده باشد شما می تونید پروسس هاتون رو بین ۰% تا ۱۰۰% محدود کنید، یعنی اینکه اگر شما پروسستون رو بر روی ۵۰% محدود کنید این پروسس نمی تواند بیشتر از ۵۰۰ms از زمان Cpu رو در هر ثانیه بگیره. اما اگر ماشین شما دارای ۴ هسته باشد، درصد بندی بین ۰% تا ۴۰۰% متفاوت میشه، بنابراین اگر پروسستون رو تو این حالت بر روی ۲۰۰% محدود کنید به این معنی است که اون پروسس نمی تواند بیشتر از نصف قدرت Cpu رو به خودش اختصاص بده. در هر حالت درصد بندی یا percentage همون چیزی است شما موقع اجرا اپلیکیشن top مشاهده می کنید.

 

نویسنده: حامد چوبین

هرگونه کپی برداری تنها با ذکر منبع مجاز می باشد.

منبع: گروه سرویس های لینوکسی


برچسب ها

حامد چوبین

I'm Hamed Choobin, living in I.R.Iran-Qom experiencing Linux OSs since 2010, and has experiences with RedHat Enterprise Linux (RHEL) ,Community Enterprise OS (CentOS) ,Debian,Ubuntu.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن