Linux

Linux 會自動改變程序的友好度嗎?

  • January 13, 2017

setpriority我知道您可以使用ornice或更改流程的好壞renice

但是,Linux 會在沒有使用者輸入的情況下自動調整/更改程序的好壞嗎?

我有一個setpriority在 C 中使用的過程,如下所示:

setpriority(PRIO_PROCESS, 0, -1)

當程序執行時,我可以通過執行htop看到它的 niceness 值現在是 -1 。

在調查遠端機器上的崩潰時,向我提供了 htop 的輸出。我注意到這個程序的 niceness 值在一個實例上更改為 0,在另一個實例上更改為 6。我想知道這是否由核心更改,或者更改此值的唯一方法是讓使用者或腳本故意進行更改。

據我所知,Linux 核心不會改變程序的優先級,我不明白為什麼會這樣,因為它不必降低程序的優先級。niceness 是提供給核心的資訊,告訴它該程序願意變得多好。為了改變程序的優先級,核心調度器可以自由地考慮這些資訊,它不需要改變它的值。

另一方面,在使用者領域,有像AND這樣的守護程序,它們的任務是根據管理員設置的規則來重新處理程序。你的伺服器上安裝了這樣的守護程序嗎?

但是,AND 守護程序不會拒絕 root 擁有的程序,並且由於您設置了-1with的優先級setpriority(),我假設這裡就是這種情況。因此,我看到這種友好變化的唯一原因是使用者互動。

也就是說,由於您正在使用,因此可能會通過按鍵 或鍵htop無意中更改了該過程。]``F8

引用自:https://unix.stackexchange.com/questions/336164