0

我的调度策略是 SCHED_OTHER。使用 setpriority() 更改 nice 值是否有任何影响。当我使用它时,我看不出有什么不同。

4

2 回答 2

1
答案是不。在这种情况下,设置优先级不应影响进程。根据文档:http://linux.die.net/man/3/setpriority > 任何使用 SCHED_FIFO 或 SCHED_RR 的进程或线程都不受调用 setpriority() 的影响。这不被视为错误。随后恢复为 SCHED_OTHER 的进程不必使其优先级受到这种 setpriority() 调用的影响。

很抱歉,但请仔细阅读http://man7.org/linux/man-pages/man7/sched.7.html

SCHED_OTHER:默认 Linux 分时调度 SCHED_OTHER 只能在静态优先级 0 下使用。SCHED_OTHER 是标准 Linux 分时调度程序,适用于不需要特殊实时机制的所有线程。要运行的线程是根据仅在此列表中确定的动态优先级从静态优先级 0 列表中选择的。动态优先级基于 nice 值(由 nice(2)、setpriority(2) 或 sched_setattr(2) 设置)并随着线程准备好运行但被调度程序拒绝运行的每个时间片而增加。这确保了所有 SCHED_OTHER 线程之间的公平进展。

因此,线程的动态优先级受到对 setpriority 的调用的影响,它应该会导致调度发生变化(取决于调用中设置的新优先级值)。

于 2015-09-22T14:43:50.540 回答
0

您还可以使用 nice() 降低动态优先级。

试试不错(9)。

    #include <unistd.h>
    int nice(int inc);  // inc = increase, added to the current nice value
于 2016-12-17T06:47:08.847 回答