20

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

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

4

1 回答 1

46

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

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

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

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

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

于 2011-04-19T23:44:38.823 回答