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_OTHERSCHED_BATCH 调度策略时,指定要设置的 nice 值。nice 值是一个范围为 -20( 高优先级)到 +19 (低优先级)的数值。
sched_priority
指定在调度 SCHED_FIFOSCHED_RR 时要设置的静态优先级。对于其他策略,将 priority 指定为 0。

只能为截止时间调度指定 SCHED_DEADLINE 字段:

  • sched_ runtime :指定截止时间调度的运行时参数。该值以纳秒表示。
  • SCHED_ DEADLINE:指定截止时间调度的 截止时间 参数。该值以纳秒表示。
  • sched_period: 指定截止时间调度的 period 参数。该值以纳秒表示。