linux中設定程式排程的優先順序別

zhang41082發表於2019-01-08

資料庫是執行在作業系統上的,而且和作業系統緊密結合,因此有時候對資料庫的最佳化不得不深入到作業系統層面。
在查詢別的資料的時候看見了eygle曾經寫過AIX上透過調整LGWR程式的優先順序來解決大事務量系統的效能問題,於是看了點linux下程式優先順序相關的概念。

[@more@]

linux下的程式排程優先順序是從-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 ]
此命令使用也很簡單,可以調整單個程式,一個使用者或者一個組的所有程式的優先順序。示例如下:renice +10 -u oracle,此命令把oracle使用者的所有程式的優先順序全部調為10,包括新建立的和已經在執行的oracle使用者的所有程式。此處的+10並不是表示在現有級別上再往上調整10個級別,而是調整到正10的級別,所以多次執行此命令,程式的優先順序不會再發生變化,將一直停留在+10級別。

注意:如果不是root許可權,則侄只能降排程優先順序而不能提高,即使是自己使用者的程式,自己把它調高了後,優先順序也不能再被調會原來的值了,除非使用root使用者來調回去。
系統重啟後,對程式優先順序的調整全部失效,所有程式的排程回到預設的初始級別。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25016/viewspace-998680/,如需轉載,請註明出處,否則將追究法律責任。

相關文章