nice和renice命令详解

  

基础命令学习目录首页html

 

进程调度是linux中很是重要的概念。linux内核有一套高效复杂的调度机制,能使效率极大化,但有时为了实现特定的要求,须要必定的人工干预。好比,你但愿操做系统能分配更多的CPU资源给浏览器进程,让浏览速度更快、更流畅,操做体验更好。那具体应该怎么作呢?尽管linux的进程调度算法十分复杂,但都是以进程的优先级为基础的。所以,只须要改变进程的优先级便可。linux

在linux中,nice命令用于改变进程的优先级。算法

nice命令?什么鬼?哪有命令直接说本身“nice”的?咋一看,这个名字确实很“nice”,只是这里的“nice”是指“niceness”,即友善度、谦让度。用于进程中,表示进程的优先级,也即进程的友善度。niceness值为负时,表示高优先级,能提早执行和得到更多的资源,对应低友善度;反之,则表示低优先级,高友善度。浏览器

nice命令格式:nice [OPTION] [COMMAND [ARG]...]ruby

当nice没有选项时,输出值表示系统进程缺省的niceness值,通常为0。bash

xie@xie-VirtualBox:~$ nice 0 

nice命令中没有给出具体的niceness值时,默认为10。如nice vi设置vi进程的niceness为10。post

-n 选项

-n选项后面跟具体的niceness值。niceness值的范围-20~19,小于-20或大于19的值分别记为-20和19。学习

xie@xie-VirtualBox:~$ nice -n 10 vi& 

该命令设置vi进程的niceness值为10,也就是较低的优先级。ui

若是设置的niceness值为负,那么必需要有管理员权限。这也不难理解,当niceness为负时,意味着该进程要抢占其余进程的资源,必需要有权限才行;若是niceness为正,即表示谦让度高,这对其余进程来讲是喜闻乐见的,也固然就不用权限认证了。url

能够经过ps -l查看进程的niceness值。

xie@xie-VirtualBox:~$ ps -l
F S   UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 1635 1634 0 80 0 - 2178 wait pts/13 00:00:00 bash 0 T 1000 1677 1635 0 90 10 - 1767 signal pts/13 00:00:00 vi 0 R 1000 1678 1635 0 80 0 - 1606 - pts/13 00:00:00 ps 

NI列即表示进程的niceness值。vi进程对应的NI值正好为刚设置的10。那PRI列又是什么呢?PRI表示进程当前的总优先级,值越小表示优先级越高,由进程默认的PRI加上NI获得,即PRI(new) = PRI(old) + NI。由上程序,进程默认的PRI是80,因此加上值为10的NI后,vi进程的PRI为90。
因此,须要注意的是,NI即niceness的值只是进程优先级的一部分,不能彻底决定进程的优先级,但niceness值的绝对值越大,效果越显著。

--adjustment=N 选项

--adjustment选项和-n选项的效果是同样的,在等号右边设置对应的niceness值便可。

xie@xie-VirtualBox:~$ nice --adjustment=16 vi& [1] 1681 xie@xie-VirtualBox:~$ ps -l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 0 S 1000 1635 1634 0 80 0 - 2178 wait pts/13 00:00:00 bas 0 T 1000 1681 1635 0 96 16 - 1767 signal pts/13 00:00:00 vi 0 R 1000 1682 1635 0 80 0 - 1606 - pts/13 00:00:00 ps 

注意,直接使用“-N”也能够设置niceness值。好比,nice -12 vi& 将vi的niceness值设置为12,若是是nice --12 vi&的话,则设置niceness的值为-12。这很容易混淆,建议使用-n或--adjustment选项,不易出错。

其余选项

--help 显示帮助信息 --version 显示版本信息 

renice命令

以上讨论的都是为即将运行的进程设置niceness值,而renice用于改变正在运行的进程的niceness值。

renice,字面意思即从新设置niceness值,进程启动时默认的niceness值为0,能够用renice更新。

renice语法:renice [优先等级][-g<程序群组名称>...][-p<程序识别码>...][-u <用户名称>...]

如:

renice -5 -p 5200  #将PID为5200的进程的niceness设为-5 renice -5 -u xie #将属于用户xie的进程的niceness设为-5 renice -5 -g group1 #将属于group1组的程序的niceness设为5


做者:Rabin_xie
连接:https://www.jianshu.com/p/fd3dec3cd393
來源:简书
简书著做权归做者全部,任何形式的转载都请联系做者得到受权并注明出处。

 

命令:nice

参数:

-n ,--adjustment=N 两个参数含义相同,设置进程优先级的谦让值(修正值)为N

示例:

nice -n -10 ws_gw 

设置进程ws_gw的优先级的修正值为-10

nice -19 ws_gw

已优先级19来启动ws_gw,此时-不标识负数,而表示参数指令,已19优先级来启动;

做用:

 nice命令以更改过的优先序来执行程序,若是未指定程序,则会印出目前的排程优先序,内定的 adjustment 为 10,范围为 -20(最高优先序)到 19(最低优先序)。

--------也就是说要在启动时,在启动命令前加上 nice xx command才能生效;

例如: nice -10  ./aaa ../conf/aa.xml 

--------./aaa ../conf/aa.xml 为正常启动命令,nice -10 即已修正值为-10来启动aaa

修正值的用法,进程真正的优先级=进程默认优先级+修正值(nice值)

PRI(real) = PRI(old) + NI

因此为负值则优先级越高,为正值优先级越低

其余说明:

top时进程信息字段的ni值即为修正值;最低为19,因此下图的20最终为19

已19优先级启动vi

 已正常优先级启动vi

 

 已修正值-10启动vi:

 

相关文章
相关标签/搜索