Thứ bảy, 08/06/2013 | 00:00 GMT+7

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!


Tags:

Các tin liên quan

Cách cài đặt diễn đàn phpBB® trên Ubuntu 12.10
2013-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