setpriority
我知道您可以使用或nice
或更改流程的良好程度renice
。
然而,Linux 是否会在没有用户输入的情况下自动调整/更改进程的性能?
我有一个在 C 中使用的过程setpriority
,如下所示:
setpriority(PRIO_PROCESS, 0, -1)
当进程运行时,我可以通过运行看到它的niceness值现在是-1顶部。
在调查远程计算机上的崩溃时,向我提供了 htop 的输出。我注意到这个进程的良好值在一个实例上更改为 0,在另一个实例上更改为 6。我想知道这是否是由内核更改的,或者更改该值的唯一方法是否是让用户更改或者脚本故意进行更改。
答案1
据我所知,Linux 内核不会改变进程的良好性,而且我不明白为什么会这样做,因为它不必降低进程的优先级。友善度是提供给内核的信息,告诉它该进程愿意有多友善。内核调度程序可以随意考虑此信息,以更改进程的优先级,但不需要更改其值。
另一方面,在用户态,有一些守护进程,比如和其任务是根据管理员设置的规则重新启动进程。你的服务器上安装了这样的守护进程吗?
但是,AND 守护进程不会限制 root 拥有的进程,并且由于您设置了-1
with的优先级setpriority()
,我认为这里就是这种情况。因此,我认为这种美好变化的唯一原因是用户交互。
也就是说,由于您正在使用htop
,因此有可能通过按]键或F8键无意中重新启动了该过程。