linux進程優先級、進程nice值(轉載)

網絡收集,自學自用~mysql

 

 

進程cpu資源分配就是指進程的優先權(priority)。優先權高的進程有優先執行權利。配置進程優先權對多任務環境的linux頗有用,能夠改善系統性能。還能夠把進程運行到指定的CPU上,這樣一來,把不重要的進程安排到某個CPU,能夠大大改善系統總體性能。linux

1、先看系統進程:sql

 

首先,我想用一個簡單的命令來引發這個議題。 不管在linux或者unix系統中,用ps –l命令則會相似輸出如下幾個內容:bash

[root@dbbak root]# ps –l   --- 這裏用的是linux測試
F S   UID   PID  PPID  C PRI  NI ADDR    SZ WCHAN  TTY          TIME CMD
4 S     0 20538 20534  0  75   0    -  1063 wait4  pts/2    00:00:00 bash
4 R     0 20663 20538  0  75   0    -   828 -      pts/2    00:00:00 ps網絡

咱們很容易注意到其中的幾個重要信息,有下:
UID : 表明執行者的身份
PID : 表明這個進程的代號
PPID :表明這個進程是由哪一個進程發展衍生而來的,亦即父進程的代號
PRI :表明這個進程可被執行的優先級,其值越小越早被執行
NI :表明這個進程的nice值
這裏的前面的三個信息,咱們都是比較好容易理解的,可是後面的兩個奇怪的信息,一個是PRI,一個是NI,這究竟是什麼東西?相對而言,PRI也仍是比較好理解的,即進程的優先級,或者通俗點說就是程序被CPU執行的前後順序,此值越小進程的優先級別越高。那NI呢?就是咱們所要說的nice值了,其表示進程可被執行的優先級的修正數值。如前面所說,PRI值越小越快被執行,那麼加入nice值後,將會使得PRI變爲:PRI(new)=PRI(old)+nice。這樣,當nice值爲負值的時候,那麼該程序將會優先級值將變小,即其優先級會變高,則其越快被執行。性能

到目前爲止,更須要強調一點的是,進程的nice值不是進程的優先級,他們不是一個概念,可是進程nice值會影響到進程的優先級變化測試

—————————————————————————
2、修改進程優先級的命令主要有兩個:nice,renice.net

一、一開始執行程序就指定nice值:niceunix

  1. nice -n -5 /usr/local/mysql/bin/mysqld_safe &

linux nice 命令詳解blog

功能說明:設置優先權。

語  法:nice [-n <優先等級>][--help][--version][執行指令]

補充說明:nice指令能夠改變程序執行的優先權等級。

參  數:-n<優先等級>或-<優先等級>或–adjustment=<優先等級>  設置欲執行的指令的優先權等級。等級的範圍從-20-19,其中-20最高,19最低,只有系統管理者能夠設置負數的等級。
–help  在線幫助。
–version  顯示版本信息。
—————————————————————————
2.一、調整已存在進程的nice:renice

  1. renice -5 -p 5200
  2. #PID爲5200的進程nice設爲-5

linux renice 命令詳解

功能說明:調整優先權。

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

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

2.二、也能夠用top命令更改已存在進程的nice:

  1. top
  2. #進入top後按「r」–>輸入進程PID–>輸入nice值

 

 

http://blog.csdn.net/sanshiqiduer/article/details/1933625

 

 

 

殭屍進程:一個子進程在其父進程沒有調用wait()或waitpid()的狀況下退出。這個子進程就是殭屍進程。若是其父進程還存在而一直不調用wait,則該殭屍進程將沒法回收,等到其父進程退出後該進程將被init回收。
孤兒進程:一個父進程退出,而它的一個或多個子進程還在運行,那麼那些子進程將成爲孤兒進程。孤兒進程將被init進程(進程號爲1)所收養,並由init進程對它們完成狀態收集工做。
殭屍進程將會致使資源浪費,而孤兒則不會。

相關文章
相關標籤/搜索