41.7. sched_attr 结构
sched_attr 结构包含或定义指定线程的调度策略及其关联的属性。sched_attr 结构有以下形式:
struct sched_attr {
u32 size;
u32 sched_policy
u64 sched_flags
s32 sched_nice
u32 sched_priority
/* SCHED_DEADLINE fields */
u64 sched_runtime
u64 sched_deadline
u64 sched_period
};
sched_attr 数据结构
- size
线程大小(以字节为单位)。如果结构的大小小于内核结构,则可将其他字段假定为 0。
如果大小大于内核结构,内核会将所有附加字段验证为0。注意当
sched_attr结构大于内核结构时,sched_setattr()函数会失败,并包含内核结构和更新大小,以包含内核结构的大小。- sched_policy
- 调度策略
- sched_flags
使用
fork()函数控制进程分叉时的调度行为。调用过程称为父进程,新进程称为子进程。有效值:-
0:子进程从父进程继承调度策略。 -
SCHED_FLAG_RESET_ON_FORK: fork(): 子进程不会继承父进程的调度策略。相反,它会被设置为默认的调度策略(struct sched_attr){ .sched_policy = SCHED_OTHER }。
-
- sched_nice
-
使用
SCHED_OTHER或SCHED_BATCH调度策略时,指定要设置的nice值。nice值是一个范围为-20(高优先级)到+19(低优先级)的数值。 - sched_priority
-
指定在调度
SCHED_FIFO或SCHED_RR时要设置的静态优先级。对于其他策略,将 priority 指定为0。
只能为截止时间调度指定 SCHED_DEADLINE 字段:
-
sched_
runtime:指定截止时间调度的运行时参数。该值以纳秒表示。 -
SCHED_ DEADLINE:指定截止时间调度的
截止时间参数。该值以纳秒表示。 -
sched_period: 指定截止时间调度的
period参数。该值以纳秒表示。