Tôi muốn hiểu các nhóm tốt hơn và muốn hiểu các trường hợp sử dụng để áp dụng các nhóm.
Có phải các nhóm là một cách tốt để ưu tiên các ứng dụng khác nhau (nghĩa là ưu tiên cao hơn cho các loại ứng dụng cụ thể như máy chủ web)?
Tôi muốn hiểu các nhóm tốt hơn và muốn hiểu các trường hợp sử dụng để áp dụng các nhóm.
Có phải các nhóm là một cách tốt để ưu tiên các ứng dụng khác nhau (nghĩa là ưu tiên cao hơn cho các loại ứng dụng cụ thể như máy chủ web)?
Câu trả lời:
Có một số cách sử dụng cho các nhóm . Từ quản trị hệ thống, có lẽ điều quan trọng nhất là giới hạn tài nguyên - ví dụ cổ điển ở đây là truy cập cpu. Nếu bạn tạo một nhóm ví dụ sshd
và cung cấp cho nó một số chia sẻ thời gian CPU không đáng kể (so với các nhóm khác hoặc mặc định theo đó tất cả các quy trình chưa được sắp xếp), bạn được đảm bảo có thể đăng nhập ngay cả khi máy sẽ chạy một nhiệm vụ cần nhiều CPU.
Thú vị hơn, nếu bạn cung cấp cho quá trình "truy cập từ xa" này chia sẻ CPU cao hơn nhiều thì phần còn lại, bạn sẽ có thể đăng nhập gần như ngay lập tức (vì daemon ssh sẽ được ưu tiên hơn các quy trình còn lại đang chạy) trong khi bạn không bị tổn thương sức mạnh tính toán tổng thể của máy, vì các tài nguyên chỉ được phân bổ trên cơ sở theo nhu cầu. Bạn thường muốn làm điều này cùng với ưu tiên I / O (bao gồm cả mạng). Tuy nhiên, như John chỉ ra một cách chính xác trong bình luận bên dưới, người ta không muốn làm những điều này một cách bất cẩn (vì nó có thể quay trở lại một cách bất ngờ). Điều quan trọng cần lưu ý là các nhóm được kế thừa theo mặc định - tức là người ta không muốn bắt đầu một bộ nhớ / CPU hog từ một phiên ssh như vậy. Tuy nhiên, đối với điều này, có các cơ chế có thể gán các quy trình cho các nhóm khi chúng bắt đầu.
Một cách sử dụng khác là cách ly các tiến trình với nhau - kết hợp với các tính năng khác (cách ly không gian tên) trong các nhân Linux gần đây, chúng được sử dụng để tạo ảo hóa cấp hệ điều hành như LXC (Bộ chứa Linux) .
Ngoài ra, bạn có thể thực hiện nhiều công cụ kế toán và kiểm soát khác nhau (đóng băng một số nhóm quy trình, gán chúng cho các lõi CPU cụ thể, v.v.).
Hai liên kết ở đây, nên là nơi bắt đầu hợp lý nếu bạn đang tìm kiếm thêm thông tin. Bạn cũng có thể muốn kiểm tra Documentation/cgroups
thư mục trong cây nguồn Linux.
systemd
(ab) sử dụng các nhóm cho mục đích riêng của mình - các tệp đơn vị systemd cho các dịch vụ có thể cung cấp một số manh mối về những gì có thể hợp lý. Nhưng cuối cùng, quản trị viên hệ thống luôn phải học một cách khó khăn, điều thực sự không phải là "Ý tưởng tốt (TM)".
cgroup
mà bạn có thể cần phải gắn kết đầu tiên. Trong hầu hết các trường hợp ngày nay, hệ thống init thực hiện điều đó cho bạn và thường sử dụng các nhóm theo một cách nào đó. Câu trả lời dứt khoát duy nhất là đọc tài liệu: kernel docs , OpenRC @ Gentoo , systemd @ freedesktop .