简答
99 将成为实时优先的赢家。
PR 是优先级(范围 -100 到 39)。 PR越低,进程的优先级越高。
PR 计算如下:
- 对于正常进程:PR = 20 + NI(NI 很好,范围从 -20 到
19)
- 对于实时进程:PR = - 1 - real_time_priority
(real_time_priority 范围从 1 到 99)
长答案
有两种类型的进程,正常和实时
对于普通的(并且仅适用于那些),nice 的应用如下:
不错
“好”等级从 -20 到 19,而 -20 是最高优先级,19 是最低优先级。优先级计算如下:
公关 = 20 + NI
其中 NI 是 nice 级别,PR 是优先级。所以我们可以看到,-20 实际上映射到 0,而 19 映射到 39。
默认情况下,程序 nice 值为 0 位,root 用户可以使用以下命令来午餐具有指定 nice 值的程序:
nice -n <nice_value> ./myProgram
实时
我们可以走得更远。 nice 优先级实际上用于用户程序。尽管 UNIX/LINUX 总体优先级的值范围为 140,但 nice 值使进程能够映射到范围的最后一部分(从 100 到 139)。此等式使 0 到 99 的值无法达到,这将对应于负 PR 级别(从 -100 到 -1)。为了能够访问这些值,该过程应声明为“实时”。
LINUX环境下有5个调度策略,可以用如下命令显示:
chrt -m
这将显示以下列表:
1. SCHED_OTHER the standard round-robin time-sharing policy
2. SCHED_BATCH for "batch" style execution of processes
3. SCHED_IDLE for running very low priority background jobs.
4. SCHED_FIFO a first-in, first-out policy
5. SCHED_RR a round-robin policy
调度进程可以分为2组,正常调度策略(1到3)和实时调度策略(4和5)。
实时进程总是优先于正常进程。可以使用以下命令调用实时进程(示例是如何声明 SCHED_RR 策略):
chrt --rr <priority between 1-99> ./myProgram
为了获得实时过程的 PR 值,应用以下等式:
PR = -1 - rt_prior
其中 rt_prior 对应于 1 到 99 之间的优先级。因此,优先级高于其他进程的进程将是编号为 99 的进程。
需要注意的是,对于实时进程,nice 值没有被使用。
要查看进程的当前“niceness”和 PR 值,可以执行以下命令:
top
显示以下输出:
图中显示了 PR 和 NI 值。最好注意 PR 值 -51 对应于实时值的过程。还有一些进程的 PR 值用“rt”表示。这个值实际上对应的PR值是-100。