rtprio 和 pri 值范围 Linux ps

rtprio and pri values range in Linux ps

我生成一个正常的进程并用cmd检查:

ps -p [PID] -o uname, cmd, cls, pri, rtprio

并有结果

USER   CMD     CLS  PRI RTPRIO

haivo  ./pro1  TS   17    -

据我所知 Linux 只知道实时进程的优先级为 0 - 139 和优先级为 0-99,但 RTPRIO 不显示 "rt" 这意味着我的进程只是一个正常的进程,另一种方式 pri = 17 属于实时优先级范围,而我的进程只是正常进程。好像有冲突。

您应该关注 ps 输出的 CLS 字段。来自 man ps:

CLS class of the process. (alias policy, cls).

- not reported

TS SCHED_OTHER

FF SCHED_FIFO

...

你说的范围是不同的范围。 SCHED_OTHER(SCHED_NORMAL)中的优先级往往是关于PR = 20 + NI公式,其中NI是“ nice”(介于 -20 和 19 之间)。但请记住 - 公式并不总是相关的,Linux内核可以根据自己的逻辑更改优先级(但“nice " 将保持不变,这只是对内核的提示)。

因此,您看到的值是绝对正确的。

另请参阅:Very useful post about Linux nice and prio