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
パラメーターを指定します。値はナノ秒で表されます。