Linux的進程優(yōu)先級 NI 和 PR

為什么要有進程優(yōu)先級抡句?

  • 這似乎不用過多的解釋探膊,畢竟自從多任務(wù)操作系統(tǒng)誕生以來,進程執(zhí)行占用cpu的能力就是一個必須要可以人為控制的事情玉转。因為有的進程相對重要突想,而有的進程則沒那么重要殴蹄。
  • 進程優(yōu)先級起作用的方式從發(fā)明以來基本沒有什么變化究抓,無論是只有一個cpu的時代,還是多核cpu時代袭灯,都是通過控制進程占用cpu時間的長短來實現(xiàn)的刺下。
    就是說在同一個調(diào)度周期中,優(yōu)先級高的進程占用的時間長些稽荧,而優(yōu)先級低的進程占用的短些荒椭。

NI和PR

  • 請大家真的不要混淆了系統(tǒng)中的這兩個概念:nice(NI)和priority(PR)铜秆,他們有著千絲萬縷的關(guān)系,但對于當前的Linux系統(tǒng)來說,它們并不是同一個概念裕循。
    我們看這個命令:
Paste_Image.png
  • 大家是否真的明白其中PRI列NI列的具體含義有什么區(qū)別?
    同樣的璃岳,如果是top命令:
Paste_Image.png
  • 大家是否搞清楚了這其中PR值NI值的差別涡尘?如果沒有,那么我們可以首先搞清楚什么是nice值歼争。

什么是NICE值拜马?

  • NICE值應(yīng)該是熟悉Linux/UNIX的人很了解的概念了,它是反應(yīng)一個進程“優(yōu)先級”狀態(tài)的值沐绒,其取值范圍是-20至19俩莽,一共40個級別。

  • 這個值越小乔遮,表示進程”優(yōu)先級”越高扮超,而值越大“優(yōu)先級”越低。

  • 例如,我們可以通過NICE命令來對一個將要執(zhí)行的bash命令進行NICE值設(shè)置出刷,方法是:

[root@zorrozou-pc0 zorro]# nice -n 10 bash
  • 這樣我就又打開了一個bash蝉衣,并且其nice值設(shè)置為10,而默認情況下巷蚪,進程的優(yōu)先級應(yīng)該是從父進程繼承來的病毡,這個值一般是0。
    我們可以通過nice命令直接查看到當前shell的nice值:
[root@zorrozou-pc0 zorro]# nice10

對比一下正常情況:

[root@zorrozou-pc0 zorro]# exit

退出當前nice值為10的bash屁柏,打開一個正常的bash啦膜,我們查看下其 Nice值:

[root@zorrozou-pc0 zorro]# bash[root@zorrozou-pc0 zorro]# nice0
  • 另外,使用renice命令可以對一個正在運行的進程進行nice值的調(diào)整淌喻,我們也可以使用比如top僧家、ps等命令查看進程的nice值,具體方法我就不多說了裸删,大家可以參閱相關(guān)man page八拱。
  • 需要大家注意的是,我在這里都在使用nice值這一稱謂涯塔,而非優(yōu)先級(priority)這個說法肌稻。nice值雖然不是priority,但是它確實可以影響進程的優(yōu)先級匕荸。
  • 在英語中爹谭,如果我們形容一個人nice,那一般說明這個人的人緣比較好榛搔。什么樣的人人緣好诺凡?往往是謙讓、有禮貌的人践惑。
  • 比如腹泌,你跟一個nice的人一起去吃午飯,點了兩個一樣的飯尔觉,先上了一份后凉袱,nice的那位一般都會說:“你先吃你先吃!”穷娱,這就是人緣好绑蔫,這人nice!但是如果另一份上的很晚泵额,那么這位nice的人就要餓著了配深。
    這說明什么?
  • 越nice的人搶占資源的能力就越差嫁盲,而越不nice的人搶占能力就越強篓叶。這就是nice值大小的含義烈掠,nice值越低,說明進程越不nice缸托,搶占cpu的能力就越強左敌,優(yōu)先級就越高(作者這個解釋太形象了,小編忍不住要手動點贊@洹=孟蕖)。
    在原來使用O1調(diào)度的Linux上佩抹,我們還會把nice值叫做靜態(tài)優(yōu)先級叼风,這也基本符合nice值的特點,就是當nice值設(shè)定好了之后棍苹,除非我們用renice去改它无宿,否則它是不變的。
    而priority的值在之前內(nèi)核的O1調(diào)度器上表現(xiàn)是會變化的枢里,所以也叫做動態(tài)優(yōu)先級孽鸡。
    什么是優(yōu)先級和實時進程?
  • 我們再來看看什么是priority值栏豺,就是ps命令中看到的PRI值或者top命令中看到的PR值彬碱。本文為了區(qū)分這些概念,以后:
  • 統(tǒng)一用nice值表示NI值冰悠,或者叫做靜態(tài)優(yōu)先級堡妒,也就是用nice和renice命令來調(diào)整的優(yōu)先級;
  • 而實用priority值表示PRI和PR值溉卓,或者叫動態(tài)優(yōu)先級。我們也統(tǒng)一將“優(yōu)先級”這個詞的概念規(guī)定為表示priority值的意思搬泥。

在內(nèi)核中桑寨,進程優(yōu)先級的取值范圍是通過一個宏定義的,這個宏的名稱是MAX_PRIO忿檩,它的值為140尉尾。
而這個值又是由另外兩個值相加組成的,一個是代表nice值取值范圍的NICE_WIDTH宏燥透,另一個是代表實時進程(realtime)優(yōu)先級范圍的MAX_RT_PRIO宏沙咏。

說白了就是,Linux實際上實現(xiàn)了140個優(yōu)先級范圍班套,取值范圍是從0-139肢藐,這個值越小,優(yōu)先級越高吱韭。nice值的-20到19吆豹,映射到實際的優(yōu)先級范圍是100-139。
新產(chǎn)生進程的默認優(yōu)先級被定義為:

#define DEFAULT_PRIO   (MAX_RT_PRIO + NICE_WIDTH / 2)

實際上對應(yīng)的就是nice值的0。

  • 正常情況下痘煤,任何一個進程的優(yōu)先級都是這個值凑阶,即使我們通過nice和renice命令調(diào)整了進程的優(yōu)先級,它的取值范圍也不會超出100-139的范圍衷快,除非這個進程是一個實時進程宙橱,那么它的優(yōu)先級取值才會變成0-99這個范圍中的一個。

  • 更多資料原文

  • 結(jié)合內(nèi)核態(tài)和用戶態(tài)有更深的體會和收獲

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蘸拔,一起剝皮案震驚了整個濱河市养匈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌都伪,老刑警劉巖呕乎,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異陨晶,居然都是意外死亡猬仁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門先誉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來湿刽,“玉大人,你說我怎么就攤上這事褐耳≌┕耄” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵铃芦,是天一觀的道長雅镊。 經(jīng)常有香客問我,道長刃滓,這世上最難降的妖魔是什么仁烹? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮咧虎,結(jié)果婚禮上卓缰,老公的妹妹穿的比我還像新娘。我一直安慰自己砰诵,他們只是感情好征唬,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茁彭,像睡著了一般总寒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尉间,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天偿乖,我揣著相機與錄音击罪,去河邊找鬼。 笑死贪薪,一個胖子當著我的面吹牛媳禁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播画切,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼竣稽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了霍弹?” 一聲冷哼從身側(cè)響起毫别,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎典格,沒想到半個月后岛宦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡耍缴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年砾肺,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片防嗡。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡变汪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蚁趁,到底是詐尸還是另有隱情裙盾,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布他嫡,位于F島的核電站番官,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏涮瞻。R本人自食惡果不足惜鲤拿,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望署咽。 院中可真熱鬧,春花似錦生音、人聲如沸宁否。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽慕匠。三九已至,卻和暖如春域醇,著一層夾襖步出監(jiān)牢的瞬間台谊,已是汗流浹背蓉媳。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留锅铅,地道東北人酪呻。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像盐须,于是被迫代替她去往敵國和親玩荠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 進程相關(guān)概念系統(tǒng)進程管理工具任務(wù)計劃 一贼邓、進程相關(guān)概念 定義:進程(Process)是運行中的程序的一個副本阶冈,是被...
    哈嘍別樣閱讀 557評論 0 0
  • 一個程序被加載到內(nèi)存當中運行,那么在內(nèi)存內(nèi)的那個數(shù)據(jù)就被稱為進程(process)塑径。進程是操作系統(tǒng)上非常重要的概念...
    Zhang21閱讀 1,919評論 0 12
  • 1.如何讓查看linux系統(tǒng)上各程序的優(yōu)先級 命令如下: ps -efl 下面這2行是優(yōu)先等級 top top命...
    richard520閱讀 8,653評論 0 2
  • 自戀的媽媽會有如下九個特質(zhì): 第一女坑,她對自身的重要性有著不切實際的理解。就是她總是覺得自己高人一等统舀,總覺得自己做什...
    williie007閱讀 294評論 0 0
  • 【十歲男孩玩手游花掉一萬二匆骗,媽媽令其用家務(wù)和學(xué)習(xí)來“還債”】 具體的事件是因為男孩用媽媽的手機玩游戲的過程中用支付...
    鮑米花閱讀 255評論 0 0