简短答案
PR是优先级。PR越低,该过程的优先级越高。
PR计算如下:
- 对于正常过程:PR = 20 + NI(NI很好,范围从-20到19)
- 对于实时进程:PR =-1-real_time_priority
(real_time_priority的范围是1到99)
长答案
有两种类型的进程,正常进程和实时进程。对于正常进程
(仅针对那些进程),nice的应用如下:
好啊
“ niceness”标度从-20到19,而-20是最高优先级,19是最低优先级。优先级计算如下:
PR = 20 + NI
其中NI为好级别,PR为优先级别。正如我们所看到的,-20实际上映射为0,而19映射为39。
默认情况下,程序的nice值为0,但是root用户可以使用以下命令来启动具有指定nice值的程序:
nice -n <nice_value> ./myProgram
即时的
我们可以走得更远。好优先级实际上用于用户程序。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值。
要查看进程的当前“良好”和PR值,可以执行以下命令:
top
显示以下输出:
在图中显示了PR和NI值。最好注意PR值-51与实时值相对应的过程。也有一些过程的PR值表示为“ rt”。该值实际上对应于-100的PR值。
niceness
可以用来赋予负优先级,从而避免niceness
高优先级任务的出现?(即存在nice
并让其他访问资源?还是让我感到困惑?