【发布时间】:2015-09-22 14:32:37
【问题描述】:
我的日程安排政策是 SCHED_OTHER。使用 setpriority() 更改 nice 值是否有任何影响。 当我使用它时,我看不出有什么不同。
【问题讨论】:
我的日程安排政策是 SCHED_OTHER。使用 setpriority() 更改 nice 值是否有任何影响。 当我使用它时,我看不出有什么不同。
【问题讨论】:
很抱歉,请仔细阅读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 调用的影响,并且会导致调度发生变化(取决于调用中设置的新优先级值)。
【讨论】:
您还可以使用 nice() 降低动态优先级。
试一试(9)。
#include <unistd.h>
int nice(int inc); // inc = increase, added to the current nice value
【讨论】: