آموزش محدود کردن CPU لینوکس توسط CPULimit در CentOS 7
محدود کردن CPU لینوکس در CentOS 7
CPULimit یک ابزار کاربردی برای محدود کردن استفاده CPU از منابع یک سرویس یا برنامه تعیین شده توسط کاربر است، وقتی که یک برنامه یا سرویس تمام CPU رو مصرف و اشغال میکنه، باعث کند شدن برنامه های دیگه میشه. از برنامه CPULimit میتونین برای محدود کردن CPU اون سرویس یا برنامه استفاده کنین، به این صورت که استفاده از هسته CPU اختصاص داده شده رو بصورت کامل یا بخشی از هسته رو محدود یا متوقف کنید.
البته توجه داشته باشین که ، CPULimit ممکن است با تمام برنامه های کاربردی کار نکند، چون بعضی از پروسس ها براساس starts/stops فعال میشن و دائم فعال نیستن که چرخه ی فعالیتشون ثابت باشه . در این آموزش نحوه نصب این اسکریپت در سیستم عامل Centos 7 رو آموزش میدیم.
برای نصب CPULimit در Centos 7 دسترسی root یا Sudo باید داشته باشیم، همچنین از دستورات make
, screen
، wget
هم استفاده میکنیم.
با دستور زیر بسته CPULimit رو دانلود میکنیم و توسط make کامپایل میکنیم و شروع به نصب میکنیم
cd ~
wget https://astuteinternet.dl.sourceforge.net/project/limitcpu/limitcpu/cpulimit-2.5.tar.gz
tar -xvf cpulimit-2.5.tar.gz
cd cpulimit-2.5
make
make install
برای کار کردن با CPULimit باید process ID برنامه یا سرویسی که میخواین محدود کنین رو شناسایی کنین، با اجرا کردن برنامه top
میتونیم شناسه PID
برنامه ای که میخوایم رو شناسایی کنیم
top -c
خروجی به شکل زیر میشه
Tasks: 130 total, 1 running, 129 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3881740 total, 191952 free, 413472 used, 3276316 buff/cache
KiB Swap: 4063228 total, 4062912 free, 316 used. 2881364 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1336 plex 35 15 1368172 67464 6668 S 0.3 1.7 155:41.58 Plex Plug-in [com.plexapp.system] /usr/lib/plexmediaserver/Resources/Plug-ins-995f1dead+
31345 root 20 0 326572 21844 12784 S 0.3 0.6 86:45.32 docker-containerd --config /var/run/docker/containerd/containerd.toml
1 root 20 0 193704 6744 4088 S 0.0 0.2 6:49.22 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
2 root 20 0 0 0 0 S 0.0 0.0 0:01.45 [kthreadd]
3 root 20 0 0 0 0 S 0.0 0.0 0:12.77 [ksoftirqd/0]
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kworker/0:0H]
7 root rt 0 0 0 0 S 0.0 0.0 0:13.95 [migration/0]
مثلا اگه بخواین plex
رو محدود کنین باید PID اون رو شناسایی کنین که در اینجا 1336
است. مثلا اگه بخواین مصرف CPU سرویس plex
رو به 15% لیمیت کنین که فقط 15% از CPU رو مصرف کنه ، اول باید وارد صفحه screen
بشیم تا کدهامون توی پس زمینه در حال اجرا بمونه و بعدش دستور cpulimit
رو میزنیم.
screen -S limitcpu
cpulimit -p 1336 -l 15
برای خروج از صفحه Screen هم دکمه های CTRL + A + D رو میزنیم و اگه بخوایم مجدد به صفحه Screen که برای cpulimit تنظیم کردیم وارد بشیم دستور زیر رو میزنیم
screen -r limitcpu
فرمت کلی دستور نویسی برای cpulimit
به شکل زیر است.
cpulimit -p (PROCESS PID) -l (CPU %)
برای حذف cpulimit
از دستور زیر استفاده میکنیم
cd ~/cpulimit-2.5
make deinstall