Linux
Linux 會自動改變程序的友好度嗎?
setpriority
我知道您可以使用ornice
或更改流程的好壞renice
。但是,Linux 會在沒有使用者輸入的情況下自動調整/更改程序的好壞嗎?
我有一個
setpriority
在 C 中使用的過程,如下所示:setpriority(PRIO_PROCESS, 0, -1)
當程序執行時,我可以通過執行htop看到它的 niceness 值現在是 -1 。
在調查遠端機器上的崩潰時,向我提供了 htop 的輸出。我注意到這個程序的 niceness 值在一個實例上更改為 0,在另一個實例上更改為 6。我想知道這是否由核心更改,或者更改此值的唯一方法是讓使用者或腳本故意進行更改。
據我所知,Linux 核心不會改變程序的優先級,我不明白為什麼會這樣,因為它不必降低程序的優先級。niceness 是提供給核心的資訊,告訴它該程序願意變得多好。為了改變程序的優先級,核心調度器可以自由地考慮這些資訊,它不需要改變它的值。
另一方面,在使用者領域,有像AND這樣的守護程序,它們的任務是根據管理員設置的規則來重新處理程序。你的伺服器上安裝了這樣的守護程序嗎?
但是,AND 守護程序不會拒絕 root 擁有的程序,並且由於您設置了
-1
with的優先級setpriority()
,我假設這裡就是這種情況。因此,我看到這種友好變化的唯一原因是使用者互動。也就是說,由於您正在使用,因此可能會通過按鍵 或鍵
htop
無意中更改了該過程。]``F8