محدود کردن cpu توسط ابزار cpulimit از منابع یک سرویس یا برنامه تعیین شده توسط کاربر است، وقتی که یک برنامه یا سرویس تمام CPU رو مصرف و اشغال میکنه، باعث کند شدن برنامه های دیگه میشه. از برنامه CPULimit میتونین برای محدود کردن CPU اون سرویس یا برنامه استفاده کنین، به این صورت که استفاده از هسته CPU اختصاص داده شده رو بصورت کامل یا بخشی از هسته رو محدود یا متوقف کنید.
البته توجه داشته باشین که ، CPULimit ممکن است با تمام برنامه های کاربردی کار نکند، چون بعضی از پروسس ها براساس starts/stops فعال میشن و دائم فعال نیستن که چرخه ی فعالیتشون ثابت باشه.
سی پیو و رم جز مهمترین سختافزارهایی هستند که شما به عنوان مدیر سیستم و یا مدیر سرور باید کنترل دقیقی روی آنها داشته باشید در غیر اینصورت ممکن است با مدیریت اشتباه، سرور شما مدام کند شده و یا حتی از دسترس خارج شود. برای رفع این مشکل شما باید با تغییراتی که در ادامه در قالب کانفیگ سرور به شما آموزش میدهیم این شرایط را مدیریت نمایید.
نصب ابزار cpulimit به منظور محدود کردن cpu در لینوکس
ابزار cpulimit به صورت پیشفرض توسط مخزن دیفالت اوبونتو و دبیان قابل نصب و راهاندازی میباشد بدین منظور فقط کافی است تا دستور زیر را با دسترسی روت در لینوکس وارد نمایید.
sudo apt install cpulimit
در توزیعهای ردهت بیس مثل centos و fedora ابتدا باید مخزن epel را نصب و سپس از طریق دستور پکیج منیجر yum اقدام به نصب آن کنید.
yum install epel-release yum install cpulimit
نحوه محدود کردن cpu توسط cpulimit
ابتدا توسط دستور dd بر روی سرور یک cpu usage سنگین ایجاد میکنیم تا سرور را در حالت آزمایشگاهی زیر فشار قرار دهیم
& dd if=/dev/zero of=/dev/null
حالا توسط دستور top پروسههای در حال اجرای لینوکس را مشاهده میکنیم تا از مقدار لود ایجاد شده بر روی سرور مطلع شویم.
top
همانطور که در عکس زیر مشاهده میکنید مقدار Cpu اشغال شده توسط دستور dd به ۱۰۰% مقدار منابع موجود رسیده و سرور زیر لود سنگین هندل کردن این پروسه قرار گرفته است.
توسط سوییچهای pid– و یا p- میتوانیم شماره process id مربوط به dd را برای این دستور مشخص کنیم و توسط سوییچ limit– و یا l- میتوانیم مقدار محدودیت موردنظر خود را به صورت درصد برای این دستور تعیین کنیم.
sudo cpulimit --pid 17918 --limit 50 Process 17918 detected
بعد از اجرای دستور بالا حالا دوباره دستور dd را اجرا میکنیم تا میزان تغییرات اعمال شده بر روی سرور را مشاهده کنیم.
خوب همانطور که مشاهده میکنید میزان cpu استفاده شده توسط دستور dd به مقدار ۵۱% کاهش پیدا کرد که نشان دهنده عملکرد صحیح ابزار cpulimi هستش
حالا دوباره مقدار محدودیت را افزایش داده و به مقدار ۲۰% میرسانیم
sudo cpulimit --pid 17918 --limit 20
همانطور که در تصویر زیر مشاهده میکنید مقدار استفاده به ۲۰-۲۵ درصد کل cpu سرور کاهش پیدا کرد که خود این امر اهمیت استفاده از این ابزار را برای مدیر سرور مشخص میکند.
برای اجرای cpulimit در پسزمینه از background– و یا b- میتوانید استفاده کنید.
sudo cpulimit --pid 17918 --limit 20 --background
توسط cpu– و یا c- میتوانیم تعداد هستههای سی پیو که میخواهیم این محدودیت برای آنان لحاظ شود را مشخص کنیم.
sudo cpulimit --pid 17918 --limit 20 --cpu 4
خوب همانطور که مشاهده کردید به راحتی و توسط ابزار cpulimit توانستیم با محدود کردن cpu میزان لود سرور را تحت کنترل درآوریم و از ایجاد مشکلات جدی همچون کند شدن و یا دان شدن سرور جلوگیری کنیم.
و طبق معمول در لینوکس برای مشاهده help هر دستور میتوانید از man در ابتدای هر دستور استفاده کنید.