只是我還是 renice 的手冊頁模棱兩可?
我正在考慮改進一些程序,以便它們在伺服器的重負載下保持響應。
我閱讀了 renice 的簡短手冊頁,但每次重新閱讀時,我對它的理解越來越少。它說它改變了調度優先級。然而,priority 是 niceness 的反面,所以這個命令叫做 renice,這很令人驚訝。進一步閱讀,他們在描述部分討論了調度優先級。
有用的優先級是:19(受影響的程序只有在系統中沒有其他需要時才會執行),0(“基本”調度優先級),任何負面的(使事情進展得非常快)。
這與 top 命令中的 niceness 和優先級之間的關係不符。從人頂:
任務的好價值。負的 nice 值意味著更高的優先級,而正的 nice 值意味著更低的優先級。該欄位中的零僅表示在確定任務的調度能力時不會調整優先級。
在 top 的世界裡,priority 是 niceness 的對立面,單獨的 PR 欄位顯示了priority 值,對於執行速度更快的程序來說,priority 值越高。
在 renice 的世界中,優先級和友善被討論為好像它們是相同的值。事實上,renice -n 顯然等同於 renice –priority。
renice 手冊頁中給出的範例在許多系統上似乎很有用:提高根程序的速度。但是,如果我沒記錯的話,它實際上是在降低速度。我覺得這是一個誤導性的例子,或者至少解釋得不好。
折騰值是增量或優先級的事實,沒有命令標誌來區分兩者。所以可以使用renice +1,也可以使用renice -1。但是 -1 可以是優先級或增量,那麼它被解釋為哪個?我只能猜測
renice -1 root
會做什麼,或者通過實驗確定它。似乎沒有合乎邏輯的方法可以從手冊頁中確定這將做什麼。請一位“好”的人解釋一下什麼命令會使根程序執行得更快一些,以及我如何解釋手冊頁?
作為非 root,我不應該能夠獲得更快的優先級。所以,確實一個正數更慢,負數更快:
$ renice -n -10 6341 renice: failed to set priority for 6341 (process ID): Permission denied $ renice -n +10 6341 6341 (process ID) old priority 0, new priority 10 $ renice -n 0 6341 renice: failed to set priority for 6341 (process ID): Permission denied
這也與
ps
顯示的內容相匹配,它SN+
現在為該過程顯示(睡覺,很好,在前台)。手冊頁描述N
為“低優先級(對其他使用者很好)”。給它一個負數作為 root 將它變成S<+
,其中<
是“高優先級(對其他使用者不好)”你是對的,文件看起來確實令人困惑。BSD 似乎具有基本相同的手冊頁並沒有幫助
renice
,因此很難找到更好的描述。POSIX 文本似乎也不清楚,它將nice 值定義為3.244 Nice Value
一個數字,用於建議系統更改程序調度。在調度程序執行時,數值較小的值會為程序提供額外的偏好。數值較大的值會降低偏好並使程序不太可能執行。
然後說
renice -n
_指定如何調整指定程序的 nice 值。increment 選項參數是一個正數或負數十進制整數,用於修改指定程序的 nice 值。
正增量值將導致較低的 nice 值。負增量值可能需要適當的權限並且會導致更高的 nice 值。
第二段似乎與好的價值定義相矛盾。