linux renice 命令詳解
功能說明:調整程序優先級。
語 法:renice [優先等級][-g <程序群組名稱>...][-p <程序識別碼>...][-u <用戶名稱>...]
補充說明:renice指令可重新調整程序執行的優先權等級。預設是以程序識別碼指定程序調整其優先權,您亦可以指定程序群組或用戶名稱調整優先權等級,並修改所有隸屬於該程序群組或用戶的程序的優先權。等級范圍從-20--19,只有系統管理者可以改變其他用戶程序的優先權,也僅有系統管理者可以設置負數等級。
參 數:
-g <程序群組名稱> 使用程序群組名稱,修改所有隸屬於該程序群組的程序的優先權。
-p <程序識別碼> 改變該程序的優先權等級,此參數為預設值。
-u <用戶名稱> 指定用戶名稱,修改所有隸屬於該用戶的程序的優先權。
linux安全網 www.jb51.net 收集整理
一開始執行程式就立即給予一個特定的 nice 值:用 nice 命令;
調整某個已經存在的 PID 的 nice 值:用 renice 命令。
推薦閱讀一:linux進程cpu資源分配命令nice,renice,taskset
進程cpu資源分配就是指進程的優先權(priority)。優先權高的進程有優先執行權利。配置進程優先權對多任務環境的linux很有用,可以改善系統性能。還可以把進程運行到指定的CPU上,這樣一來,把不重要的進程安排到某個CPU,可以大大改善系統整體性能。
一、先看系統進程:
PR 就是 Priority 的簡寫,而 NI 是 nice 的簡寫。這兩個值決定了PR的值,PR越小,進程優先權就越高,就越“優先執行”。換算公式為:PR(new) = PR(old) + NI
---------------------------------------------------------------------------
二、修改進程優先級的命令主要有兩個:nice,renice
1、一開始執行程序就指定nice值:nice
Java代碼
nice -n -5 /usr/local/mysql/bin/mysqld_safe &
linux nice 命令詳解
功能說明:設置優先權。
語 法:nice [-n <優先等級>][--help][--version][執行指令]
補充說明:nice指令可以改變程序執行的優先權等級。
參 數:-n<優先等級>或-<優先等級>或--adjustment=<優先等級> 設置欲執行的指令的優先權等級。等級的范圍從-20-19,其中-20最高,19最低,只有系統管理者可以設置負數的等級。
--help 在線幫助。
--version 顯示版本信息。
---------------------------------------------------------------------------
2.1、調整已存在進程的nice:renice
Java代碼
renice -5 -p 5200
#PID為5200的進程nice設為-5
linux renice 命令詳解
功能說明:調整優先權。
語 法:renice [優先等級][-g <程序群組名稱>...][-p <程序識別碼>...][-u <用戶名稱>...]
補充說明:renice指令可重新調整程序執行的優先權等級。預設是以程序識別碼指定程序調整其優先權,您亦可以指定程序群組或用戶名稱調整優先權等級,並修改所有隸屬於該程序群組或用戶的程序的優先權。等級范圍從-20--19,只有系統管理者可以改變其他用戶程序的優先權,也僅有系統管理者可以設置負數等級。
參 數:
-g <程序群組名稱> 使用程序群組名稱,修改所有隸屬於該程序群組的程序的優先權。
-p <程序識別碼> 改變該程序的優先權等級,此參數為預設值。
-u <用戶名稱> 指定用戶名稱,修改所有隸屬於該用戶的程序的優先權。
2.2、也可以用top命令更改已存在進程的nice:
Java代碼
top
#進入top後按"r"-->輸入進程PID-->輸入nice值
三、把進程運行到指定CPU(即修改進程的"CPU親和性"):taskset
兩個名詞
SMP (Symmetrical Multi-Processing):指在一個計算機上匯集了一組處理器(多CPU),各CPU之間共享內存子系統以及總線結構。
CPU affinity:中文喚作“CPU親和性”,是指在CMP架構下,能夠將一個或多個進程綁定到一個或多個處理器上運行。
請先確定你的cpu核心及命名(例如四個核心:0,1,2,3):cat /proc/cpuinfo
Java代碼
taskset -cp 1 5200
#把PID為5200的進程運行到CPU#1上
#也可以在啟動進程時指定:
taskset -c 1 /etc/init.d/mysql start
推薦閱讀二 關於程序的執行順序nice renice
關於程序的執行順序:
還記得我們提過的多人多工環境吧?因為目前的 x86 平台的 CPU 可以做到多工的行為, 所以啰,我們的 Linux 可以在 x86 上面‘同時進行多個工作’的呢!那麼多個工作是如何進行的呢? 其實每個工作都會進入到 CPU 的工作排程當中,並等待 CPU 來執行, 而 CPU 會根據每個工作的優先執行序 (priority) 來判斷誰比較重要, 所以某個工作就可能會比較優先被執行完畢啦!
也就是說, Linux 系統中,每個 process 都會擁有一個所謂的‘優先執行序 (priority)’的屬性, 利用該屬性來讓 CPU 判斷那個工作是比較重要的,那個工作在一群工作當中就會優先被執行, 也讓系統資源可以分配的更恰當。我們可以使用 ps 還觀察優先執行序:
[root@linux ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 18851 18827 0 77 0 - 1302 wait pts/0 00:00:00 su
4 S 0 18852 18851 0 76 0 - 1349 wait pts/0 00:00:00 bash
4 R 0 19510 18852 0 76 0 - 1111 - pts/0 00:00:00 ps
其中,那個 PRI 就是 Priority 的簡寫,而 NI 是 nice 的簡寫,這兩個東西是湊在一起才產生目前的 PRI 值的! PRI 越小時,代表該程序可以具有‘越早被優先執行’的意思,只是 PRI 是由系統動態產生的, 並不會是一直固定的值喔。至於那個 NI (nice) 則是我們操作值額外給予的一個數值, 他可以影響 PRI 的值,基本上,他的相關性是這樣的:
* PRI(new) = PRI(old) + nice
不過您要特別留意到,如果原本的 PRI 是 50 ,並不是我們給予一個 nice = 5 ,就會讓 PRI 變成 55 喔! 因為 PRI 是系統‘動態’決定的,所以,雖然 nice 值是可以影響 PRI ,不過, 最終的 PRI 仍是要經過系統分析後才會決定的。另外, nice 值是有正負的喔,而既然 PRI 越小越早被執行, 所以,當 nice 值為負值時,那麼該程序就會降低 PRI 值,亦即會變的較優先被處理。此外,您必須要留意到: