Linux 进程优先级

时间:2021-03-21 14:32:18

    

一、TOP命令查看进程信息

Linux下可以用top命令来查看进程信息。相关参数说明

top监控工具可以显示CPU占用率为前几位的进程,并提供CPU的实时活动情况   top监控命令在FreeBSD上的使用   top监控工具可以显示CPU占用率为前几位的进程,并提供CPU的实时活动情况  

 语法:top [-s time] [-d count] [-q] [-h] [-n number] [-f filename] [-o field][-U usename] 

 -S 将系统进程信息也显示到屏幕上,默认情况下,top不显示系统进程的信息  

  -b 使用"batch"方式运行top。在此种方式下,所有来自终端的输入都将被忽略,但交互键(比如^C and ^\)   依然起使用。这是运行top输出到哑终端或输到非终端的默认运行方式   

  -i 使用交互运行top程序,在此种方式下,命令会被进程立即被处理。不管命令是不是能被top所理解执行,   屏幕都将立即更新。这是top的默认运行方式。 

 -I 不显示空闲进程,在默认情况下,top连同空闲进程的信息一同输出。 

 -t 不显示top进程自己  

    -n 不以交互方式使用top命令,作用同"batch"方式。  

    -s time 设置屏幕刷新的延时,单位为秒,默认值5秒  

 -d count 设置屏幕刷新的次数,刷新显示完count次后退出   

    -q 如果经过nice授权,使用-q可以使top运行的更快一些,这样,在系统反应缓慢的时候,可以会更快的找到存在的问题。 版权申明:本站文章均来自网络,如有侵权,请联系028-86262244-215,我们收到后立即删除,谢谢!    此选项在FreeBSD下只有root可以使用  

     -n number 设置每一屏幕显示的进程数目,number值超过进程最大数目,则设置无效
     -u 用显示User ID代替username,提高命令运行速度  

 -v 显示程序版本号后,立即退出。如果要在top运行时查看版本号,输入"?" 

 -o 以指定的字段排序显示进行信息。字段名必须为输入在屏幕的可见列的名字,而且必须是小写。   比如"cpu"、"size"、"res"与"time",但不同的操作系统间有许多的不同。注意不是每个UNIX操   作系统都支持此选项。 

 -U 只显示属于后面所跟用户名的进程的信息 

 屏幕控制命令   

交换方式下,可以使用以下命令控制top  

 ^L - 刷新屏幕  q - 退出  h or ? - 显示帮助  d - 修改刷新显示的次数  e - 显示最近"kill"或"renice"命令所产生的错误

i - 显示/不显示处于空闲的进程  I - 作用同 'i'  k - kill 进程; 发送一个信号到某个进程列表  n or # - 修改显示进程的数目  o - 以特定的字段排序 (pri, size, res, cpu, time) 版权申明:本站文章均来自网络,本站所有转载文章言论不代表本站观点   r - renice 一个进程  s - 修改输入的更新时间  u - 只显示属于某个用户的进程 (+ selects all users)

顺序显示下面三个常规的信息

一.系统信息:   

last pid: 22228; load averages: 0.25, 0.97, 1.56 up 44+03:25:56 21:39:36  274 processes: 3 running, 259 sleeping, 12 zombie  CPU states: 2.9% user, 0.0% nice, 4.2% system, 0.4% interrupt, 92.5% idle  Mem: 483M Active, 120M Inact, 222M Wired, 25M Cache, 112M Buf, 153M Free  Swap: 2048M Total, 143M Used, 1905M Free, 6% Inuse 

 首部的几行显示系统的几个信息,其中包括:  

 + Load averages:1分钟、5分钟和15分钟内运行的负载平均数  

 + system:系统名和当前日期.  一般来说只要每个CPU的当前活动进程数不大于 3那么系统的性能就是良好的,如果每个CPU的任务数大于5,  那么就表示这台机器的性能有严重问题 

 + 最近一次更新时存在的进程总数,并分别列出run(运行)、sleep(睡眠)、idle(停止)和zomb(‘僵尸')状态的进程数


     + CPU state:用户占用时间的百分比、系统占用CPU时间的百分比、被nice命令改变优先级的任务占用的CPU时间百分比、以及CPU空闲时间的百分比。(被nice命令改变优先级的任务仅指那些nice值为负的任务)。花费在被nice命令改变优先级的任务上的时间也将被计算在系统和用户时间内,因此整个时间加起来可能会超过百分之百 

二.内存信息  

 Memory: 610008K (24424K) real, 995344K (30304K) virtual, 12588K free Page# 1/4  

 Memory:关于内存使用情况的统计,包括实际(real)内存的活动值/总值,虚拟(virtual)内存的使用值/总值,剩余的内存。 

 DESCRIPTION OF MEMORY 

   Mem: 9220K Active, 1032K Inact, 3284K Wired, 1MB Cache, 2M Buf, 1320K 

   Free Swap: 91M Total, 79M Free, 13% Inuse, 80K In, 104 K Out     K: Kilobyte(K)     M: Megabyte(兆)

    K: Kilobyte(K) 

   M: Megabyte(兆)   

   %: 1/100(百分比)  

  Active:     活动页的数目 

  Inact: 非活动页的数目 

  Wired: 已经被写入页的数目, 包括缓存文件数据页码   

 Cache: 被用于 VM-level 磁盘缓冲的页的数目 。  

   Buf: 被用于 BIO-level 磁盘缓冲的页的数目  

  Free: 空闲页     Total: 总的可使用交换区 

   Free: 总共空闲的交换区

    Inuse: 交换区的使用情况  

  In: pages paged in from swap devices (最近的时间间隔) 

   Out: pages paged out to swap devices (最近的时间间隔)

三.进程信息 

    CPU PID USERNAME PRI NI SIZE RES STATE TIME %WCPU %CPU COMMAND 

    1 33 root 152 20 0K 0K run 153:43 1.18 1.18 vxfsd  

   0 1751 root 154 20 2500K 868K sleep 2084:19 0.52 0.52 ARMServer  

   0 1730 root 154 20 4500K 332K sleep 1664:55 0.44 0.44 acactmgr 

    列出系统里每一个处理器的信息,当信息在一个屏幕内无法显示时,会被分成多个屏幕显示,可以前面提到l,k和t命令查看      (1)CPU:处理器号(仅当多处理器系统时列出)  

   (2)PID:进程号  

   (3)USERNAME:用户名    

 (4)PRI:任务的优先级

(5)NICE:任务的nice值,一个具有较低值的进程在系统上将具有优先权。可以通过改变nice值提高某些进程速度,但是这实际上是一种交易,     因为那些nice值被升高的进程此时将运行得很慢。 特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系  

   (6)SIZE:任务的代码加上数据再加上栈空间的大小。 

    (7)RES:任务使用的物理内存的总数量。  

   (8)STATE:任务的状态   

  (9)TIME:自任务开始时使用的总CPU时间,单位为秒,如153:43,对应是153秒43毫秒  

   (10)%WCPU:进程的CPU利用率权重百分比   

  (11)%CPU:进程的原始的CPU利用率百分比,自上一次屏幕刷新以来任务占用CPU 时间的份额      (12)COMMAND:启动进程的命令名。如果名字太长而不能在一行显示时,它将被截短


二、TOP命令查看的进程PRI与NICE关系

PRI也还是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小进程的优先级别越高。那NI呢?就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值。如前面所说,PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行。

内核内部优先级为[0,139],0-99供实时进程使用,nice的值【-20,19】映射到100-139

p-nice 取值范围[0,39](映射到100-139),默认为 20。

nice 取值范围[-20,19],即20+nice=PRI

 p-pri 和 p-usrpri 用途不一样,p-pri 是调度使用的 pri。当进程处于 用户态时,p-pri=p-usrpri;当进程执行系统调用时被*,即处于核心 态,这时 p-pri 值暂时降低 p-pri(进程的优先权暂时升高)存放相应的 核心态的 pri 值。 例如:进程被*时,系统有个 sleep 状态,其 pri∈[0,49].唤醒时 p-pri 的值为 sleep 状态的 pri,因为其 pri 小于 p-usrpri,所以这时系 统调用被唤醒后,能优先执行。执行完后,置 p-pri=p-usrpri

到目前为止,更需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进程的优先级变化

—————————————————————————

三、修改进程优先级的命令主要两个:nice,renice

1、一开始执行程序就指定nice值:nice

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

linux nice 命令详解

功能说明:设置优先权。

语  法:nice [-n <优先等级>][--help][--version][执行指令]

补充说明:nice指令可以改变程序执行的优先权等级。

参  数:-n<优先等级>或-<优先等级>或–adjustment=<优先等级>  设置欲执行的指令的优先权等级。等级的范围从-20-19,其中-20最高,19最低,只有系统管理者可以设置负数的等级。
–help  在线帮助。
–version  显示版本信息。
—————————————————————————
2.1、调整已存在进程的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.2、也可以用top命令更改已存在进程的nice:

  1. top
  2. #进入top后按“r”–>输入进程PID–>输入nice值