需要解释ps的pri标准格式说明符 - 文档中可能存在的错误

时间:2011-04-16 03:11:07

标签: linux bash shell ps

关于来自ps手册页的pri的注释:

“pri PRI优先级流程。数字越大意味着优先级越低”

在此处考虑PID 26073

$ renice +15 26073 


26073: old priority 5, new priority 15 # I am making this process more nice 

$ ps -t 1 -o pid,ppid,%cpu,stat,cmd,bsdstart,time,pri

  PID  PPID %CPU  STAT CMD      START     TIME PRI
 9115 18136  0.0   Ss   bash     17:10 00:00:01  19
26073  9115 12.0   RN+  p4 sync  19:06 00:02:56   4

STAT = RN +表示:正在运行,低prio(对其他人好),前景。 PRI = 4(1)

$ sudo renice -10 26073 

26073: old priority 15, new priority -10 # I am making this process less nice

 $ ps -t 1 -o pid,ppid,%cpu,stat,cmd,bsdstart,time,pri

  PID  PPID %CPU STAT CMD       START     TIME PRI
 9115 18136  0.0  Ss   bash     17:10 00:00:01  19
26073  9115 12.0  S<+  p4 sync  19:06 00:03:15  29

STAT = S&lt; +表示:可中断睡眠,高prio(对其他人不好),前景。 PRI = 29(2)

在案例2中,流程优先级增加或以另一种方式说明流程变得更高优先级。

但是这与pri在man page中的定义相矛盾(更高的数字意味着更低的优先级)

2 个答案:

答案 0 :(得分:6)

您被PRI(即时优先)与NICE(指定的优先级)混淆了。在阻塞I / O后重新启动进程时,PRI经常会获得提升(即较低的值),如果它在没有阻塞的情况下耗尽其调度程序分配的时隙,则相反地降低(更高的值),至少使用标准调度程序。许多系统具有不同行为的备用调度程序,但在所有情况下PRI是调度程序分配的实际当前优先级;此值受指定的“niceness”影响,但不是由其定义。

关于Linux优先级管理的参考herehttp://oreilly.com/catalog/linuxkernel/chapter/ch10.html

答案 1 :(得分:1)

虽然我不是linux调度程序的专家,但我确实知道它“惩罚”CPU绑定进程并奖励I / O绑定进程(大多数调度程序在某种程度上做的事情)。如上所述,此调整和其他调整以及NICE值会导致调度程序中的内部优先级设置。他们使用反NICE值和非反向内部PRI值的事实有点令人困惑,但是有道理。