kiểm soát mức độ ưu tiên của các ứng dụng bằng cách sử dụng các nhóm


8

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)?


Điều chỉnh CPU là trường hợp sử dụng tốt cho các nhóm: kennystechtalk.blogspot.co.uk/2015_04_01_archive.html
Ken Sharp

Câu trả lời:


8

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ụ sshdvà 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/cgroupsthư mục trong cây nguồn Linux.


cảm ơn bạn. ví dụ sshd là thú vị và đưa ra một suy nghĩ liên quan khác. một khía cạnh tôi đã xem xét là đảm bảo các tài nguyên khác được phân bổ hợp lý - tôi cho rằng ai đó có kiến ​​thức không đầy đủ về hồ sơ của ứng dụng có thể phá hủy bằng cách chỉ phân bổ tài nguyên cho CPU (trong ví dụ này) và không phân bổ cho I / O (nói mạng). Nếu vậy - có hồ sơ nổi tiếng cho các nhóm được xuất bản ở bất cứ đâu?
Johnnie

@John câu hỏi thú vị thực sự. Bạn có thể muốn kiểm tra các bản phân phối có 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)".
peterph

1
@kokbira phụ thuộc vào cấp độ nào - nói chung bạn viết vào hệ thống giả cgroupmà 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 .
peterph 27/12/18

1
@kokbira hệ điều hành thực hiện những gì bạn nói với nó (ít nhất là một điều tốt - có một số điều làm rất nhiều việc khác mà bạn không nói với họ, nhưng đó là một câu chuyện khác). Ý tưởng là, nếu bạn chạy một ứng dụng, bạn muốn nó nhận được bất cứ thứ gì nó cần để thực hiện bất cứ điều gì bạn mong muốn. Nếu ứng dụng hoạt động sai, thì tùy thuộc vào nhà điều hành hệ thống (điều này xảy ra với bạn trong trường hợp này) để làm điều gì đó về nó. Các tác giả phân phối có thể đưa ra một số heurestics làm thế nào để nắm bắt loại vấn đề này, nhưng nó sẽ gây ra nhiều vấn đề hơn mà nó sẽ khắc phục.
peterph 27/12/18

1
@kokbira cũng như đối với Firefox, tôi khuyên bạn nên sử dụng một số addon giúp giảm tải cho trình duyệt và do đó toàn bộ hệ thống. Từ kinh nghiệm của tôi, nguồn gốc NoScript & uBlock là đủ. Đặc biệt là NoScript trong "chặn mọi thứ theo mặc định" thật tuyệt vời - chỉ cần kích hoạt mức tối thiểu bạn cần để làm việc với các trang web bạn đang sử dụng và bạn có thể dễ dàng truy cập hàng trăm tab trên hệ thống RAM 8GB và vẫn hoạt động khá tốt. Thêm vào đó, bạn có mức độ bảo vệ bổ sung từ tất cả các loại rác JS mà hầu hết các trang web sử dụng hiện nay cho các hiệu ứng ưa thích không cần thiết.
peterph 27/12/18
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.