Cách giới hạn mức sử dụng CPU trên Ubuntu 12.10
Hạn chế sử dụng CPU có thể rất quan trọng để tránh server của bạn bị treo.
Điều này đặc biệt hữu ích cho bất kỳ tập lệnh tùy chỉnh nào bạn có thể đang chạy trong crontab.
Đầu tiên, ta sẽ tạo một server Ubuntu 12.10 x64:
Cài đặt cpulimit
apt-get -y install cpulimit
Cú pháp sử dụng
Usage: cpulimit TARGET [OPTIONS...] TARGET must be exactly one of these: -p, --pid=N pid of the process -e, --exe=FILE name of the executable program file -P, --path=PATH absolute path name of the executable program file OPTIONS -b --background run in background -l, --limit=N percentage of cpu allowed from 0 to 100 (mandatory) -v, --verbose show control statistics -z, --lazy exit if there is no suitable target process, or if it dies -h, --help display this help and exit
Sử dụng CPU điểm chuẩn
Cho phép đánh giá mức sử dụng CPU của ta mà không cần cpulimit.
Dưới đây là một ví dụ về cách sử dụng CPU của bạn với một ứng dụng:
md5sum /dev/zero &
Điều này 'chuyển' quá trình md5sum vào nền. Đến đây bạn có thể xem mức sử dụng CPU với đầu trang :
Như bạn thấy , nó đang tiêu tốn gần như 100% tài nguyên CPU (do ta có một lõi CPU trên server này).
Ta có thể đưa quá trình này lên nền trước bằng cách sử dụng fg và hủy nó bằng CTRL + C :
Hạn chế sử dụng CPU với cpulimit
Bây giờ ta có thể kiểm tra cpulimit để xem liệu nó có thực sự làm được những gì nó phải làm hay không.
Cho phép giới hạn mức sử dụng CPU của ta ở mức 40% và chạy cùng một lệnh:
cpulimit -l 40 md5sum /dev/zero &
Chắc chắn, nó được giới hạn ở 40%:
Server đa lõi
Trên các server có nhiều bộ xử lý, bạn cần giới hạn mức sử dụng CPU trên mỗi quá trình.
Đây là một tập lệnh chia 4 quy trình mà không có bất kỳ hạn chế nào và cho phép chúng chạy đồng thời trên server của bạn:
for j in `seq 1 4`; do md5sum /dev/zero & done
Mỗi lõi CPU đang sử dụng gần như 100% tài nguyên:
top - 23:29:28 up 7 days, 13:54, 1 user, load average: 0.80, 1.08, 0.53 Tasks: 77 total, 5 running, 72 sleeping, 0 stopped, 0 zombie %Cpu0 :100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu1 : 93.2 us, 6.8 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 : 95.0 us, 5.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 : 98.3 us, 1.7 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 8178228 total, 380196 used, 7798032 free, 28136 buffers KiB Swap: 0 total, 0 used, 0 free, 251708 cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8400 root 20 0 7172 612 520 R 101.7 0.0 0:03.10 md5sum 8401 root 20 0 7172 612 520 R 101.7 0.0 0:03.10 md5sum 8399 root 20 0 7172 616 520 R 98.4 0.0 0:03.06 md5sum 8402 root 20 0 7172 612 520 R 98.4 0.0 0:03.09 md5sum
Để sử dụng cpulimit cho mỗi quá trình, hãy đặt nó trước lệnh:
for j in `seq 1 4`; do cpulimit -l 40 md5sum /dev/zero & done
Như vậy, mỗi quy trình sử dụng nhiều nhất 40% mỗi stream và không làm quá tải server :
top - 23:31:03 up 7 days, 13:55, 1 user, load average: 2.68, 1.72, 0.82 Tasks: 81 total, 5 running, 76 sleeping, 0 stopped, 0 zombie %Cpu0 : 39.4 us, 0.7 sy, 0.0 ni, 59.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.3 st %Cpu1 : 38.7 us, 1.7 sy, 0.0 ni, 59.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 : 39.4 us, 1.3 sy, 0.0 ni, 59.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 : 39.4 us, 1.7 sy, 0.0 ni, 58.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 8178228 total, 380452 used, 7797776 free, 28144 buffers KiB Swap: 0 total, 0 used, 0 free, 251708 cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8442 root 20 0 7172 616 520 R 40.4 0.0 0:06.10 md5sum 8440 root 20 0 7172 612 520 R 40.0 0.0 0:06.09 md5sum 8435 root 20 0 7172 616 520 R 39.7 0.0 0:06.09 md5sum 8436 root 20 0 7172 612 520 R 39.7 0.0 0:06.10 md5sum
Và bạn đã hoàn tất!
Các tin liên quan
Cách cài đặt diễn đàn phpBB® trên Ubuntu 12.102013-06-06
Cách cài đặt Simple Machines® trên Ubuntu 12.10
2013-06-06
Cách thiết lập Red5 trên Ubuntu 12.10
2013-05-31
Cách thiết lập Tiki Wiki trên Ubuntu 12.10
2013-05-31
Cách cài đặt Webmin trên Ubuntu Cloud Server
2013-05-07
Cách tạo plugin Nagios với Bash trên Ubuntu 12.10
2013-04-29
Cách tạo plugin Nagios với Perl trên Ubuntu 12.10
2013-04-29
Cách tạo plugin Nagios với Ruby trên Ubuntu 12.10
2013-04-29
Cách cài đặt và sử dụng tmux trên Ubuntu 12.10
2013-04-18
Cách quản lý tệp log với Logrotate trên Ubuntu 12.10
2013-04-18