最近我在玩 linux 任务调度程序。
现在想了解一下任务调度器和CFS算法的负载均衡机制。首先,我在调用__schedule()
函数idle_balance(cpu, rq)
中发现如果当前运行队列为空,它会尝试做一些负载平衡。
然后我还在core.c
文件中发现了一个scheduler_tick()
似乎定期调用的函数,更新 rq 和其他数据结构并进行负载平衡(调用函数trigger_load_balance(rq, cpu)
)。我对吗?但如何scheduler_tick()
工作?计时器在哪里?我知道 CFS 不是基于刻度的。所以可能在启动后创建了一个计时器,它会scheduler_tick()
定期调用?
这似乎是一个幼稚的问题,但我现在是 linux 系统的新手。