首先用top或者ps -l查看進程會發現有PR(PRI) NI兩個字段:
oracle
NI 是優先值,是用戶層面的概念, PR是進程的實際優先級, 是給內核(kernel)看(用)的。ide
通常狀況下,PR=NI+20, 若是一個進程的優先級PR是20, 那麼它的NI(nice)值就是20-20=0。spa
進程調度優先級是從-20到19,一共40個級別,數字越大,表示進程的優先級越低。默認時候,進程的優先級是0。查看進程優先級有兩個辦法:ps和top。top命令顯示的NI列的值。或者可使用ps -efl來查看,也是在ni列表示了進程的優先級。
進程的優先級能夠在程序運行的時候設置,也能夠在程序運行過程當中動態的修改。
運 行的時候設置進程的優先級可使用nice命令,好比要使得top命令運行時候的優先級是5而不是默認的0,則可使用nice -n 5 top,來使得top命令運行在5的優先級別。若是top命令已經在運行,則有兩個辦法能夠動態的調整進程的級別。能夠在top中輸入r命令,而後按照提 示輸入top命令對應的進程號,再按照提示輸入要調整到哪一個級別。另外一個方法是使用renice命令,幫助以下:
[oracle@rac1 ~]$ renice --help
usage: renice priority [ [ -p ] pids ] [ [ -g ] pgrps ] [ [ -u ] users ]
此 命令使用也很簡單,能夠調整單個進程,一個用戶或者一個組的全部進程的優先級。示例以下:orm
#renice +10 -u oracle,此命令把oracle用戶的全部進程的優先級所有調爲10,包括新建立的和已經在運行的oracle用戶的全部進程。此處的+10並非表 示在現有級別上再往上調整10個級別,而是調整到正10的級別,因此屢次運行此命令,進程的優先級不會再發生變化,將一直停留在+10級別。進程
#renice 10 18625 將PID爲18625的進程優先級調整爲10it
注意:若是不是root權限,則侄只能降調度優先級而不能提升,即便是本身用戶的進程,本身把它調高了後,優先級也不能再被調會原來的值了,除非使用root用戶來調回去。
系統重啓後,對進程優先級的調整所有失效,全部進程的調度回到默認的初始級別。io