3.11. sched_nr_migrate を使用した SCHED_OTHER タスク移行の制限。
SCHED_OTHER
タスクが他の多数のタスクを起動すると、すべて同じ CPU 上で実行されます。移行タスクまたは softirq
は、これらのタスクのバランスを調整し、アイドル状態の 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
してください。~]#
echo 2 > /proc/sys/kernel/sched_nr_migrate