Oh nhưng cgroups rất dễ :) Cài đặt gói libcgroup. Tạo một /etc/cgconfig.conf:
mount {
cpu = /cgroup/cpu_and_mem;
cpuacct = /cgroup/cpu_and_mem;
memory = /cgroup/cpu_and_mem;
}
group sshd {
cpu {
cpu.shares="500";
}
cpuacct {
cpuacct.usage="0";
}
memory {
memory.limit_in_bytes="1G";
}
}
group nosshd {
cpu {
cpu.shares="500";
}
cpuacct {
cpuacct.usage="0";
}
memory {
memory.limit_in_bytes="1G";
}
}
Bắt đầu cgconfig
quá trình sẽ tạo cấu trúc phân cấp, nhóm và đặt giới hạn. Nếu thành công, bạn có hai nhóm, cả hai nhóm có 50% CPU được chỉ định và 1G bộ nhớ khả dụng (không biết dung lượng bộ nhớ khả dụng thực tế của bạn là bao nhiêu; giả sử đó là 2G trong ví dụ này). Bây giờ bạn chỉ cần di chuyển tất cả các tác vụ (tức là tất cả các quy trình đang chạy trên hệ thống) từ nhóm gốc vào nhóm nosshd:
cgroup]# cat tasks >> nosshd/tasks
cgroup]# echo > tasks
Sau đó, bạn chỉ cần lấy PID của sshd
quá trình và di chuyển thông tin về tệp tác vụ sshd:
cgroup]# echo $PID >> sshd/tasks
Ta-da, bạn đã hoàn thành. Bây giờ bạn có thể yên tâm rằng sshd sẽ luôn có 50% CPU và 1G bộ nhớ.