1

Linux カーネルでの CFS の実装について理解しています。私の疑問は、CFS が特定のエポックの各タスクの理想的な時間を計算し、タスクの理想的な時間が min_granularity よりも低い場合です。このシナリオをチェックするコードのどこを見つけることができますか?

目標レイテンシーが 6 ミリ秒 (ms) で、最小粒度が 0.75 ミリ秒 (これはデフォルト値) で、実行可能なタスクが 2 つあるとします。そのうちの 1 つ (タスク 0) はナイス -20 (重み 88761) で、もう一方 (タスク 1) はナイス 0 (ウェイト 1024) です。

タスク 0 の理想的な時間は 5.93 ms ((88761/(88761+1024))*6) であり、タスク 1 の理想的な時間は 0.068 ms ((1024/(88761+1024))*6) です。計算は、各割り込みティックで関数 *check_preempt_tick* によって行われます。

タスク 1 の理想的な時間は、min_granularity よりも低くなります。CFS が min_granularity をタスク 1 に割り当てる場合、ターゲット レイテンシは 6 ミリ秒を超えます。この状況でCFSを機能させる方法を知っていますか?

前もって感謝します

4

0 に答える 0