چگونگی محدود کردن استفاده CPU در لینوکس با کمک CPULimit
در این پست می خواهیم به بررسی چگونگی محدود کردن استفاده CPU در لینوکس با کمک CPULimit برای شما کاربران عزیز بپردازیم . امیدواریم مقاله چگونگی محدود کردن استفاده CPU در لینوکس با کمک CPULimit مورد توجه شما قرار بگیرد و برایتان مفید و کاربردی باشد.
در این مقاله چگونگی محدود کردن استفاده CPU در اوبونتو ۱۴٫۰۴ را آموزش خواهیم داد. برای این منظور از ابزار cpulimit بهره گیری میکنیم. Cpulimit ابزاری می باشد که بهره گیری یک فرآیند از CPU را محدود می کند (به صورت در درصد).
- پیش نیاز ها
این آموزش بر روی سرور لینوکس اوبونتو ۱۴٫۰۴ انجام می شود ، پس شما می بایست پیش از آغاز آموزش یک سرور اوبونتو ۱۴٫۰۴ نصب و راه اندازی نمایید . سیستم می بایست یک آدرس IP استاتیک داشته باشد. که در اینجا از ۱۹۲٫۱۶۸٫۰٫۱۰۰ به عنوان آدرس IP و از server1.example.com به عنوان نام دامین بهره گیری شده می باشد.
- نصب و راه اندازی
cpulimit را با بهره گیری از دستور پایین نصب نمایید :
- محدود کردن بهره گیری از CPU
ابتدا استفاده CPU را بدون cpulimit چک میکنیم و سپس برای بازبینی اثر این ابزار، بـعد پیاده سازی cpulimit مرتبه دیگر استفاده CPU را مورد بازبینی چ قرار میدهیم .
۱ . در اینجا یک مثال از روش بهره گیری یک برنامه از CPU تک هسته ای را مشاهده مینمایید:
1 2 3 | root@server1:~# dd if=/dev/zero of=/dev/null & [1] 1850 root@server1:~# |
با استفاده از دستور زیر مصرف CPU را چک کنید :
همانطور که می ببینید در حال حاضر از ۱۰۰٪ CPU استفاده شده و می خواهیم از cpulimit برای کاهش استفاده از CPU استفاده کنیم. دستور زیر را اجرا کنید
1 | fg |
1 2 3 4 5 6 7 | root@server1:~# fg dd if=/dev/zero of=/dev/null ^C222182151+0 records in 222182150+0 records out 113757260800 bytes (114 GB) copied, 259.084 s, 439 MB/s root@server1:~# |
میتوانید CPULimit را تست کنید:
1 | cpulimit –l 30 dd if=/dev/zero of=/dev/null & |
1 2 3 4 5 6 | root@server1:~# cpulimit -l 30 dd if=/dev/zero of=/dev/null & [1] 1852 root@server1:~# Process 1853 detected [1]+ Done cpulimit –l 30 dd if=/dev/zero of=/dev/null root@server1:~# |
حال با استفاده از دستور top مصرف CPU را چک کنید:
1 | top |
1 2 3 4 5 6 7 8 9 10 11 12 13 | top – 11:30:54 up 55 min, 1 user, load average: 0.20, 0.58, 1.34 Tasks: 250 total, 2 running, 247 sleeping, 1 stopped, 0 zombie %Cpu(s): 4.5 us, 4.1 sy, 0.0 ni, 91.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 1010540 total, 271944 used, 738596 free, 21816 buffers KiB Swap: 1048572 total, 0 used, 1048572 free. 158212 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1853 root 20 0 7224 612 520 T 33.8 0.1 0:35.53 dd 1 root 20 0 33480 2776 1456 S 0.0 0.3 0:05.37 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0 4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0 |
میبینید که مصرف CPU از ۱۰۰٪ تقریبا به ۳۳٫۸٪ کاهش یافته است. بنابراین ابزار cpulimit قادر است مصرف CPU را یک توزیع اوبونتو تک هسته ای کاهش دهد.
۲ . در مثال زیر نحوه مصرف CPU یک برنامه، در یک CPU چند هسته ای را مشاهده میکنید:
برای چک کردن هسته CPU خود از دستور زیر استفاده کنید:
1 | nproc |
در این آموزش CPU 4 هسته ای است.
اکنون مصرف CPU یک برنامه را در هر ۴ هسته بدون cpulimit بررسی میکنیم .
1 | for j in `seq 1 4`; do dd if=/dev/zero of=/dev/null & done |
این کار باعث میشود که دستور با بهره گیری از تمام هسته ها اجرا شود و خروجی عملکرد آن به صورت زیر خواهد بود:
1 2 3 4 5 6 | root@server1:~# for j in `seq 1 4`; do dd if=/dev/zero of=/dev/null & done [1] 1263 [2] 1264 [3] 1265 [4] 1266 root@server1:~# |
حال با استفاده از دستور top مصرف CPU را بررسی کنید:
1 | top |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | top – 11:47:45 up 4 min, 1 user, load average: 3.63, 1.53, 0.57 Tasks: 290 total, 5 running, 285 sleeping, 0 stopped, 0 zombie %Cpu0 : 48.3 us, 51.3 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st %Cpu1 : 47.8 us, 52.2 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 : 53.3 us, 46.4 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st %Cpu3 : 52.0 us, 48.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 1010540 total, 209712 used, 800828 free, 20276 buffers KiB Swap: 1048572 total, 0 used, 1048572 free. 93632 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1263 root 20 0 7224 612 520 R 100.0 0.1 2:21.40 dd 1264 root 20 0 7224 616 520 R 100.0 0.1 2:21.41 dd 1265 root 20 0 7224 612 520 R 99.0 0.1 2:21.03 dd 1266 root 20 0 7224 616 520 R 98.0 0.1 2:20.82 dd 1281 root 20 0 104416 3992 2920 S 1.0 0.4 0:00.03 sshd 1283 root 20 0 104416 3988 2920 S 1.0 0.4 0:00.03 sshd 1279 root 20 0 104556 4008 2924 S 0.7 0.4 0:00.08 sshd |
دستور dd تقریبا ۱۰۰٪ CPU تمام هسته ها را مصرف میکند. در مرحله بعد باید دستور را با ابزار cpulimit بررسی کنید. در ابتدا دستور زیر را وارد کنید:
1 | killall dd |
1 2 3 4 5 6 | root@server1:~# killall dd [1] Terminated dd if=/dev/zero of=/dev/null [3]– Terminated dd if=/dev/zero of=/dev/null [2]– Terminated dd if=/dev/zero of=/dev/null [4]+ Terminated dd if=/dev/zero of=/dev/null root@server1:~# |
سپس از cpulimit با همان دستور به شرح زیر استفاده کنید :
1 | for j in `seq 1 4`; do cpulimit –l 20 dd if=/dev/zero of=/dev/null & done |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | root@server1:~# for j in `seq 1 4`; do cpulimit -l 20 dd if=/dev/zero of=/dev/null & done [1] 1429 [2] 1430 [3] 1431 [4] 1432 root@server1:~# Process 1434 detected Process 1433 detected Process 1437 detected Process 1439 detected [1] Done cpulimit –l 20 dd if=/dev/zero of=/dev/null [2] Done cpulimit –l 20 dd if=/dev/zero of=/dev/null [3]– Done cpulimit –l 20 dd if=/dev/zero of=/dev/null [4]+ Done cpulimit –l 20 dd if=/dev/zero of=/dev/null root@server1:~# |
حال مصرف CPU را با ابزار cpulimit چک نمایید.
1 | top |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | top – 11:59:10 up 16 min, 2 users, load average: 0.47, 0.71, 0.81 Tasks: 256 total, 2 running, 251 sleeping, 3 stopped, 0 zombie %Cpu0 : 2.0 us, 2.0 sy, 0.0 ni, 96.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu1 : 26.2 us, 22.8 sy, 0.0 ni, 50.7 id, 0.0 wa, 0.3 hi, 0.0 si, 0.0 st %Cpu2 : 14.0 us, 12.3 sy, 0.0 ni, 73.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 : 13.3 us, 11.6 sy, 0.0 ni, 75.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 1010540 total, 204064 used, 806476 free, 20408 buffers KiB Swap: 1048572 total, 0 used, 1048572 free. 98340 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1433 root 20 0 7224 612 520 T 28.2 0.1 0:12.00 dd 1439 root 20 0 7224 616 520 R 26.6 0.1 0:12.13 dd 1434 root 20 0 7224 612 520 T 25.3 0.1 0:11.97 dd 1437 root 20 0 7224 612 516 T 22.9 0.1 0:11.93 dd 7 root 20 0 0 0 0 S 0.3 0.0 0:00.22 rcu_sched 8 root 20 0 0 0 0 S 0.3 0.0 0:00.21 rcuos/0 |
همین طور که در بالا می بینید مصرف CPU برای پردازنده های چند هسته ای تقریبا از ۱۰۰٪ به ۲۰٪ کاهش یافته است.
خب دوستان به انتهای مقاله آموزشی چگونگی محدود کردن استفاده CPU در لینوکس با کمک CPULimit رسیدیم. با توجه به توضیحات بالا شما میتوانید برا با کاهش حجم مصرفی cpu سرعت سیستم خود را بالا ببردید. برای مشاهده اطلاعات بیشتر درمورد سرور مجازی و هاستینگ کلیک نمایید.