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
参数。该值以纳秒表示。