如何驗證 nice
是否有效?
查看在具有共享資源的系統上執行的不同作業,似乎好的值被忽略了。許多將 nice 設置為 19 的作業以 100% 的 cpu 負載執行,而其他許多將 nice 設置為 0 的作業以低至 10% 的 cpu 負載執行。
所有這些程序都要求很高,並且在空閒系統上執行會最大化分配給它的每個 cpu(例如NAMD)。
我在這裡讀到
“…儘管
$$ a nice $$值是可調的,它可以被 Linux 實現中的核心調度程序忽略。”
這是真的?核心是否有可能忽略不錯的價值?看來這就是正在發生的事情,但我怎麼能確定呢?我不想在沒有更確定的情況下將其變成系統管理員的問題。我已經閱讀了相關的文章,討論如何很好地工作?並
nice
沒有真正幫助 Linux,但這些沒有討論不處理 CPU 負載。會不會是一旦一個任務獲得資源,它會在重新分配給更高優先級的任務之前保留它們一段時間?低優先級的任務已經執行了好幾天,而高優先級的任務反复啟動許多短時間但要求苛刻的計算,這些計算執行時間不到 10 分鐘。是不是在短任務之間,系統將資源分配給低優先級任務,然後再保留它們?
我相信我遇到的系統是在StackIQ包裝的 CentOS 6.5 安裝上(儘管我很容易在某些細節上被誤解)。
nice 值不會告訴您有關程序產生的實際 cpu 負載的任何資訊。
Nice-ness 就是你想的那樣:程序在特定工作負載下的行為方式。
更準確地說:
- 如果調度了具有高 nice-value(== 較低調度可能性)的程序,它將持有 cpu,直到具有較低 nice-value 和/或更高優先級的程序請求 cpu 並可能創建 100% 負載。
- 如果一個具有較低nice-value(==較高的調度可能性)的程序放棄了cpu,它可能沒有在高峰期使用它。
這就是為什麼你看到低級程序比高級程序使用更少的 cpu 的原因:更好的程序會更容易放棄,但它顯然目前還有更多工作要做……
您系統中的許多程序只是坐等事情發生。這是大多數伺服器處理器或守護程序所做的(例如 ssh、mail、X)。
如果您在文字處理器中工作,它會一直等待,直到您點擊某個位置或鍵入某些內容。大多數情況下,該程序沒有被調度,並且使用的 CPU 時間非常少。您可以將此過程的 nice-value 設置為零,它不會有任何明顯的影響。
但是,如果您將使用程序來渲染 3-D 高解析度圖像或處理動畫或影片,那麼 nice-value 將產生效果。
具有共享資源的程序面臨另一個問題:共享資源。當另一個程序正在使用它時,他們經常不得不等待資源。
硬碟就是一個例子。如果一個程序開始一個硬碟操作(例如讀取或寫入一個文件),那麼它將被系統掛起,直到操作完成。即使是零不錯的價值也無濟於事。當程序掛起時,它不會使用任何 CPU 時間。
的效果
nice
可能非常微妙;-)