如何以编程方式更改 linux 内核进程优先级?

How to change linux kernel process priority in programmatic way?

我发现了一些函数 'renice' 可以改变进程的 nice 值。

但我想知道如何在内核代码中更改优先级

只改变进程 sched_entity 中的优先级值可以吗?

如果您想以编程方式更改进程的友好性,我建议不要直接在内核结构中设置这些值。相反,您可以使用多个 POSIX 函数,例如 setprioritypthread_setschedparam.

Linux 上的默认调度程序策略是 SCHED_OTHER,因此默认情况下,您使用这两个函数实现相同的目的,因为 SCHED_OTHER 只是使用 niceness 级别来时间表。

如果您可以访问task_struct,为了直接实现这一点,您只需要在task_struct中设置static_prio