Nhân Linux từ phiên bản 2.6.24 có tính
năng mới gọi là “control groups” thường được gọi là “cgroups”. Cgroups
cho phép bạn có thể cấp phát tài nguyên – như thời gian sử dụng CPU, bộ
nhớ hệ thống, băng thông mạng. Bạn có thể theo dõi cgroups, từ chối
cgroups sử dụng tài nguyên nhất định và ngay cả việc cấu hình lại
cgroups trên một hệ thống đang chạy.
Sử dụng cgroups, người quản trị hệ thống
có thể điều khiển các việc như cấp phát, ưu tiên, từ chối, quản lí và
theo theo dõi tài nguyên hệ thống. Tài nguyên phần cứng sẽ được chia sẽ
hiệu quả giữa các người dùng và tăng khả năng ổn định của hệ thống.
Tương tự như các tiến trình, cgroups có
cấu trúc phân cấp, những cgroups con (child) sẽ thừa hưởng các thuộc
tính từ cgroups cha (parent). Trong cgroups, các tài nguyên hệ thống
được gọi bằng thuật ngữ “subsystem” hay “resource controller” và các
tiến trình trên hệ thống được gọi là “task”.
Cgroups được tổ chức có cấp bậc, các child cgroup thừa hưởng các thuộc tính từ parent cgroup. Trên một hệ thống có thể có nhiều parent cgroup.
Các subsystem phổ phiến trên cgroups:
- cpu: sử dụng OS scheduler để cấp phát CPU cho các “task”.
- cpuacct: báo cáo về trình trạng sử dụng CPU của các “task”.
- cpuset: giới hạn việc sử dụng số lượng CPU trên hệ thống nhiều CPU.
- memory: giới hạn việc sử dụng bộ nhớ hệ thống.
- blkio: giới hạn việc truy cập nhập/xuất(I/O) đến các thiết bị như ổ đĩa cứng.
- net_cls: đánh số classid cho từng gói tin nhằm giúp Linux Traffic Controller(tc) có thể biết gói tin đến từ cgroup nào.
- net_prio: giới hạn băng thông mạng theo độ ưu tiên.
Cgroups được thiết kế theo bốn quy tắc sau:
- Quy tắc thứ 1: Một hệ thống cấp bậc(hierarchy) có thể một hoặc nhiều “subsystem” gắn vào.
- Quy tắc thứ 2: Một “subsystem” bất kì không thể gắn vào nhiều hơn một hệ thống cấp bật nếu một trong hệ thống cấp bật đó đang có một “subsystem” khác loại đang gắn vào.
- Quy tắc thứ 3: Mỗi “task” trên hệ thống chỉ được thuộc về một cgroup duy nhất trong cùng hệ thống cấp bậc.
- Quy tắc thứ 4: Khi một “parent task” (Process) tạo ra(fork) một “child task” thì “child task” này sẽ tự động nằm trong cgroup mà “parent task” đang thuộc về .
Tài liệu tham khảo:
Nguồn : http://mrhien.info/blog/gioi-thieu-ve-linux-control-groups-cgroups/
No comments:
Post a Comment