Psy*_*aut 24 scheduling priority history nice
该nice
命令允许您调整程序的调度优先级(“niceness”)。在我使用过的所有类 Unix 系统上,niceness 由一系列整数指定,其中 -20 是最有利的调度优先级,0 是默认值,19 是最不利的。
将 0 作为默认的 niceness 已经足够直观了,但是为什么选择 -20 和 19 作为范围的端点呢?为什么不是 -128 和 127,它们完全适合有符号的 8 位字节?或者为什么不从 -100 到 100,这对小数点的人来说更直观,或者类似但更符合人体工程学,-99 到 99?-20 到 19 范围是任意选择的,还是nice
与最初与之交互的调度程序的内部结构有某种关系?(我知道今天没有这种关系,至少对于 Linux,它的调度程序使用 0 到 139 范围内的优先级。但是,我对 -20 到 19 范围的历史原因很感兴趣。)
内部友好度级别为 0-39,但增量为正或负。 来源。所以答案是nice
命令接受的数字(正数和负数)使您从默认级别 20 到 0-39 范围内的任何位置。
那么为什么是 0-39?具体范围是在设计师的原始实现中起作用的。正值越多越好的原因是,在确定优先级时,会将 nice 级别添加到进程最近的 CPU 使用率。为了提供近似的循环调度,内核会跟踪每个进程最近消耗了多少 CPU 并切换到没有那么多的进程。nice 级别越高,该进程看起来拥有的 CPU 时间越多,调度程序将该进程置于睡眠状态或让它处于睡眠状态的频率也越高。请参阅Maurice J. Bach 所著的 UNIX 操作系统的设计,Prentice-Hall 1986 年,第二节。8.1(8.1.4 专门用于友好)。ISBN 0-13-201799-7。
sch*_*ily -4
你错了:如果你在 UNIX 上,nice() 接口仍然有意义,NZERO
那么 是默认的 Nice 值,并且NZERO is 20
.
为了让事情变得更明显:您询问了该命令nice
,同时提到了绝对级别,但是nice命令不管理绝对值,而是相对于当前级别进行增量。在默认状态下,nice 级别NZERO
为 20。
好的值是 0..2*NZERO-1 或 0..39
请注意,虽然默认的 UNIX 调度程序可能仍然能够以良好的值执行一些有用的操作,但如果您使用专门的调度程序(例如实时调度程序),则没有任何意义。