天天看點

優先級專題

linux是一個比較有意思的系統,裡面有很多地方展現了貼進人性的一面,比如在centos6當中,在`free -m`的時候,系統給使用者提供了兩種視角:

目錄

優先級專題

概述

priority

nice

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- 張賀,多年網際網路行業工作經驗,擔任過網絡工程師、系統內建工程師、linux系統運維工程師

linux是一個比較有意思的系統,裡面有很多地方展現了貼進人性的一面,比如在centos6當中,在free -m的時候,系統給使用者提供了兩種視角:系統視角和應用視角的方式來觀察系統目前的記憶體用量;再比如在優先級這裡面,也是提供了兩套,一套我稱做是理性,理性就是固定死的,程序本身的優先級是多少就是多少,輪到誰登場(登上cpu)就是誰,程序本身不能更改,不能拒絕;還有一套我稱做是感性優先級,就是程序可以選項明明到自己登場(登上cpu)時放棄登場的權利,而謙讓給其它程序,注意程序可以選項降低自己的優先級暫時放棄登場的權利,但是不能提高自己的優先級去争搶。

linux的優先級分為兩套:

理性:priority

感性:nice

linux當中程序的優先級範圍是:0-139

1--99:實時優先級,越大優先級越高,一般不用我們調整。

100--139:靜态優先級,數字越小優先級越高,我們一般調整的是這個,一共有40到priority值。

核心把cpu等待運作的程序放到140個隊列當中,每一個隊列即對應一個優先級,當cpu上目前程序運作完成之後,就直接根據隊列的排序去隊列裡面取程序,這樣無論是多少個程序,核心實際在掃描時隻會掃描140個隊列。

将要運作的隊列是140隊,那你有沒有想過?那些已經運作完成的程序放到何處?其實還一套隊列,同時也是140個隊列,用于存放已經運作完成的程序狀态,當第一套隊列裡面的程序用運作完成之後,就把第二套隊列裡面的程序當做第一套隊列,這樣周而複始。

nice的範圍是-20---19,一共39個nice值,你會發現nice值範圍與priority的範圍是一樣的都是40個,而且它們是對應關系,如下:

priority:100---139

nice :-20---19

在使用者空間運作的程序預設的priority是20,對應的nice值也就是0,舉個例子:

假如我們這個目前系統隻有mysql在運作,沒有其它程序,我們是可以考慮把mysql的優先調小一些,也就是調高一些。

下面示範一個調整優先級的案例:

繼續閱讀