天天看点

优先级专题

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的优先调小一些,也就是调高一些。

下面演示一个调整优先级的案例:

继续阅读