31.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() 関数は E2BIG エラーで失敗します。

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 をスケジュールするときに設定する静的優先度を指定します。その他のポリシーの場合は、優先度を 0 として指定します。

SCHED_DEADLINE フィールドは、期限スケジューリングの場合にのみ指定する必要があります。

  • sched_runtime: 期限スケジューリングの runtime パラメーターを指定します。値はナノ秒で表されます。
  • sched_deadline: 期限スケジューリングの deadline パラメーターを指定します。値はナノ秒で表されます。
  • sched_period: 期限スケジューリングの period パラメーターを指定します。値はナノ秒で表されます。