Linux 会自动改变进程的优度吗?

Linux 会自动改变进程的优度吗?

setpriority我知道您可以使用或nice或更改流程的良好程度renice

然而,Linux 是否会在没有用户输入的情况下自动调整/更改进程的性能?

我有一个在 C 中使用的过程setpriority,如下所示:

setpriority(PRIO_PROCESS, 0, -1)

当进程运行时,我可以通过运行看到它的niceness值现在是-1顶部

在调查远程计算机上的崩溃时,向我提供了 htop 的输出。我注意到这个进程的良好值在一个实例上更改为 0,在另一个实例上更改为 6。我想知道这是否是由内核更改的,或者更改该值的唯一方法是否是让用户更改或者脚本故意进行更改。

答案1

据我所知,Linux 内核不会改变进程的良好性,而且我不明白为什么会这样做,因为它不必降低进程的优先级。友善度是提供给内核的信息,告诉它该进程愿意有多友善。内核调度程序可以随意考虑此信息,以更改进程的优先级,但不需要更改其值。

另一方面,在用户态,有一些守护进程,比如其任务是根据管理员设置的规则重新启动进程。你的服务器上安装了这样的守护进程吗?

但是,AND 守护进程不会限制 root 拥有的进程,并且由于您设置了-1with的优先级setpriority(),我认为这里就是这种情况。因此,我认为这种美好变化的唯一原因是用户交互。

也就是说,由于您正在使用htop,因此有可能通过按]键或F8键无意中重新启动了该过程。

相关内容