如果我的调度策略是SCHED_OTHER,那么使用setpriority()是否有任何影响

时间:2015-09-22 14:32:37

标签: c linux nice

我的日程安排政策是SCHED_OTHER。使用setpriority()改变nice值是否会产生任何影响。 当我使用它时,我发现任何不同。

2 个答案:

答案 0 :(得分:1)

<德尔> 答案是不。在这种情况下,setpriority不应该影响进程。根据文件: http://linux.die.net/man/3/setpriority &GT;使用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时间共享调度程序          不需要特殊实时机制的线程。该          要运行的线程是从基于a的静态优先级0列表中选择的          仅在此列表中确定的动态优先级。该          动态优先级基于nice值(由nice(2)设置,          setpriority(2)或sched_setattr(2))并且每次都增加          量子线程已准备好运行,但被拒绝运行          调度。这确保了所有SCHED_OTHER线程之间的公平进展。

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

答案 1 :(得分:0)

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

尝试不错(9)。

    #include <unistd.h>
    int nice(int inc);  // inc = increase, added to the current nice value