Linux系统上的进程的友善度和优先级
我正在寻找一种通过命令行修改进程优先级的方法。 我发现内置(bash)nice和命令renice允许修改进程的niceness,但不能修改内核计算的实际优先级。
有没有可以设置优先级的命令? (或者我对友善和优先级感到困惑吗?)
I am looking for a way to modify a process' priority through command line.
I found the builtin (bash) nice
and the command renice
which allow to modify the niceness of the process, but not the actual priority which is calculated by the kernel.
Is there a command which allows to set the priority?
(Or am I confused between niceness and priority?)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Linux 中进程的优先级是动态的:运行时间越长,优先级越低。进程在实际使用 CPU 时运行 - 典型 Linux 机器上的大多数进程只是等待 I/O,因此不算运行。
当运行的进程多于可用的 CPU 内核时,将考虑优先级:最高优先级获胜。但随着时间的推移,获胜进程会失去其优先权,其他进程将在某个时刻接管 CPU。
nice
和renice
将从优先级中添加/删除一些“点”。具有较高nice
值的进程将获得较少的 CPU 时间。 Root 还可以设置负nice
值 - 进程获得更多 CPU 时间。示例:系统中有两个进程(1 和 2)计算停机问题,并且有一个 CPU 核心。默认值为
nice 0
,因此两个进程各获得大约一半的 CPU 时间。现在让 renice 进程 1 的值变为 10。结果:进程 2 获得的 CPU 时间明显高于进程 1。注意:在现代桌面中,有充足的 CPU 时间可用 - 如今它们速度很快。不幸的是,HDD 在随机 I/O 上仍然相对较慢,因此即使是一个好的进程也可以生成足够的 I/O 流量来显着降低系统速度。
The priority of a process in linux is dynamic: The longer it runs, the lower its priority will be. A process runs when its actually using the CPU - most processes on a typical Linux box just wait for I/O and thus do not count as running.
The priority is taken into account when there are more processes running than CPU cores available: Highest priority wins. But as the winning process loses its proirity over time, other processes will take over the CPU at some point.
nice
andrenice
will add/remove some "points" from priority. A process which has a highernice
value will get lesser CPU time. Root can also set a negativenice
value - the process gets more CPU time.Example: There are two processes (1 and 2) calculating the halting problem and one CPU core in the system. Default is
nice 0
, so both processes get about half of the CPU time each. Now lets renice process 1 to value 10. Result: Process 2 gets a significant higher amount of cpu time as process 1.Note: In modern desktops there is plenty CPU time available - they are fast these days. Unfortunately HDDs are still relativeley slow on random I/O, so even a nice process can generate enough I/O traffic to significantly slow down a system.