最近、Linuxのタスクスケジューラで遊んでいます。
ここで、タスクスケジューラの負荷分散メカニズムとCFSアルゴリズムを調べたいと思います。まず、現在のランキューが空の場合に負荷分散を行おうとする__schedule()
関数が呼び出されることを発見しました。idle_balance(cpu, rq)
次に、core.c
ファイル内に、scheduler_tick()
定期的に呼び出されているように見える関数があり、rqやその他のデータ構造を更新し、負荷分散も実行していることを発見しました(関数の呼び出しtrigger_load_balance(rq, cpu)
)。私は正しいですか?しかし、どのように機能しscheduler_tick()
ますか?タイマーはどこにありますか?CFSがティックベースではないことを知っていますが、起動後にscheduler_tick()
定期的に呼び出されるタイマーが作成されている可能性がありますか?
これは素朴な質問のようですが、私は現在Linuxシステムの新人です。