Linux 系统上的 niceness 和优先进程

Posted

技术标签:

【中文标题】Linux 系统上的 niceness 和优先进程【英文标题】:Niceness and priority processes on Linux system 【发布时间】:2011-08-08 18:45:00 【问题描述】:

我正在寻找一种通过命令行修改进程优先级的方法。 我发现内置(bash)nice 和命令renice 允许修改进程的好坏,但不是内核计算的实际优先级。

是否有允许设置优先级的命令? (或者我在友善和优先之间感到困惑?)

【问题讨论】:

另见Difference between nice value and priority in the top output 【参考方案1】:

linux中进程的优先级是动态的:运行时间越长,优先级越低。进程在实际使用 CPU 时运行 - 典型 Linux 机器上的大多数进程只是等待 I/O,因此不计为 正在运行

当运行的进程多于可用的 CPU 内核时,会考虑优先级:最高优先级获胜。但是随着时间的推移,获胜的进程会失去其优先权,其他进程将在某个时候接管 CPU。

nicerenice 将从优先级中添加/删除一些“点”。具有较高 nice 值的进程将获得较少的 CPU 时间。 Root 也可以设置一个负的nice 值——进程获得更多的 CPU 时间。

示例:系统中有两个进程(1 和 2)计算停机问题和一个 CPU 内核。默认为nice 0,因此两个进程各自获得大约一半的 CPU 时间。现在让 renice 进程 1 的值为 10。结果:进程 2 获得的 CPU 时间比进程 1 高得多。

注意:在现代台式机中,有大量可用的 CPU 时间 - 现在它们速度很快。不幸的是,HDD 在随机 I/O 上仍然相对较慢,因此即使是 nice 进程也可以产生足够的 I/O 流量来显着降低系统速度。

【讨论】:

不,你没有困惑。在最近的 Linux 中还有其他调度程序。 @Turbo J 描述了默认/正常/跨国调度程序。还有其他一些调度程序:Normal、Batch、Round-robin、FIFO。还有 i/o:正常、空闲、尽力而为、实时。 Batch 和 idle 的优先级低于正常,其他高于正常,请小心处理(不要碰它们)。 ionice 呢?

以上是关于Linux 系统上的 niceness 和优先进程的主要内容,如果未能解决你的问题,请参考以下文章

Linux进程的静态优先级和nice系统调用

linux c编程:进程控制进程调度

linux 进程优先级 调度 nice pri

liunx-进程优先级nice

Linux进程PRI与NI值

linux的CFS调度