linux renice 命令詳解

  功能說明:調整程式優先順序。

  語  法:renice [優先等級][-g <程式群組名稱>...][-p <程式識別碼>...][-u <用戶名稱>...]

  補充說明:renice指令可重新調整程式執行的優先權等級。預設是以程式識別碼指定程式調整其優先權,您亦可以指定程式群組或用戶名稱調整優先權等級,並修改所有隸屬於該程式群組或使用者的程式的優先權。等級範圍從-20--19,只有系統管理者可以改變其他使用者程式的優先權,也僅有系統管理者可以設置負數等級。
  參  數:
  -g <程式群組名稱>  使用程式群組名稱,修改所有隸屬於該程式群組的程式的優先權。
  -p <程式識別碼>  改變該程式的優先權等級,此參數為預設值。
  -u <用戶名稱>  指定用戶名稱,修改所有隸屬於該使用者的程式的優先權。
linux安全網 www.linuxso.com 收集整理
一開始執行程式就立即給予一個特定的 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代碼
1. 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代碼
1. renice -5 -p 5200
2. #PID為5200的進程nice設為-5


linux renice 命令詳解

  功能說明:調整優先權。

  語  法:renice [優先等級][-g <程式群組名稱>...][-p <程式識別碼>...][-u <用戶名稱>...]

  補充說明:renice指令可重新調整程式執行的優先權等級。預設是以程式識別碼指定程式調整其優先權,您亦可以指定程式群組或用戶名稱調整優先權等級,並修改所有隸屬於該程式群組或使用者的程式的優先權。等級範圍從-20--19,只有系統管理者可以改變其他使用者程式的優先權,也僅有系統管理者可以設置負數等級。
  參  數:
  -g <程式群組名稱>  使用程式群組名稱,修改所有隸屬於該程式群組的程式的優先權。
  -p <程式識別碼>  改變該程式的優先權等級,此參數為預設值。
  -u <用戶名稱>  指定用戶名稱,修改所有隸屬於該使用者的程式的優先權。

2.2、也可以用top命令更改已存在進程的nice:

Java代碼
1. top
2. #進入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代碼
1. taskset -cp 1 5200
2. #把PID為5200的進程運行到CPU#1上
3. #也可以在啟動進程時指定:
4. taskset -c 1 /etc/init.d/mysql start

推薦閱讀二 關於程式的執行順序nice renice

關於程式的執行順序:


  還記得我們提過的多人多工環境吧?因為目前的 x86 平臺的 CPU 可以做到多工的行為, 所以囉,我們的 Linux 可以在 x86 上面&lsquo;同時進行多個工作’的呢!那麼多個工作是如何進行的呢? 其實每個工作都會進入到 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 值,亦即會變的較優先被處理。此外,您必須要留意到:

 本文自http://www.linuxso.com/command/renice.html轉貼

arrow
arrow
    文章標籤
    renice
    全站熱搜

    痞客興 發表在 痞客邦 留言(0) 人氣()