Short Answer
99将成为实时优先的赢家 .
PR是优先级 . PR越低,该过程的优先级越高 .
PR的计算方法如下:
用于正常过程:PR = 20 - NI(NI很好,范围从-20到19)
用于实时进程:PR = - 1 - real_time_priority(real_time_priority范围从1到99)
Long Answer
有两种类型的进程,正常进程和实时对于正常进程(仅适用于那些进程),nice应用如下:
Nice
“漂亮”标度从-20到19,而-20是最高优先级,19是最低优先级 . 优先级计算如下:
PR = 20 + NI
NI是最好的水平,PR是优先级 . 我们可以看到,-20实际上映射到0,而19映射到39 .
默认情况下,程序nice值为0 bit,root用户可以使用以下命令为具有指定nice值的程序提供午餐:
nice -n ./myProgram
Real Time
我们可以走得更远 . 优先级实际上用于用户程序 . 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 ./myProgram
要获得实时过程的PR值,应用以下等式:
PR = -1 - rt_prior
其中rt_prior对应于1到99之间的优先级 . 因此,具有比其他进程更高优先级的进程将是使用数字99调用的进程 .
重要的是要注意,对于实时进程,不使用nice值 .
要查看进程的当前“niceness”和PR值,可以执行以下命令:
top
其中显示以下输出:
在图中,显示PR和NI值 . 最好注意PR值-51对应于实时值的过程 . 还有一些进程的PR值表示为“rt” . 该值实际上对应于PR值-100 .