1. 程式人生 > >NICE值 linux top命令

NICE值 linux top命令

部門有人抱怨自己的程序在Linux上執行過慢,top檢視執行情況。

檢視Cpu一欄發現ni佔用過高,ni又是什麼呢?

ni: 使用者程序空間內改變過優先順序的程序佔用CPU百分比

網上對ni的解釋似乎很難理解,那我們換個角度來看。

假設在一個CPU輪轉中,有2個runnable的程序A和B,如果他們的nice值都為0,假設核心會給他們每人分配1k個cpu時間片。但是假設程序A的為0,但是B的值為-10,那麼此時CPU可能分別給A和B分配1k和1.5k的時間片。故可以形象的理解為,nice的值影響了核心分配給程序的cpu時間片的多少,時間片越多的程序,其優先順序越高,其優先順序值(PRI)越低。ni,就是改變過優先順序的程序的佔用CPU的百分比,如上例中就是0.5k/2.5k=1/5=20%。

由此可見有人改動了相應的優先順序導致其它使用者分到的cpu時間片過低導致。

此時可以更改程序優先順序來加速程序執行。

renice -15 -p 12866

把程序號為12866的程序優先順序提高。

PRI:PRI是比較好理解的,即程序的優先順序,或者通俗點說就是程式被CPU執行的先後順序,此值越小程序的優先級別越高。那NI呢?就是我們所要說的nice值了,其表示程序可被執行的優先順序的修正數值。如前面所說,PRI值越小越快被執行,那麼加入nice值後,將會使得PRI變為:PRI(new)=PRI(old)+nice。由此看出,PR是根據NICE排序的,規則是NICE越小PR越前(小,優先權更大),即其優先順序會變高,則其越快被執行。如果NICE相同則程序uid是root的優先權更大。

NICE:在LINUX系統中,Nice值的範圍從-20到+19(不同系統的值範圍是不一樣的),正值表示低優先順序,負值表示高優先順序,值為零則表示不會調整該程序的優先順序。具有最高優先順序的程式,其nice值最低,所以在LINUX系統中,值-20使得一項任務變得非常重要;與之相反,如果任務的nice為+19,則表示它是一個高尚的、無私的任務,允許所有其他任務比自己享有寶貴的CPU時間的更大使用份額,這也就是nice的名稱的來意。

PS:程序在建立時被賦予不同的優先順序值,而如前面所說,nice的值是表示程序優先順序值可被修正資料值,因此,每個程序都在其計劃執行時被賦予一個nice值,這樣系統就可以根據系統的資源以及具體程序的各類資源消耗情況,主動干預程序的優先順序值。在通常情況下,子程序會繼承父程序的nice值,比如在系統啟動的過程中,init程序會被賦予0,其他所有程序繼承了這個nice值(因為其他程序都是init的子程序)。