آموزش محدود کردن 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

برای کار کردن با 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