5.1.
NEXT
线程优先级是否继承父线程优先级?是否继承父进程优先级?
5.2.
NEXT
chrt
修改进程优先级,那么该进程的子线程优先级是否改变?
5.3.
NEXT
chrt
,
ps
,
top
,
pthread_attr_setschedpolicy()
,
sched_setscheduler()
中的优先级值和含义有什么关系?
5.4.
NEXT
考虑将引文中的链接下载到本地
进程优先级值越小,优先级越大。
进程优先级是PRI值不是Nice值,但是Nice值会影响优先级。
三类调度策略:RR调度和FIFO调度的进程属于实时进程,以分时调度(OTHER)的进程是非实时进程
实时进程优先级高于普通进程,实时进程使用静态优先级调度、非实时进程使用动态优先级调度,非实时进程动态优先级通过nice调整、可能受bonus影响。
一般子进程会继承父进程的调度策略,在Linux 2.6.32之后,可以使用
SCHED_RESET_ON_FORK
按位与参数的方式调用
sched_setscheduler()
, 使用之后效果是:如果调用进程使用
SCHED_FIFO
或
SCHED_RR
调度策略,使用
SCHED_RESET_ON_FORK
后fork创建的子进程创建时将会自动重置为
SCHED_OTHER
调度策略;如果调用进程使用负值nice,那么使用
SCHED_RESET_ON_FORK
后fork创建的子进程创建时将会自动将其nice重置为0。 这个标记激活时只有当进程具有
CAP_SYS_NICE
标记时才能被重置,而这个
CAP_SYS_NICE
标记在使用fork()创建子进程后,在子进程中被禁止。
关于priority的注意:这里参数中的pri不是ps的nice也不是priority,而是代码中的sched_priority,用于表示一系列可执行进程列表。实时进程中该值范围为1-99越大表示优先级越高, 非实时只能是0表示始终比实时进程低,并且非实时进程的优先级不由此值确定而是由其内部动态优先级确定。chrt中的pri应该也类似含义,例如:
chrt -f -p 10 pid
则ps中pri为-11,
chrt -f -p 1 pid
则ps中pri为-2)为0,进程命令为command,其它可以根据选项参数设置。
关于prioriti的注意:一般子进程会继承父进程的调度策略,在Linux 2.6.32之后,可以使用
SCHED_RESET_ON_FORK
按位与参数的方式调用
sched_setscheduler()
, 使用之后效果是:如果调用进程使用
SCHED_FIFO
或
SCHED_RR
调度策略,使用
SCHED_RESET_ON_FORK
后fork创建的子进程创建时将会自动重置为
SCHED_OTHER
调度策略;如果调用进程使用负值nice,那么使用
SCHED_RESET_ON_FORK
后fork创建的子进程创建时将会自动将其nice重置为0。 这个标记激活时只有当进程具有
CAP_SYS_NICE
标记时才能被重置,而这个
CAP_SYS_NICE
标记在使用fork()创建子进程后,在子进程中被禁止。
参考:
man sched_setscheduler
和
线程优先级设置
通过
pthread_attr_setschedpolicy()
设置线程调度和优先级属性
效果类似
sched_setscheduler()
, 但是用于线程而非进程。
参考:
man pthread_attr_setschedpolicy
5.3
NEXT
chrt
,
ps
,
top
,
pthread_attr_setschedpolicy()
,
sched_setscheduler()
中的优先级值和含义有什么关系?
State "NEXT" from
[2016-02-01 一 15:40]