Linux có tự động thay đổi quy trình không?


7

Tôi biết bạn có thể thay đổi một quá trình trị nice với setpriorityhoặc nicehoặc renice.

Tuy nhiên, Linux có tự động điều chỉnh / thay đổi độ độc đáo của quy trình mà không cần người dùng nhập không?

Tôi có một quy trình mà tôi sử dụng setprioritytrong C, như vậy:

setpriority(PRIO_PROCESS, 0, -1)

Khi quá trình đang chạy, tôi có thể thấy giá trị độc đáo của nó bây giờ là -1 bằng cách chạy htop .

Trong khi điều tra một sự cố trên một máy từ xa, đầu ra của htop đã được cung cấp cho tôi. Tôi nhận thấy rằng giá trị độ đẹp cho quy trình này đã thay đổi trong một trường hợp thành 0 và trong trường hợp khác thành 6. Tôi muốn biết liệu điều này có bị thay đổi bởi kernel hay không hoặc cách duy nhất để thay đổi giá trị này là bằng cách sử dụng người dùng hoặc kịch bản cố tình thực hiện thay đổi.


1
Tôi không nghĩ kernel làm điều đó, nhưng bộ lập lịch CPU sẽ chọn những gì cần ưu tiên. Có rất nhiều bộ lập lịch CPU có sẵn. Một công cụ tự động điều chỉnh độ đẹp sẽ rất thú vị.
Alexander

1
Như bạn, tôi nghi ngờ hạt nhân không tự thay đổi nó. Tôi hiểu bộ lập lịch có thuật toán riêng để ưu tiên các quy trình. Tôi đang hỏi bởi vì tôi đang xem một số nhật ký cho thấy rõ ràng sự độc đáo của một quy trình cụ thể đã thay đổi. Tôi muốn loại trừ một người nào đó tự thay đổi nó bằng cách sử dụng một cái gì đó như là gia hạn.
Luis

1
@Leco Thêm thông tin này vào câu hỏi và cũng cung cấp một mẫu nhỏ từ nhật ký của bạn cho thấy giá trị độ đẹp đã thay đổi.
Kusalananda

@roaima Ưu tiên quá trình được đặt trong mã C với setp Warriority. Quá trình độc đáo được quan sát với htop.
Luis

Câu trả lời:


4

Theo hiểu biết của tôi, nhân Linux không thay đổi tính độc đáo của một quy trình và tôi không hiểu tại sao nó lại không phải hạ thấp mức độ ưu tiên của quy trình. Tính độc đáo là một thông tin được cung cấp cho kernel, cho nó biết quá trình đó sẵn sàng như thế nào. Bộ lập lịch kernel có thể tự do đưa thông tin này vào tài khoản theo cách nó muốn để thay đổi mức độ ưu tiên của một quy trình, nó không cần thay đổi giá trị của nó.

Mặt khác, trong vùng đất của người dùng, có các daemon như AND có nhiệm vụ làm lại các quy trình theo các quy tắc được thiết lập bởi quản trị viên. Bạn có cài đặt trình nền như vậy trên máy chủ của mình không?

Tuy nhiên, trình nền AND không làm mới các tiến trình thuộc sở hữu của root và vì bạn đặt mức độ ưu tiên -1với setpriority(), tôi cho rằng đây là trường hợp ở đây. Do đó, lý do duy nhất tôi thấy cho sự thay đổi về tính độc đáo đó là sự tương tác của người dùng.

Điều đó nói rằng, vì bạn đang sử dụng htop, có thể quá trình đã bị thay đổi vô tình bằng cách nhấn ]phím hoặc F8phím.

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.