3.11. sched_nr_migrate を使用して SCHED_OTHER タスクの移行を制限します。
SCHED_OTHER タスクが多数の他のタスクを生成する場合、それらはすべて同じ CPU 上で実行されます。移行タスクまたは ソフト IRQ は、これらのタスクのバランスを取り、アイドル状態の CPU で実行できるようにします。sched_nr_migrate オプションを設定すると、一度に移動するタスクの数を指定できます。リアルタイムタスクは移行方法が異なるため、これによって直接影響を受けることはありませんが、softirq が タスクを移動するときに、割り込みを無効にするために必要な実行キュースピンロックがロックされます。移動が必要なタスクが多数ある場合は、割り込みが無効になっているときに発生するため、タイマーイベントやウェイクアップは同時に行われません。これにより、sched_nr_migrate に大きな値が設定されている場合に、リアルタイムタスクで重大な遅延が発生する可能性があります。
手順3.4 sched_nr_migrate 変数の値を調整する
- sched_nr_migrate 変数を増やすと、リアルタイムのレイテンシーを犠牲にして、多数のタスクを生成する SCHED_OTHER スレッドのパフォーマンスが向上します。SCHED_OTHER タスクのパフォーマンスを犠牲にしてリアルタイムタスクの待ち時間を短縮するには、値を下げる必要があります。デフォルト値は 8 です。
- sched_nr_migrate 変数の値を調整するには、値を
/proc/sys/kernel/sched_nr_migrateに直接 エコーする ことができます。~]# echo 2 > /proc/sys/kernel/sched_nr_migrate